TIA TIA TCP Kommunikationsproblem / Empfangsdaten

bennzi

Level-1
Beiträge
107
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus.

ich hab ein Problem beim Datenempfang einer TCP Kommunikation.
Ich habe im Empfangsbaustein ein Array of Chars angelegt.
Die Daten kommen zwar rein aber zwischen jedem Zeichen ist ein Nullzeichen ($00), somit ist es ziemlich schwierig für mich die daten weiterzuverarbeiten.
Kann mir einer sagen wieso das so ist? Das hatte ich so noch nie....
Ich kann doch nicht anfangen und jedes zweite Byte rauskopieren....

Danke für die Hilfe

Mfg

Bennzi
 
Es könnte sein, dass der Sender Unicode-Strings sendet, da wird jedes Zeichnen durch mindestens zwei Byte repräsentiert.
Gruß
Erich
 
Sag dem Sender (wer oder was ist das?) er soll ANSI-Strings senden. Wenn das nicht geht musst Du es wohl selbst umsetzen.
Gruß
Erich
 
ist eine prüfmaschine.... kann ich ihm leider nicht sagen dass er das tun soll :(
sehr seltsam. beim senden schick ich doch auch ganz normal alles raus und er frisst es. (ein zeichen 1 byte)
na dann muss ich wohl wirklich alles händisch machen....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Frisst er es denn auch korrekt? Evtl. interpretiert er zwei deiner Ausgangsbytes dann als ein Zeichen in UTF-16.
Ansonsten müsste es, falls Unicode, schon UTF-8 sein. Da ist die Byteanzahl pro Zeichen variabel. Wenn nur ASCII-Zeichen verwendet werden, dann ist bei UTF-8 jeder Zeichenwert auch nur in einem Byte codiert. D.h. solange du keine Umlaute verwendest, gibt es beim Blick auf die Bytes keinen Unterschied zwischen UTF-8 und ASCII.
 
Abend. Ja er frisst es und führt die Aktion die ich ihm sende auch durch. Das ist ja das seltsame. Ich sende einen string mit CR LF am Schluss. ZB. TI_START$R$L
Aber wenn ich die Antwort empfange dann setzt er eben zwischen jedes Zeichen $00....
 
Nabend...
Hast du eine 1200/1500 ? Dann schau dir mal Chars_TO_Strg an, da geht auch eine Wandlung von WChar in WString...
Mit S_Conv dann auch eine Wandlung zwischen WString und String.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja. Ist eine 1500er. Ja stimmt daran hatte ich nicht gedacht das sorum zu machen. Ich hab versucht in WCHAR abzulegen (kamen Chinesen-zeichen raus) und zu String zu convertieren.... Aber dann hatte ich nur die $00 Zeichen im string...
Ich probier das morgen mal aus so wie du sagtest.
Danke!
 
Wie sehen die Daten genau aus? Zeig uns mal eine solche Bytesequenz. Wenn man weiß wie man die Daten händisch ins richtige Format bringt, dann kann man es der SPS auch beibringen.
 
@NBerger
ich denke ich habe das gestern schon so versucht. Hab es gerade nochmal versucht. Im WString sind dann nur die '$00' zeichen und die die ich benötige fliegen raus... :(
warscheinlich die WChars genau falschherum belegt...

@funkey
meine Empfangsdaten sehen ungefähr so aus:
Array of chars
X
$00
X
$00
X
$00
also nach jedem Zeichen ist dieses Sonderzeichen drin.

Warscheinlich muss ich doch jedes benötigte Byte einzeln rauskopieren. sehe im moment keine andere lösung....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann es sein, daß Du dem Empfangsbaustein einen Zeiger auf ein WCHAR-Array übergibst und das TIA vielleicht selbständig eine Konvertierung von ASCII-Empfangsdaten in WCHAR ins Programm einfügt? (daß Dein Gerät also eigentlich tatsächlich 8-Bit-(ASCII-)CHARs sendet)
Kannst Du den Netzwerkehr mitsniffern oder Dein Gerät mal an ein Terminalprogramm hängen?

Mit welchem Baustein empfängst Du die Daten von welcher Schnittstelle? Wie sieht die Programmstelle aus?

Harald
 
Also ich habe natürlich beides Versucht. In CHAR und in WCHAR zu übergeben.
Ich denke nicht, dass das Gerät 8bit sendet denn wenn ich im Terminalprogramm empfange dann sendet er auch wirklich ein $00 zwischen jedem Zeichen. Das finde ich sehr komisch da er ja beim senden meine 8Bit Zeichen frisst....
Bausteine benutze ich die TSENT_C und TRCV_C.
TCP/IP Schnittstelle oder was meinst du?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU ist eine 1510S-F ich denke die hat nur PN schnittstellen...
Es handelt sich um eine Zwick. Im Schnittstellenhandbuch steht wirklich nicht viel...
Eigentlich kanns ja nicht wirklich an der SPS liegen wenn das Terminal die $00 auch ausgibt...
 

Anhänge

  • EmpfangsDB.jpg
    EmpfangsDB.jpg
    397,7 KB · Aufrufe: 20
Zuletzt bearbeitet:
Zurück
Oben