konstuuje taki modul poiarowy z czujnikem przyspieszenia i utknalem na transmisji szeregowej pod widows. Wszystko wydawalo sie proste ale niestety napotkalem na niespodziewane trudnosci. Owszem program otwiera port wysyla do ukladu zadany ciag bajtow gorzej jest z odbiorem. Programik wprawdzie odbiera cos z portu i to nawet +/- to co powinien tyle ze sie zawiesza po jakims czasie. Testowo odbieram 1024 bajty wpierw probowalem odebrac cale 1024 to wzykle zawieszal sie od razu, w tej chwili odbieram po znaku funkcja ReadFile umieszczona jest w metodzie execute watku tyle ze dziala to do pewnego momentu i znow program wisi. Podejrzwam ze zczytuje z pustego bufora albo jeszcze cos o czy nie wiem. Sama funkcja Drawit nie slyzy bynajmniej do rysowania ale poprostu dodaje element (wpisuje odebrany bajt) do tablicy i inkrementuje indeks. Docelowo potrzebuje odczytywac do 256kBajtow. jesli ktos spotkal sie z podobnym problemem lub jest w stanie mi cos zasugerowac to bardzo prosze o pomoc. maniplowac timeoutami tez probowalem ale o nie przynosi rezultatu.
Robert Nogiec snipped-for-privacy@poczta.onet.pl
void __fastcall TRead::Execute() {
DWORD dwBytesRead; FreeOnTerminate = true;
while(1) { //Form1->RadioButton1->Checked = true; if(czy_czytac==true) { ReadFile(portCOM,buf1,1,&dwBytesRead,NULL); if(dwBytesRead) { if(licz_probek>1024) { czy_czytac = false; } Synchronize(DrawIt); } }
} }void __fastcall TRead::DrawIt() {
if(licz_probek<1024) { bufor[licz_probek] = buf1[0]; licz_probek++; buf1[1] = 0; //Form1->Memo1->SetSelTextBuf(buf1); } }