Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过python使用UDP控制机器人_Python_Udp_Raspberry Pi_Robot_Udpclient - Fatal编程技术网

通过python使用UDP控制机器人

通过python使用UDP控制机器人,python,udp,raspberry-pi,robot,udpclient,Python,Udp,Raspberry Pi,Robot,Udpclient,我在用树莓做机器人。我在找一个图书馆,可以帮助我处理网络方面的事情,比如packets&co。 所以我用这段代码来选择我收到的命令: def selectPacket(x): if x == '00': return '00' elif x == "01": Date = datetime.now() return str(Date.microsecond) elif x == "02": return '

我在用树莓做机器人。我在找一个图书馆,可以帮助我处理网络方面的事情,比如packets&co。 所以我用这段代码来选择我收到的命令:

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是不可能的

因为控制机器人取决于复杂的部分,比如他们有多少条腿,他们有多少关节等等,所以我认为没有你想要的库。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)
导入套接字,sys 目的地=('',5000) s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s、 setsockopt(socket.SOL_socket,socket.SO_广播,1) s、 发送至(“客户您好”,目的地) 打印“收听回复” 而1: (buf,address)=s.recvfrom(2048) 如果不是len(buf): 打破 打印“从%s接收:%s%”(地址,buf) s、 发送至(“回音”,目的地)
另外,如果您有复杂的逻辑,需要分成多个部分,可以是通信、控制或I/O,请参阅事件驱动编程:)

我只需要一个用于数据包处理和udp通信的库,我将自己做其他事情