|
<< Click to Display Table of Contents >> Navigation: Komponenten > Kommunikation > Multi-IO-IP > Wie stelle ich mit Multi-IO eine Geräteverbindung her? > Beispielverbindung über TCP/UDP |
Ein Gerät zum Abspielen von MP3 Dateien soll über TCP bzw. UDP gesteuert werden. Es soll ein Befehl gesendet werden, um einen MP3 Player zum Abspielen bzw. Stoppen einer Playlist zu bewegen.
Es soll eine Zeichenkette von diesem Format verschickt werden:
Befehl:
cmd=play
cmd=stop
IP-Adresse:
192.168.1.100:80
Übertragungsart: TCP
kein Prefix/Postfix
kein Datenfilter
Einstellungen: Ziel IP/Port: 192.168.1.100:80
In der Einträge-Editor werden entweder zwei Einträge angelegt, jeder mit dem speziellen Eintrag im Feld „Befehl“ oder nur einen Eintrag und überträgt die Zeichenketten beispielsweise über einen DataPointValue vom Typ String einer Komponente und verbindet den Ausgang mit diesem angelegten Datenpunkt. In der folgenden Tabelle sind beide Einträge zum Abspielen und zum Stoppen einer Playlist angelegt. Die Kodierung muss der benötigten Kodierung der Gegenstelle angepasst werden.
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Erwartete Antwort |
Nur empfangbar |
Kodierung |
Antwort umleiten |
|---|---|---|---|---|---|---|---|
Play-TCP |
kein |
kein |
cmd=start |
|
|
Unicode/ASCII |
Nein |
Stop-TCP |
kein |
kein |
cmd=stop |
|
|
Unicode/ASCII |
Nein |
Ein entscheidender Unterschied zur Funktionalität von Multi-IO-IP bei HTTP ist, dass eine erwartete Antwort im Feld eingestellt werden kann. Schickt das Gerät beispielsweise eine Zeichenkette als positive Bestätigung, so wartet die Komponente nach dem Versand auf ein Telegramm und vergleicht dieses mit den Daten, welche im Feld „Erwartete Antwort“ eingetragen sind. Ist hier nichts eingetragen, wird auch nicht auf eine Antwort gewartet, Entsprechen die empfangen Daten im Fall eines Eintrags NICHT den eingetragen, so wird eine Fehlermeldung auf den Ausgang „Fehlermeldungen“ ausgegeben. Das folgende Beispiel zeigt einen solche erwartete Antwort, in der außerdem Escape-Sequenzen beispielhaft verwendet werden.
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Erwartete Antwort |
Nur empfangbar |
Kodierung |
Antwort umleiten |
|---|---|---|---|---|---|---|---|
Play-TCP |
kein |
kein |
|
<ACK/>\r\n\0 |
|
Unicode/ASCII |
Nein |
Im nächsten Beispiel werden binäre Daten zue Ansteuerung verwendet..
Folgender Bytestrom soll zur Steuerung eines kleinen Embedded Devices gesendet werden (in Hexadezimaler Darstellung):
0xaa 0x01 0x11 0xaa
Es darf dem hexadezimalen Befehl KEIN „0x“ vorangestellt (case insensitive) werden. Alle Werte werden durch ein einfaches Leerzeichen voneinander getrennt. Will man eine Reihe von Bytes verschicken, dürfen diese Angaben NICHT mit normalen Zeichenketten oder Escape-Sequenzen vermischt werden. Kann ein Folge von hexadezimalen Werten nicht im Ganzen in einzelne Bytes konvertiert werden, so wird die eingegebene Zeichenkette als ASCII Zeichenkette unkonvertiert versendet:
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Erwartete Antwort |
Nur empfangbar |
Kodierung |
Antwort umleiten |
|---|---|---|---|---|---|---|---|
Play-TCP |
kein |
kein |
cmd=start |
aa 01 11 aa |
|
Unicode |
Nein |