Hi, Fabi,
ich habe ähnliche Sorgen auch gehabt. Danach habe ich mir ein eigenes, halbwegs sinnvolles Protokoll nach meinen Gegebenheiten zusammengeschustert. Da wurde ein String zusammengesetzt aus den gewünschten Daten - alle in ASCII (auch die Zahlenwerte!!), vom PC zum Controller oder umgekehrt gesendet.
Wichtig ist es, beim Zusammensetzen des Sendestrings im Controller den String mit einem "NUL" : int nNUL = 0; // Null = Ende Textpuffer abzuschließen. Andernfalls gibt das Fehler bei der Übertragung. Der String den das Terminal sendet, wird "automatisch" mit so einem "End-of-string"-Byte versehen. Die Übermittlung von Zahlenwerten als "reine Zahlen" - 1 oder 2 Byte (real hatte ich nie versucht) hatte ich , wie gesagt, nicht geschafft. Angefangen hatte ich mit "Steuerzeichen", die bei mir in ASCII sind:
Code:
unsigned int conS = 83; // "Control"-Zeichen 83="S" = Steuerwert
unsigned int conL = 76; // "Lösch"-Zeichen 77="L" = Steuerwert
unsigned int conZ = 90; // "Senden"-Zeichen 90="Z" = Steuerwert
... weil mir das bei der Auswertung einfacher vorkam und weil ich das am Terminal besser, weil eben Klartext, lesen konnte. Dieses Zeichen zu Beginn des Strings dient bei mir u.a. dazu, im Controller die Länge des Kommandos zu erkennen und aus dem Empfangspuffer die entsprechende Anzahl der Bytes zu lesen.
Lesezeichen