使用UDP通过python控制机器人

时间:2016-02-24 09:36:07

标签: python udp raspberry-pi robot udpclient

我正在使用树莓皮制作机器人。我正在寻找一个可以帮助我处理网络内容的库,比如数据包& co。 所以我正在使用此代码来选择我收到的命令:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.layout, c, from, to, 0);
listview.setAdapter(adapter);

我确信有一个lib可以使用python制作快速服务器和客户端,我想使用UDP因为我将使用的连接非常不稳定,所以tcp是不可能的。

1 个答案:

答案 0 :(得分:0)

因为控制机器人依赖于复杂的部件,例如它们有多少条腿,它们有多少关节等等,我认为没有你想要的图书馆。并且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)

此外,如果您有复杂的逻辑并需要分成多个可以是通信,控制或I / O的部分,请参考事件驱动的编程:http://etutorials.org/Programming/Python+tutorial/Part+IV+Network+and+Web+Programming/Chapter+19.+Sockets+and+Server-Side+Network+Protocol+Modules/19.3+Event-Driven+Socket+Programs/