Python декодировать TCP из LabVIEW - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь декодировать данные, поступающие через TCP из labview. Я хочу отправить 4-битный заголовок, обозначающий длину, за которой следует сообщение.

Мой LabVIEW успешно отправил 4 байта на Python. И Python получает b '\ x00 \ x00 \ x00 \ x016', который четко обозначает байт информации.

Как мне тогда декодировать команду обратно к целочисленной длине, чтобы у меня было дополнительное чтение читать в остальной части сообщения?

Это мой python скрипт:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 9991))
server.listen(1)

while True:
    conn, addr = server.accept()
    messagelen = conn.recv(4)
    print(messagelen)
    bits = bytes.decode(messagelen)
    print(bits)
    server.close()

LabVIEW скрипт

1 Ответ

0 голосов
/ 30 апреля 2020

Вы уверены, что ваши байты, которые вы получаете, не b'\x00\x00\x00\x16'? Если они есть, вы можете использовать модуль struct для распаковки.

import socket
import struct

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 9991))
server.listen(1)

while True:
    conn, addr = server.accept()
    bits = conn.recv(4)
    messagelen = struct.unpack('>i', bits)[0]
    print(messagelen)
    server.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...