通过python使用UDP控制机器人
我在用树莓做机器人。我在找一个图书馆,可以帮助我处理网络方面的事情,比如packets&co。 所以我用这段代码来选择我收到的命令:通过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 '
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通信的库,我将自己做其他事情