Serial mit Timeoutproblem
-
Hi
Ich habe folgendes Problem!
Ich habe ein Timeout zum empfangen von Daten über die Serielle Schnittstelle gesetzt. Dis funktioniert auch. Mein Problem ist aber, dass wenn ein Timeout erreicht wird, immer der Letzte String wieder von ReadFile ausgelesen wird.
Wie kann ich kontrolliere, ob ich ein Timeout erreicht habe oder nicht?Hier mein Code:
CString CSerial::receive(int i_lenth) { bReadRC=ReadFile(m_hCom,&sBuffer,i_lenth,&iBytesRead,NULL); if(bReadRC==1) { return sBuffer; } else { return "0"; } }
Hier der Aufruf mit dem Timeout, welche nicht richtig funktioniert.
void onTimer() { serialport.send("f"); // Sendet Signal s_funk=""; s_funk= serialport.receive(1); //wartet 500ms auf eine Antwort if(s_funk=!"f") //Kontrolliert, ob ein Signal zurückgekommen ist. { i_funklost++; } else { i_funklost=0; } }
p.S Das "f" kommt immer zurück, kann mir also auch nicht speichern, ob der letzte Empfang anders war....
Bitte helft mir!
-
Noch verstehe ich nicht ganz, was du machen möchtest, aber das soll wohl
if (s_funk != "f")
heissen.
-
Ja sollte es heissen, aber daran liegt es nicht...
Das ganze soll Testen ob die Funkverbindung zwischen dem PC und einem Mikrokontroller vorhanden ist. Der Kontroller sendet das "f" immer gleich zurück... Das Problem ist einfach, dass wenn das "f" nicht zurückkommt, durch das Timeout das letzte Zeichen (also ein "f") eingelesen wird. (Kann ich irgendwie den Buffer leeren vom Serialport????) oder wo liegt sonst das Problem?