rs232 - Windows hät sich nicht an CTS Flusskontrolle??? Im Unterforum Erfahrungsaustausch - Beschreibung: Fragen und Antworten von User zu User zu allen elektrischen und elektronischen Geräten
| Autor |
rs232 - Windows hät sich nicht an CTS Flusskontrolle??? Suche nach: windows (2489) |
|
|
|
|
BID = 463797
Jacky2k Neu hier

Beiträge: 25 Wohnort: Beckdorf
|
|
Hallo!
Ich habe hier einen etwas größeren Aufbau einer Funk-Verbindung zwischen meinem PC und meinem Roboter. Bei beiden ist ein Easy Radio Tranciever 2.0 angebaut und wird am Roboter über den Hardware-Uart und am PC direkt über den COM (+MAX232) gesteuert. Alles arbeitet mit einer Baudrate von 19200.
Am PC kommt zusätzlich noch die Hardware Flusskontrolle via RTS und CTS zum Einsatz. Das Funk-Modul hat einen Puffer von 180 Byte, CTS geht 2 Byte bevor der Buffer voll wäre auf high und Windows sollte dann das Senden der Daten unterlassen, tut es aber jedoch nicht 100%ig.
Wenn ich den Uart am Eingangs-Pin des Sendemodules über meinem 2. COM-Port kontrolliere geht da alles korrekt rein, kommt aber am Ausgang des Empfängers nicht korrekt an.
Ich habe ein Paket entwickelt, dass ich zur Übertragung nutze, dass im Prinzip ein Start- und Stop-Byte hat und wenn im Datensatz eines dieser beiden Zeichen vorkommt wird ein 3. Escape-Zeichen davor geschrieben, was dann auch wiederum nicht in den Daten vorkommen darf und danach kommt dann ein passende Synonym für das Byte was nicht verwendet werden darf.
Nun habe ich hier ein Paket was 13 Byte lang ist, welches ich in einer while(1)-Schleife raushaue. Das faszinierende: Es kommt glaube ich exakt jedes 10. Paket nicht korrekt an, es fehlen da immer die letzten beiden Bytes. (Also das letzte Daten-Byte und das Stop-Byte)
Um auszuschließen, dass die Flusskontrolle gar nicht funktioniert habe ich sie einfach mal ausgeschaltet und musste feststellen, dass dann noch weniger Daten korrekt ankommen, aber dann auch total zufällig zerstört sind. Also scheint die Flusskontrolle von Windows wenigstens größtenteils zu funktionieren.
Wenn ich in meine while(1)-Schleife noch ein kleines Sleep von 10 ms tue geht alles.
So, woran liegt es nun, dass die beiden Bytes fehlen? Sie werden ja eindeutig von Windows gesendet, aber vermutlich im falschen Moment.
Edit: hier nochmal die Parameter die ich der Windows-API Funktion BuildCommDCB() übergebe:
COM1: baud=19200 parity=N data=8 stop=1 to=off xon=off odsr=off octs=on dtr=off rts=on idsr=off
_________________
MfG
Jacky2k
[ Diese Nachricht wurde geändert von: Jacky2k am 13 Okt 2007 16:20 ] |
|
BID = 463799
Benedikt Inventar
      Beiträge: 6241
|
|
Soweit ich weiß ist die Flusskontroller so spezifiziert, dass CTS bei halbgefülltem Puffer aktiv werden soll. Irgendwo habe ich auch mal gelesen, dass es sein kann, dass nach Aktivieren von CTS noch bis zu 128Bytes (oder waren das 64 ? Auf jendefall sowas in der Richtung) von Windows gesendet werden.
Versuche also mal CTS z.B. schon bei 16Bytes vor dem Pufferüberlauf zu aktivieren. |
|
BID = 463809
Jacky2k Neu hier

Beiträge: 25 Wohnort: Beckdorf
|
Wie soll ich das denn anstellen?
Ich könnte höchstens ne neue Firmware für das Funkmodul schreiben, aber 0 Ahnung wie ich die dann da rauf bekommen soll
Ne, das wird nix
Ich schau mal ins Datenblatt vom Easy Radio, vielleicht gibts da doch noch ne Möglichkeit... Notfalls muss ich noch nen Atmega als weiteren Puffer zwischen hängen...
_________________
MfG
Jacky2k
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 13 Beiträge im Durchschnitt pro Tag heute wurden bisher 2 Beiträge verfasst © x sparkkelsputz Besucher : 185905230 Heute : 22205 Gestern : 24670 Online : 284 20.10.2025 21:33 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0324370861053
|