Разбор UDP получил данные на Python - PullRequest
0 голосов
/ 07 ноября 2019

Я программирую аналоговый пульт дистанционного управления, получая данные через UDP. Получатель запускает python3 для анализа полученных данных. Я хотел бы извлечь конкретные данные и хранить их в переменных. Формат полученных данных выглядит так:

{RX: SIGNED INTEGER VALUE, RY: SIGNED INTEGER, LX: SIGNED INTEGER,
 LY: SIGNED INTEGER}

Дело в том, что значения, поступающие из данных буфера, не покровительствуют и варьируются от -255,0 до 255. Есть ли способ сохранить эти входящие переменныев переменные Python даже целые числа не покровительствуют, как -000, 255 или -255?

Данные поступают с интервалом в 100 мс от виртуального джойстика.

import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data

# Example received data: {RX:, -123, RY:, 321, LX:, 0, LY:, 10}

RX = "extracted integer from packet" # From example int -123
RY = "extracted integer from packet" # From example int 321
LX = "extracted integer from packet" # From example int 0
LY = "extracted integer from packet" # From example int 10

1 Ответ

0 голосов
/ 10 ноября 2019

Я думаю, что вы сразу после парсера JSON, например:

import socket
import json

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024)
    print('received data', data)

    msg = json.loads(data.decode('ascii'))
    print('parsed message', msg)

    print('LX =', msg['LX'])

обратите внимание, что я использую синтаксис Python 3, так как Python 2 должен стать неподдерживаемым в паре месяцев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...