send_dataT_send_dataSendDataSendDatasend_data (Operator)

Name

send_dataT_send_dataSendDataSendDatasend_data — Senden von Daten über eine generische Socket-Verbindung auch an externe Geräte oder Anwendungen.

Signatur

send_data( : : Socket, Format, Data, To : )

Herror T_send_data(const Htuple Socket, const Htuple Format, const Htuple Data, const Htuple To)

void SendData(const HTuple& Socket, const HTuple& Format, const HTuple& Data, const HTuple& To)

void HSocket::SendData(const HString& Format, const HTuple& Data, const HTuple& To) const

void HSocket::SendData(const HString& Format, const HString& Data, const HString& To) const

void HSocket::SendData(const char* Format, const char* Data, const char* To) const

void HSocket::SendData(const wchar_t* Format, const wchar_t* Data, const wchar_t* To) const   ( Nur Windows)

static void HOperatorSet.SendData(HTuple socket, HTuple format, HTuple data, HTuple to)

void HSocket.SendData(string format, HTuple data, HTuple to)

void HSocket.SendData(string format, string data, string to)

def send_data(socket: HHandle, format: str, data: HTupleType, to: MaybeSequence[Union[int, str]]) -> None

Beschreibung

send_datasend_dataSendDataSendDatasend_data verschickt Daten über die durch SocketSocketSocketsocketsocket bestimmte generische Socket-Verbindung. Die Daten werden anhand des Parameters FormatFormatFormatformatformat 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'"HALCON""HALCON""HALCON""HALCON" Protokoll nicht, sondern ist zum Transfer beliebiger Daten gedacht. Mit dem Operator receive_datareceive_dataReceiveDataReceiveDatareceive_data können entsprechende Daten mit einem HALCON Prozess empfangen werden.

Der Parameter FormatFormatFormatformatformat 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 DataDataDatadatadata der entsprechend konvertiert wird.

Die Zeichenkette in FormatFormatFormatformatformat kann die folgenden Zeichen enthalten:

Ganzzahlwerte:

'c':

Ein Byte = 8 bit.

'C':

Wie 'c', aber vorzeichenlos.

's':

Zwei Bytes = 16 bit, vorzeichenbehaftet.

'S':

Wie 's', aber vorzeichenlos.

'i':

Vier Bytes = 32 bit, vorzeichenbehaftet.

'I':

Wie 'i', aber vorzeichenlos.

'q':

Acht Bytes = 64 bit, vorzeichenbehaftet (nur für 64bit HALCON verfügbar).

'Q':

Wie 'q', aber vorzeichenlos.

Fließkommawerte:

'f':

Float, vier Bytes = 32 bit.

'd':

Double, acht Bytes = 64 bit.

Stringwerte:

'A':

Zeichenkette (Standardlänge 1024 Bytes), aufgefüllt mit Leerzeichen.

'a':

Binärdaten-Zeichenkette. Beim Versand von Daten wird der gesamte Speicherblock verschickt, die Größe wird automatisch bestimmt. Beim Datenempfang muss die Länge stets explizit angegeben werden.

'Z':

Zeichenkette (Standardlänge 1024 Bytes), aufgefüllt mit NULL-Bytes, wird beim Senden auf jeden Fall mit einem NULL-Byte abgeschlossen.

'z':

Zeichenkette variabler Länge, angegeben wird die maximale Länge (Standard 1024 Bytes).

Spezielle Zeichen, die keinen zugehörigen Wert im DataDataDatadatadata 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 FormatFormatFormatformatformat Zeichenkette ignoriert und kann somit zur Erhöhung der Lesbarkeit der FormatFormatFormatformatformat Zeichenkette benutzt werden.

Mögliche Modifikationszeichen, die nach einem der oben stehenden Zeichen benutzt werden können:

'n':

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.

'N':

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.

'0-n':

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 FormatFormatFormatformatformat 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 ToToTototo 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.

Ausführungsinformationen

Parameter

SocketSocketSocketsocketsocket (input_control)  socket HSocket, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Nummer des Sockets.

FormatFormatFormatformatformat (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Vorschrift zur Konvertierung der Daten.

Default: 'z' "z" "z" "z" "z"

DataDataDatadatadata (input_control)  string(-array) HTupleHTupleTypeHTupleHtuple (string / real / integer / handle) (string / double / int / long / HHandle) (HString / double / Hlong / HHandle) (char* / double / Hlong / handle)

Wert (oder Tupel von Werten) mit den zu sendenden Daten.

ToToTototo (input_control)  string(-array) HTupleMaybeSequence[Union[int, str]]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

IP-Adresse oder Netzwerkname und Netzwerkport der Gegenstelle.

Default: []

Werteliste: [], ['localhost',3000]["localhost",3000]["localhost",3000]["localhost",3000]["localhost",3000]

Vorgänger

open_socket_connectopen_socket_connectOpenSocketConnectOpenSocketConnectopen_socket_connect, socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectsocket_accept_connect, get_socket_paramget_socket_paramGetSocketParamGetSocketParamget_socket_param, set_socket_paramset_socket_paramSetSocketParamSetSocketParamset_socket_param

Nachfolger

close_socketclose_socketCloseSocketCloseSocketclose_socket

Siehe auch

receive_datareceive_dataReceiveDataReceiveDatareceive_data

Modul

Foundation