python-senden/empfangen von hex-Daten über TCP-socket

Habe ich ein ethenet access control Gerät, das angeblich in der Lage zu kommunizieren über TCP.


Wie kann ich senden Sie ein pachet durch die Eingabe der HEX-Daten, da dies ist, was ich von Ihr Handbuch (standard-format für die Kommunikation empfangene und gesendete Pakete nach jedem Befehl)

Können Sie bitte zeigen Sie einige Beispiel-code oder links, um zu beginnen....

standard zurück Paket vom terminal 
Größe (bytes) 
BS (0x08) : ASCII-Zeichen 1 
STX (0x02) : ASCII-Zeichen 1 
LÄNGE : die Länge von BS ETX 4 
TID : system-einzigartig I. D. 1 
ERGEBNIS 1 
DATEN : zurückgegebene parameter N 
PRÜFSUMME : byte-Summe von BS-DATEN 1 
ETX (0x03) : ASCII-Zeichen 1 
Standard-Befehls-Paket zum terminal 
Größe (bytes) 
ACK (0x06) : ASCII-Zeichen 1 
STX (0x02) : ASCII-Zeichen 1 
LÄNGE : die Länge von der ACK ETX 4 
TID : system-einzigartig I. D. (ex: 1) 1 
BEFEHL 1 
Access Key(Optional) 6 
DATEN : Befehl parameter N 
PRÜFSUMME : byte-Summe von ACK nach DATEN 1 
ETX (0x03) : ASCII-Zeichen 1 

Dieses Paket aus startet ACK. 
In diesem Paket werden mehrere byte-Wert gestartet werden muss von MSB. 
Zum Beispiel, wenn die Länge war 10, LÄNGE 0x00 0x00 0x00 0x0a. 
  • und wenn ich die gesendeten Daten mit s.senden, bekomme ich die Antwort von s ist.recv, wie kann ich zeigen, was kommt zurück in HEX mit "drucken" ?
  • verwenden Sie struct.unpack (für die 8-byte-start-der-Antwort-Paket) - wieder, um sicherzustellen, dass Sie immer die ganze Antwort ist der Schlüssel, wie TCP ist ein stream-Protokoll, NICHT ein Datagramm-Protokoll, so könnte beliebig kürzen Dinge-wahrscheinlich nicht, aber warum das Risiko eingehen? Genauso, wie Sie Sie verwenden sollten sendall statt send um sicherzustellen, dass die ganze verpackt übermittelt wird, wie ich bereits in der Antwort zu Ihrem Kommentar auf meine Antwort.
InformationsquelleAutor Mike | 2010-03-14
Schreibe einen Kommentar