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.