Andy082
Level-2
- Beiträge
- 178
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
Abend.
Hab wieder mal ein kleineres/größeres (wird sich hier nun rausstellen) Problem mit meiner Programmierung bzw. meiner Strategie.
Folgende Vorgabe:
Habe eine CP340, parametriert für ASCII, an welche in unregelmäßigen Abständen Strings in variierender Länge übergeben werden.
Hier, für meinen Versuch über eines der vielzähligen RS232-Programme (lookRS 232).
Grundlegend funktioniert das Senden und Empfangen der Strings, bzw. werden diese in ihre entsprechenden DB geschrieben.
Der empfangene String wird auf ein TP 170B ausgegeben.
Mein Problem ist nun aber das Handle des FB2 (P_RCV).
Da ich eben in unregelmäßigen Abständen Daten erhalte, dachte ich mir ich nehme einen Taktmerker (in diesem Falle den M100.7)
Geschrieben wird der empfangene String in den DB50.DBB4 (ab DBB6 46 Zeichen).
Byte 4 trägt den Wert 46, Byte 5 ist sofern ich nicht Byte 4 lade und in Byte 5 kopiere, immer 0.
Daher erhalte ich auf meinem TP auf keine Ausgabe des Strings, da Nutzdaten ja 0. (bitte korrigieren, wenn ich mich täusche)
Ich verstehe das Handbuch und das Zeitdiagramm des FB2 so....
Setze ich EN_R durch meinen Taktmerker, werden die Daten eingelesen.
Wurden alle Daten empfangen, so wird NDR gesetzt und LEN stellt mir gleichzeitig die Länge der empfangenen Daten bereit.
In meinem Fall wird aber NDR nicht 1 und auch an LEN wird nichts außer 0 ausgegeben. Im DB stehen aber alle übetragenen Zeichen bereit.
Sollte ich eventuell EN_R immer setzen, außer wenn NDR 1 ist?
Welcher Schritt fehlt mir, dass ich die Länge des Strings per LEN bestimmen kann?
mfg,
Andy
Hab wieder mal ein kleineres/größeres (wird sich hier nun rausstellen) Problem mit meiner Programmierung bzw. meiner Strategie.
Folgende Vorgabe:
Habe eine CP340, parametriert für ASCII, an welche in unregelmäßigen Abständen Strings in variierender Länge übergeben werden.
Hier, für meinen Versuch über eines der vielzähligen RS232-Programme (lookRS 232).
Grundlegend funktioniert das Senden und Empfangen der Strings, bzw. werden diese in ihre entsprechenden DB geschrieben.
Der empfangene String wird auf ein TP 170B ausgegeben.
Mein Problem ist nun aber das Handle des FB2 (P_RCV).
Code:
CALL "P_RCV" , "DB_P_RCV"
EN_R :=M100.7
R :=
LADDR :=500
DB_NO :=50
DBB_NO:=6
NDR :="Player-DB".RCV_NDR //DB50.DBX62.0
ERROR :=
LEN :="Player-DB".RCV_Length //DB50.DBW60
STATUS:=
Da ich eben in unregelmäßigen Abständen Daten erhalte, dachte ich mir ich nehme einen Taktmerker (in diesem Falle den M100.7)
Geschrieben wird der empfangene String in den DB50.DBB4 (ab DBB6 46 Zeichen).
Byte 4 trägt den Wert 46, Byte 5 ist sofern ich nicht Byte 4 lade und in Byte 5 kopiere, immer 0.
Daher erhalte ich auf meinem TP auf keine Ausgabe des Strings, da Nutzdaten ja 0. (bitte korrigieren, wenn ich mich täusche)
Ich verstehe das Handbuch und das Zeitdiagramm des FB2 so....
Setze ich EN_R durch meinen Taktmerker, werden die Daten eingelesen.
Wurden alle Daten empfangen, so wird NDR gesetzt und LEN stellt mir gleichzeitig die Länge der empfangenen Daten bereit.
In meinem Fall wird aber NDR nicht 1 und auch an LEN wird nichts außer 0 ausgegeben. Im DB stehen aber alle übetragenen Zeichen bereit.
Sollte ich eventuell EN_R immer setzen, außer wenn NDR 1 ist?
Welcher Schritt fehlt mir, dass ich die Länge des Strings per LEN bestimmen kann?
mfg,
Andy