Hey Leute, bin gerade am basteln an der Kommunikation zwischen meinem MCU und dem PC. Funktioniert im Prinzip auch alles in meinem PC-Programm und am MCU. Ich habe nur ein Problem, ich (arbeite unter Linux). : Ich konfiguriere meine serielle Schnittstelle (bei mir ttyS0) Hole mir dann den filediscriptor und lese dann mit read mehrfach und bekomme erwartete Daten dann schließe ich den filediscriptor wieder. Bis hierer alles super! Doch wenn ich jetzt das gleiche Prozedere wiederhole, dann bekomme ich noch einmal die gleichen Daten aus dem Buffer. D.h. nach dem Lesen von ttyS0 werden die gelesenen Daten nicht gelöscht. Wie erreiche ich dies? Habe auch schon gegoogled, dachte gibt da ne Option/Flag oder so, aber habe ich nicht gefunden. Nur wie man den ganzen Buffer cleared, aber das will ich nicht, ich will einfach nur, das die Daten die ich lese, dann auch raus aus dem Buffer sind. Jemand nen Tipp? Vielen Dank. Gruß toffer
du bist sicher, daß die Daten nur einmal gesendet werden?
Mich würde schwer wundern, wenn /dev/ttyS0 dieselben Daten zweimal liefert, es sei denn du hast einen Zombiekernel mit untoten Puffern. Rein gefühlsmäßig würde ich auf ein anderes Problem tippen, z.B. daß der MC einen Reset macht und nach dem Neustart alles nochmal liefert oder sowas. Kann man das mal mit einem Terminalprogramm simulieren? Oder die Ausgaben mit einem fortlaufenden Zähler garnieren, damit man merkt, ob es eine neue Ausgabe ist oder noch die alte?
Hey, danke für die Antworten. Mit Terminal ist alles getestet. Das funktioniert zu 100% seitens des MCU. Habe den Code auf nem anderen Rechner,werde den heute Abend reinstellen. Aber zur Info, wenn ich das Prozedere von Oben wiederhole mehrmals, dann kommen irgend wann auch die neuen Daten. Aber zu meinem UART Code, ich verwende auf PC Seite zu 90% diesen Code: http://www.teuniz.net/RS-232/ Vielen Dank für eure Hilfe Gruß toffer
Chris H. schrieb: > Hey, > danke für die Antworten. Mit Terminal ist alles getestet. Das > funktioniert zu 100% seitens des MCU. Habe den Code auf nem anderen > Rechner,werde den heute Abend reinstellen. Aber zur Info, wenn ich das > Prozedere von Oben wiederhole mehrmals, dann kommen irgend wann auch die > neuen Daten. > > Aber zu meinem UART Code, ich verwende auf PC Seite zu 90% diesen Code: > > http://www.teuniz.net/RS-232/ > > > Vielen Dank für eure Hilfe > > Gruß toffer Die restlichen 10% Code werden es dann schon richten!
umgekehrt kann man doch mal statt des MC einen PC mit Hyperterm dranhängen, was passiert denn dann? Ansonsten: 100% eines möglichst kleinen Programms mit diesem Fehler. 90% eines ähnlichen Programms machen irgendwie keinen Spaß.
Hey Leute, Problem gelöst. Also nach euren Hinweisen bin ich alles noch einmal genau durchgegangen. Ich dachte ja durch den Test mit Terminal, dass auf Seiten des MCU alles funktioniert, ich hatte zur Kommunikation CuteCom benutzt und dachte es hat einfach eine komische Bedienung wenn man dort die bereits getippten Befehle noch mal anklickt, aber der Fehler war nun auf Seiten des MCU, das ich das UDR Register 2x hintereinder auslese (mit dem Ziel das gleiche zu erhalten), wusste nicht, dass dies böse ist. Vielen dank für alle die geschrieben haben Gruß Toffer
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.