上一篇:https://bbs.cmnxt.com/forum.php?mod=viewthread&tid=65472
这一篇讲的是让EV3向电脑发送UDP数据包,从而实现用EV3向电脑发消息的方法。
让EV3向电脑发送UDP数据包发送UDP数据包在C语言里是很复杂的事情,需要写很长的代码。但是在Python语言里,这些功能已经被封装得很简单,易于操作。 在Python语言里,让EV3向你的电脑发送UDP数据包只要5步,最少可以省略到3步。
首先,导入socket库。因为python3和micropython都有socket库,所以两种解释器都能运行。 其次,创建一个名为s1的套接字对象,设置它为AF_INET (IPv4),SOCK_DGRAM(UDP套接字)。这个不理解也没有关系,照着抄就行了。 - s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
复制代码再次,让套接字对象s1绑定EV3的某个网络端口号。0.0.0.0和9999表示绑定EV3任意IP地址的9999号端口。端口号可以随意修改,只要符合前面所说的规则就可以。绑定9999号端口以后,我们的程序就会通过EV3的9999号端口来收发UDP数据包。这一步可以略掉不写。如果不写这一步的代码的话,EV3会在发送消息的时候自动随机分配一个端口号。 注意,这行代码的bind函数后面有两层括号。 - s1.bind(('0.0.0.0', 9999))
复制代码然后,向指定的IP地址的指定端口发送消息。在这里,我发送消息的内容是hello,发送之前要把hello这个字符串编码成二进制才能发送,所以我们用国际通用的UTF-8编码把它编码成二进制的形式。我的电脑的IP地址是192.168.0.103,端口号是8888(就是刚才在网络调试助手里设置的端口号)。 - s1.sendto('hello'.encode('UTF-8'), ('192.168.0.103', 8888))
复制代码最后,关闭套接字。因为Python程序执行结束以后会自动关闭套接字,所以这一步也可以略掉不写。 完成了。 合起来,代码就是: - import socket
- s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s1.bind(('0.0.0.0', 9999))
- s1.sendto('hello'.encode('UTF-8'),('192.168.0.103', 8888))
- s1.close()
复制代码总共只有5行代码。如果把可以略掉不写的两个步骤去掉的话,就只有3行代码。 - import socket
- s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s1.sendto('hello'.encode('UTF-8'),('192.168.0.103', 8888))
复制代码确保你的电脑和EV3的网络是连接到同一个路由器的,而且网络调试助手已经设置好并打开端口。然后用Thonny让EV3运行这段程序。
运行程序之后,在你的电脑上的网络调试助手就会收到EV3发来的消息。
现在,你已经可以让EV3通过网络向电脑发送消息了!
|