Nobody Napisano Maj 12, 2018 Autor Zgłoś Udostępnij Napisano Maj 12, 2018 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. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Phoenix Napisano Czerwiec 19, 2018 Zgłoś Udostępnij Napisano Czerwiec 19, 2018 Mialem podobny problem przyczyna byla blednie wypelniona struktura DCB sprawdz dokladnie ustawienia, bit parzystosci, bit stopu itp. Jak chcesz to moge podeslac pola calej struktury. Po drugie wykorzystaj program terminal dzieki ktoremy bedziesz mogl sprawdzic co odbierasz. Pozdrawiam Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.