Использование UDP для управления роботом через python

Я работаю над роботом, используя raspberrypi. Я искал библиотеку, которая могла бы помочь мне с сетевыми вещами, такими как пакеты и ко. Поэтому я использую этот код для выбора команд, которые я получаю:

def selectPacket(x):
    if x == '00': 
        return '00'
    elif x == "01":
        Date = datetime.now()
        return str(Date.microsecond)
    elif x == "02":
        return '98'
    elif x == "03":
        return '98'
    elif x == "04":
        return '98'
    elif x == "05":
        return '98'
    else: 
        return '99'

Я уверен, что есть библиотека для быстрых серверов и клиентов, использующих python, я хочу использовать UDP, потому что соединение, которое я буду использовать, будет очень нестабильным, поэтому tcp не обсуждается.

1 ответ

Поскольку управление роботом зависит от сложных частей, таких как, сколько у них ног, сколько у них суставов и т. Д., Я думаю, что вам не нужна библиотека. И фаза соединения на python слишком проста, чтобы создать библиотеку.

Вот простой UDP-код клиента / сервера:

UDP-сервер

import socket, traceback
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind(('', 5000))

print "Listening for broadcasts..."

while 1:
    try:
        message, address = s.recvfrom(8192)
        print "Got message from %s: %s" % (address, message)
        s.sendto("Hello from server", address)
        print "Listening for broadcasts..."
    except (KeyboardInterrupt, SystemExit):
        raise
    except:
        traceback.print_exc()

UDP-клиент

import socket, sys
dest = ('<broadcast>', 5000)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto("Hello from client", dest)
print "Listening for replies."

while 1:
    (buf, address) = s.recvfrom(2048)
    if not len(buf):
        break
    print "Received from %s: %s" % (address, buf)
    s.sendto("echo", dest)

Кроме того, если у вас сложная логика и вам нужно разделиться на несколько частей, которые могут быть связью, управлением или вводом / выводом, обратитесь к программированию на основе событий: http://etutorials.org/Programming/Python+tutorial/Part+IV+Network + и + Веб + Программирование / Глава + 19. + Сокеты + и + На стороне сервера + Сеть + Протокол + Модули / 19.3 + Управляемые событиями + Сокеты + Программы /)

Другие вопросы по тегам