RS485
-
Hallo,
ich habe ein Problem, dass ich einfach nicht lösen kann. Hab so ein ähnliches Thema schon einmal gepostet, aber hat mir nicht weiter geholfen.
Jetzt weiß ich ein bisschen mehr und dachte ich versuchs noch einmal.
Also ich arbeite mit WinXP Prof und MS Visual C++ 6.0 / MFCMein Problem ist die Kommunikation via RS485.
- FIFO Puffer ist deaktiviert
- fRtsControl = RTS_CONTROL_DISABLEBevor ich die Kommunikation starte setze ich CLRRTS()
und wenn alles gesendet ist SETRTS()Das komische, es funktioniert nicht immer!
Wenn ich ein Gerät angeschlossen habe, gehts meistens. Und wenn ich ein zweiten in Reihe schalte (was gehen müsste), dann siehts schon schlechter aus...
Kann es sein dass es an den Einstellungen des COMMTIMEOUTS liegen kann?es handelt sich um eine Arbeit für eine Firma. Es gibt schon ein solches Programm, welches erneuert werden soll(das mach ich), da kam der Tipp:
Nicht alle BYTES sofort senden, sondern nur alle bis auf das Letzte, dann warten bis alle wieder zurück kommen(ist ja bei RS485 hardware bedingt), dann letztes BYTE senden und sofort SETRTS()...Damit funktioniert eben so wie ich es beschrieben habe.
Hat einer von euch vielleicht mehr Erfahrung damit?Ich verzweifel noch an daran!
Vielen Dank MfG Dippi
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dippi_81 schrieb:
- FIFO Puffer ist deaktiviert
Das hat überhaupt keine Auswirkung... leider ist der Text etwas misverständlich... es geht dabei nur um das auslösen ein Interrupts... der Puffer kann aber nicht "deaktiviert" werden; nur die Interrupts werden später (oder früher) ausgelöst!
Dippi_81 schrieb:
Bevor ich die Kommunikation starte setze ich CLRRTS()
und wenn alles gesendet ist SETRTS()Woher weisst Du dass alles gesendet ist??? Dazu gibt es keine API!
Der einzige weg ist über "RTS_CONTROL_TOGGLE"!
Dippi_81 schrieb:
Das komische, es funktioniert nicht immer!
Das ist nicht komisch, das ist normal, da Du von falschen vorraussetzungen ausgehst.