PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere RS232 - möglich? und wie?



dl1akp
19.08.2007, 08:57
Hallo Leute,

ich will folgendes Problem lösen, und weiss noch nicht wie. Vielleicht hat einer eine durchschalgende Idee.

Ich habe eine Verbindung PC zu einem anderen Gerät mit RS232.
Hier will ich den Traffic überwachen. Wenn der PC ein bestimmtes Komando sendet und das andere Gerät mit einer ganz bestimmten Zeichenfolge (16Byte) antwortet, dann soll meine Schaltung über einen weiteren RS232 ebenfalls einen bestimmten Datenstrom absenden.

Ich muß also auf der inen RS232 RXD und TXD überwachen, weil ich die Reaktion auf diesen bestimmten Befehl auswerten will.

Und weiterhin soll dann bei Übereinstimmung ( den "Soll-Wert" speichere ich im AVR) auf einer weiteren RS232 ein bestimmter Bytewert (8 Byte) ausgegeben werden.

Auf dieser zweiten RS232 brauche ich allerdings NUR senden! Empfangen ist nicht nötig.

Habt Ihr ein paar ideen?
Bin noch völlig Ratlos....

Danke, Andreas

PicNick
19.08.2007, 10:30
Wenn die Burschen nicht strikt "Half-duplex" senden (also einmal der, danach der) brauchst du zum "sniffen" eigentlich 3 RS232: Für RxD, TxD und eine zum selber senden.
Nur bei sehr langsamen Baudraten könntest du an eine Soft-Lösung denken, das kann aber knapp werden.
Ich persönlich würde versuchen, mit 2 Tinys (2313) zu sniffen, die dann über I2C an einen "Haupt"-Controller senden, der dann die Auswertung und das Senden übernimmt.

dl1akp
19.08.2007, 10:59
Hallo PckNick,

danke schon mal für die Idee. Muß ich mal drüber nachdenken.

Der Traffic läuft quasi immer so: PC sendet ein Komando, dieses ist IMMER 5 Byte lang. Dann antewortet das andere Gerät darauf. Diese Antwort kann unterschiedlich lang sein.

Auf der TX-Seite des PC brauch ich nur zu warten, bis exact diese Bytefolge kommt: 00 00 00 03 10.
Wenn die kommt, dann muß ich auf der RX-Seite die Antwort des anderen Gerätes auswerten.
Nach Auswertung muß auf dem dritten RS232 eine Befehlssequenz gesendet werden, hier 8Byte.
Die Sache mit zwei Tinys ist da vermutlich die beste Lösung?

Wie mache ich das mit Byteweise senden und empfangen. Bisher habe ich immer nur ASCI-zeichen über RS232 gesendet, oder Text. Noch nie Bytes??

Andreas

Ach ja: die Speed ist 4800 Baud.

dl1akp
19.08.2007, 15:11
Hab noch was rausgefunden, das erleichtert die Sche ungemein:
Ich brauch nur RXD überwachen und hier nach einem 16-Byte-Code suchen, bei dem die letzten 5Byte IMMER gleich sind!

Dann werte ich die 11 Byte davor aus.

Wie stelle ich das an?

PicNick
19.08.2007, 15:38
Nun, wenn das so geht ?
Ein "Ringbuffer" von 16 Byte
Du liest die ankommenden Bytes
und schreibst es in den Buffer.
Ist das Byte gleich dem zuvor,
Zähler + 1 ,
sonst
Zähler = 0

Erreicht der Zähler = 5 , dann hast du in dem Buffer 16 Zeichen, 11 zum auswerten und 5, die gleich waren

Btw: Ein ASCII- Zeichen IST ein Byte