Hi Leuts, ich habe da ein ziemliches Problem. Ich arbeite mit VisualStudi 2003 und C++. Ich habe nun zwei intelligente Messgeräte, die mittels Infrarot kommunizieren. Eines davon ist stationär und mit RS232 mit einem PC verbunden, das andere fährt an diesem stationären Teil vorbei. Wenn die Verbindung zwischen den beiden aufgebaut ist, dann übergibt der mobile Teil Messdaten an die Station, von wo aus diese mit einem PC abgerufen werden können. Zwischen PC und Messgerät findet die Kommunikation mittels ASCII-Protokoll statt, die Übertragungsrate zwischen PC und Station ist 38400. Mit Hyperterminal klappt das alles wunderbar, mit dem C-Programm nicht so ganz. Ich arbeite mit Events, was generell auch funktioniert. Aber wenn ich das Programm laufen lasse, dann empfange ich nur Bruchstücke der eigentlichen Kommunikation. Wenn ich jedoch im VisualStudio einen Breakpoint setze BEVOR ich den Buffer auslese (also in der Zeile "m_SerialPort.Read(szData, nBuflen, &dwRead);"), dann ist die komplette Kommunikation einwandfrei da. Kann das irgendein Timingproblem sein ? Greets Karlheinz
Wie gross ist dein Puffer für die Serielle Schnittstelle? poste mal die Initialisierung der Schnittstelle. Rechnest du damit das es Übertragungsfehler geben kann? BTW: Bei der Seriellen Schnittstelle sind maximal 2% Unterschied in der Baudrate für fehlerfreie Übertragung erlaubt. Durch das Rollen deines Wagens verschiebt sich aufgrund des Dopplereffektes die Baudrate(frequenz). Da es sowohl draufzu als auch wegrollt, hast du eine Verschiebung ins positive wie ins negative also nur noch 1%. Hast du mal ausgerechnet was die maximale Geschwindigkeit deines Wagens sein darf? ;-)
Hi, der Puffer ist 255 Bytes gross, die Initialisierung kann ich jetztnicht posten, da ich zuhause bin und die Software im Büro ist. An der Geschwindigeit meines Mobilteiles kann es nicht liegen, denn dies kommuniziert ja mit der intelligenten Feststation, nicht mit dem PC. Dann würde auch Hyperterminal nicht funzen....
Setz mal den windows-internen Buffer höher. Ich benutz bei mir z.B 4k
SetupComm , das war die Puffergröße nach der ich fragte. Da gibt es noch einiges anderes zum Einstellen, z.B. Timeouts, Flusskontrolle, Verhalten bei Fehlübertragung etc. Es wäre besser wenn du dir mal den entsprchenden Abschnitt in der MSDN durchliest.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.