send_data
— Senden von Daten über eine generische Socket-Verbindung auch an externe
Geräte oder Anwendungen.
send_data
verschickt Daten über die durch Socket
bestimmte
generische Socket-Verbindung. Die Daten werden anhand des Parameters
Format
aus einem Wert oder einem Tupel von Werten in ein binäres
Netzwerkpaket umgewandelt und sind gut zur Kommunikation mit externen Geräten
oder Anwendungen geeignet. Dieser Operator unterstützt das Standard
'HALCON' Protokoll nicht, sondern ist zum Transfer beliebiger Daten
gedacht. Mit dem Operator receive_data
können entsprechende Daten
mit einem HALCON Prozess empfangen werden.
Der Parameter Format
gibt an, wie Tupel in ein binäres Paket
umgewandelt werden. Das Format besteht aus einem oder mehreren Bezeichnern,
wobei jedem ein optionaler Modifikator und eine Wiederholungszahl folgen kann.
Die meisten Bezeichner erfordern einen einzelnen Wert im Parameter Data
der entsprechend konvertiert wird.
Die Zeichenkette in Format
kann die folgenden Zeichen enthalten:
Ganzzahlwerte:
ein Byte = 8 bit,
wie 'c', aber vorzeichenlos
zwei Bytes = 16 bit, vorzeichenbehaftet
wie 's', aber vorzeichenlos
vier Bytes = 32 bit, vorzeichenbehaftet
wie 'i', aber vorzeichenlos
acht Bytes = 64 bit, vorzeichenbehaftet (nur für 64bit HALCON verfügbar)
wie 'q', aber vorzeichenlos
Fließkommawerte:
float, vier Bytes = 32 bit
double, acht Bytes = 64 bit
String values:
Zeichenkette (Standardlänge 1024 Bytes), aufgefüllt mit Leerzeichen
Zeichenkette (Standardlänge 1024 Bytes), aufgefüllt mit NULL-Bytes, wird beim Senden auf jeden Fall mit einem NULL-Byte abgeschlossen
Zeichenkette variabler Länge, angegeben wird die maximale Länge (Standard 1024 Bytes)
Spezielle Zeichen, die keinen zugehörigen Wert im Data
Parameter
erfordern:
beim Schreiben wird ein einzelnes Byte als binäre NULL übertragen, beim Lesen ein solches NULL-Byte übersprungen
beim Schreiben wird ein einzelnes Byte als Leerzeichen (binär 0x20) übertragen, beim Lesen wird ein Leerzeichen übersprungen
dieses Zeichen wird in der Format
Zeichenkette
ignoriert und kann somit zur Erhöhung der Lesbarkeit der
Format
Zeichenkette benutzt werden
Mögliche Modifikationszeichen, die nach einem der oben stehenden Zeichen benutzt werden können:
konvertiere den Ganzzahl- oder Fließkommawert beim Schreiben in die und beim Lesen von der Netzwerk Byte Reihenfolge (big endian) in die lokal benutzte Byte Reihenfolge
konvertiere den Ganzzahl- oder Fließkommawert beim Schreiben in die und beim Lesen von der Intel Byte Reihenfolge (little endian) in die lokal benutzte Byte Reihenfolge
Angabe der Wiederholung des vorher stehenden Formatzeichens. Dabei steht z.B. 'c5' für 'ccccc' (benötigt also ein Tupel aus 5 Werten), aber 'A10' bezeichnet eine Zeichenkette mit 10 Zeichen und benötigt nur einen Wert.
Die Modifikationszeichen 'n' und 'N' können auch als erstes Zeichen im
Format
Zeichenkette angegeben werden und setzen den Standardwert für
die Byte Reihenfolge. Wird nichts anderes angeben, so wird 'n', also die
Netzwerk Byte Reihenfolge (big endian) benutzt.
Bei UDP Verbindungen müssen die binären Daten in einem Netzwerkpaket übertragen werden. Daher dürfen diese nicht mehr Platz benötigen, als in einem Netzwerkpaket verfügbar ist. Üblicherweise bedeutet dies, dass die Größe kleiner als die MTU (Maximum Transfer Unit) der Netzwerkschnittstelle sein muss, welche normalerweise etwa 1500 Byte beträgt. Garantiert sind aber nur 576 Byte (1280 Byte für IPv6).
Der Parameter To
sollte für Socketverbindungen, welche bereits
gebunden sind (alle TCP Verbindungen und gebundene UDP Verbindungen), leer
gelassen werden. Er ist aber für eine ungebundene UDP Verbindung unbedingt
nötig, um die IP Adresse oder den Netzwerknamen und den Netzwerkport der
Gegenstelle anzugeben.
Socket
(input_control) socket →
(handle)
Nummer des Sockets.
Format
(input_control) string →
(string)
Vorschrift zur Konvertierung der Daten.
Defaultwert: 'z'
Data
(input_control) string(-array) →
(string / real / integer)
Wert (oder Tupel von Werten) mit den zu sendenden Daten.
To
(input_control) string(-array) →
(string / integer)
IP-Adresse oder Netzwerkname und Netzwerkport der Gegenstelle.
Defaultwert: []
Werteliste: [], ['localhost',3000]
open_socket_connect
,
socket_accept_connect
,
get_socket_param
,
set_socket_param
Foundation