Hirdetés

Új hozzászólás Aktív témák

  • fodi1

    csendes tag

    A téma: Adatfogadás a soros portról DELPHI7 -el, pld. PIC kártya felől, az adatok pc-n történő kijelzése, és feldolgozása miatt.

    Történet:
    Egy PIC es fejlesztővel készítettem egy AD konvertert, mely az adatokat a saját LCD kijelzőjén kijelzi, és továbbítja a soros porton keresztül a pc felé.
    A PIC boardon egy potival modellezem a kimenő értéket. 10bites ad-ról lévén szó 2-től 2023-ig mutat az LCD a pic-kártyán a poti két végállásában.

    Probléma:
    A pc-n elindított terminal nevű free programocska gyönyörűen kiírja a mért értékeket, alapból Hexában, ahogy küldöm HI_byte, és LO_byte, ill. ha akarom decimálisan is kijelzi.
    Ez bizonyítja a PIC oldal működőképességét.
    Ha viszont DELPHI7 ben olvasom ki az adatokat, csak grafikus ákom-bákomot kapok, vagy semmit, mely természetesen változik, a küldött számoknak megfelelően.
    Mindenféle karakterkonverziót megpróbáltam, de csak nem kapom meg a várt számadatokat (2-1024ig).
    Miért természetes a kis terminál programocskának amit a delphiben én nem tudok megoldani?

    Delphi kódot mellékelem.

    Igen megtisztelnétek, ha megoldást kapnék kezdő létemre a problémámra.

    // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    Function ComPortRead:string;
    var c,i:integer;
    BytesRead:dword;
    st:string;
    begin
    BytesRead:=0;
    if not ReadFile(ComHandle, RdBuff, SizeOf(RdBuff), BytesRead, nil) then begin
    end;

    //st:='';
    if BytesRead>0 then begin

    for i:=1 to BytesRead do begin

    st:=RdBuff[i-1];
    end;
    end;
    ComPortRead:=st;
    end;

    //hossz:=length(ComPortRead); // HOSSZ ?
    //label6.Caption:=inttostr(hossz); // Kiírni

    read_ki:= ComPortRead;
    kar1:=copy(ComPortRead,1,1); // Kivesszük az első karaktert
    kar2:=copy(ComPortRead,2,1); // és a másodikat

    // Numerikussá alakítjuk
    szam1:=strtoint(kar1);
    szam2:=strtoint(kar2);

    // Szam1 viszaalakítása. (rotated Hi bits - Make back: to left)
    szam1:= szam1 shl(8);

    // A Hi ls Lo szám összege adja a küldött értéket, a szám1-be tesszük
    szam1:=szam1+szam2;

    // A kar1-be tesszük a stringgé visszaalakított számot
    kar1:= inttostr(szam1);

    label6.Caption:=kar1; // Kiírni

Új hozzászólás Aktív témák