Skocz do zawartości

Nobody

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Nobody's Achievements

Newbie

Newbie (1/14)

0

Reputacja

  1. Witam! Mam Problem z transmisja szeregowa. Odbieram dane z mikrokontrolera. To co mikrokontroler wysyla to: 'X', liczba1, liczba2, liczba3, liczba4, 'E', 'X', liczba1, liczba2, liczba3, liczba4, 'E', 'X', liczba1, liczba2 ... itd itd. Przez 'X' oznaczylem poczatek bloku danych, przez 'E' koniec a liczba_n to zmienne. To malo wazne ale napisze ze to dane z akcelerometru. Na liczbach 1..4 na biezaco wykonywane sa obliczenia i np rysowany jest wykres. No i problem polega na tym ze czasem dobrze odczytuje liczby a czasem nie. case WM_CREATE: hComm = CreateFile( TEXT("COM1"), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); BuildCommDCB("9600,n,8,1", &dcb); SetCommState(hComm, &dcb); return 0; lpBuf=&AndevX; Continue=TRUE; Begin=FALSE; i=0; TimeOut=0; fWaitingOnRead = FALSE; case WM_PAINT: while(Continue) { if (!fWaitingOnRead) { if (!ReadFile(hComm, lpBuf, 1, &dwRead, &osReader)) { if (GetLastError() != ERROR_IO_PENDING) MessageBox(hwnd,TEXT("Error in communications"),TEXT("Blad"),MB_ICONERROR|MB_OK); else fWaitingOnRead = TRUE; } } if (Begin) { aX[i++]=AndevX; if (AndevX=='E') Continue=FALSE; } if (AndevX=='X') Begin=TRUE; if (TimeOut>=0x00ff) Continue=FALSE; TimeOut++; } hdc=BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps); return 0; Wiem ze nie powinno to byc raczej w WM_PAINT i pozniej pewnie nie bedzie ale narazie chce tylko to uruchomic. Z gory dziekuje za pomoc.
×
×
  • Utwórz nowe...