Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Rs232 odbieranie danych

nataliap156 28 Cze 2010 14:01 2337 9
  • #1 28 Cze 2010 14:01
    nataliap156
    Poziom 2  

    Witam, przeczytalam ksiazke rs232 praktyczne programowanie ale nie znalazlem rozwiazania mojego problemu ktory polega na tym ze gdy odbieram dane sa one w ascii a ja chce odbierac dane w hex

    Proszę poprawić post - w języku polskim obowiązuje interpunkcja!
    [Dr.Vee]

    0 9
  • #2 28 Cze 2010 14:58
    chudybyk
    Poziom 27  

    Musisz dokładniej sformułować problem.
    1. Czy nadawane są znaki ASCII?
    2. Jakiej metody/klasy używasz do odbierania danych? - Najlepiej wklej kawałek kodu.

    0
  • #4 28 Cze 2010 17:48
    nataliap156
    Poziom 2  

    Kod jak w ksiazce:

    Code:
    int  __fastcall Read_Comm(HANDLE hCommDev, LPVOID lpBuffer,
    
    LPDWORD lpNumberOfBytesRead, DWORD Buf_Size)
    {
       DWORD nNumberOfBytesToRead;

       ClearCommError(hCommDev, &Errors, &Stat);

       if (Stat.cbInQue > 0)
          {
          if (Stat.cbInQue > Buf_Size)
             nNumberOfBytesToRead = Buf_Size;
           else
             nNumberOfBytesToRead = Stat.cbInQue;
             
          ReadFile(hCommDev, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, NULL);
          }
          else
            *lpNumberOfBytesRead = 0;
       return TRUE;
    }


    Code:

    FlushFileBuffers(hCommDev);
    Read_Comm(hCommDev, &Buffer_I[0], &Number_Bytes_Read, sizeof(Buffer_I));


    Poszukalam w googlach ale nie moglam znalezc zrodla programu realterm.

    Precyzujac problem gdy przesylam cos przez rs chce odbierac dane w postaci hex czyli np. FF FF FF FF FF FF, a nie w ascii ktore wygladaja calkowicie inaczej

    0
  • #5 28 Cze 2010 18:04
    szelus
    Specjalista - Mikrokontrolery

    Nie odpowiedziałaś na pierwsze pytanie - co (w jakim formacie) jest nadawane "po drugiej stronie".
    Bo powinno być dość oczywiste, że odbierasz to, co zostało nadane i po stronie odbiorczej tego nie zmienisz. Możesz najwyżej skonwertować odebrane dane do innego formatu.

    0
  • #6 28 Cze 2010 18:26
    nataliap156
    Poziom 2  

    trudno powiedziec, bo jak sobie wlacze terminala to mam do wyboru jak odbierac dane ( w hexa czy w ascii) natomiast w c++ nie potrafie zrobic aby odbieralo w hex

    0
  • #7 28 Cze 2010 19:51
    szelus
    Specjalista - Mikrokontrolery

    W terminalu możesz sobie najwyżej wybrać sposób wyświetlania. Odbiera zawsze to samo.
    Może spróbuj jednak opisać swój problem bardziej szczegółowo, bo mam wrażenie, że się skoncentrowałaś nie na tym aspekcie, który jest najbardziej istotny. Z portu szeregowego odbierasz bajty - 8-bitowe liczby binarne, żeby nie było wątpliwości. Teraz ich interpretacja całkowicie zależy od programisty - możesz je potraktować jako kody znaków ASCII, możesz jako liczby szesnastkowe, dziesiętne, czy jakie sobie życzysz. Albo jeszcze inaczej...
    Klucz leży po stronie nadawczej - jak nie wiesz, co jest nadawane, to trudno będzie to prawidłowo zinterpretować.

    0
  • #8 29 Cze 2010 07:40
    dkow
    Poziom 14  

    Chyba chodzi ci o (próbuję zgadnąć) wyświetlanie danych które przychodzą w postaci binarnej. Bo jeśli tak to możesz użyć np polecenia z rodziny printf z parametrem x. Tu jest opis printf

    0
  • #9 29 Cze 2010 17:22
    nataliap156
    Poziom 2  

    dzieki za rady, moze jakos dam rade

    0
  • #10 29 Cze 2010 18:51
    Dr.Vee
    VIP Zasłużony dla elektroda

    Po raz kolejny przypominam o Regulaminie, p. 15.
    Proszę poprawić swoje posty (wielkie litery, interpunkcja, kropka na końcu zdania).

    0