TCP Windows (Hercules) -> S7 1511C-1 PN: Erstes Byte fehlt

wavish

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich habe im TIA eine TCP Verbindung konfiguriert und empfange darüber Daten mit TRCV.
Wenn ich über Hercules Daten sende, z.B. '123456' kommt am TRCV DATA Eingang nur '3456$08$08$08.....' an.
Wo sind die '12' geblieben?

TRCV Eingangsparameter:
EN_R: true
ID: ID der konfigurierten Verbindung
LEN: 0
ADHOC: 1
DATA: String Static Variable
 
Da werden die ersten beiden bytes für stringlänge und tatsächlicher stringlänge reingeschrieben... Mach ein array aus char und Kopier es um

Gesendet von meinem ONE A2003 mit Tapatalk
 
Wenn ich den Adhoc Modus den du aktiviert hast richtig verstehe (habe ich selber noch nicht verwendet), werden eintreffende Daten direkt in deinen String übernommen.
D.h. du müsstest eigentlich bei jedem NDR die Anzahl Bytes von RCVD_LEN aus dem Puffer in einen anderen Puffer umkopieren / anhängen, und dann wenn du im Protokoll ein von dir definiertes Ende-Zeichen oder was auch immer empfangen hast, den Datensatz auswerten.

Viel einfacher macht die Sache entweder:
- immer eine feste Anzahl an Bytes zu senden (d.h. Adhoc aus, LEN auf diesen Wert setzen)
oder
- einen Längenheader (z.B. 2 Bytes) zu schicken, dieses im SPS-Programm auszuwerten und dann die Anzahl an Bytes zu lesen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da werden die ersten beiden bytes für stringlänge und tatsächlicher stringlänge reingeschrieben... Mach ein array aus char und Kopier es um

Ja, das dürfte das eigentliche Problem sein.

Ich würde aber trotzdem eine feste Länge verwenden. Ohne feste Länge oder einen anderweitigen Protokollrahmen, läuft es eigentlich nur zufällig.
 
Ich krieg leider immer variable Längen rein :(

Das mit dem Char Array wars! jetzt sind alle Zeichen da wo sie sein sollten.

Wie wandelt man Char array zu string? :ROFLMAO:
 
Zurück
Oben