找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 2163|回复: 1

【EV3与物联网系列教程】13让EV3向电脑发消息

[复制链接]
发表于 2022-12-5 16:18:37 | 显示全部楼层 |阅读模式
上一篇: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库,所以两种解释器都能运行。
  1. import socket
复制代码
其次,创建一个名为s1的套接字对象,设置它为AF_INET IPv4),SOCK_DGRAMUDP套接字)。这个不理解也没有关系,照着抄就行了。
  1. s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
复制代码
再次,让套接字对象s1绑定EV3的某个网络端口号。0.0.0.09999表示绑定EV3任意IP地址的9999号端口。端口号可以随意修改,只要符合前面所说的规则就可以。绑定9999号端口以后,我们的程序就会通过EV39999号端口来收发UDP数据包。这一步可以略掉不写。如果不写这一步的代码的话,EV3会在发送消息的时候自动随机分配一个端口号。
注意,这行代码的bind函数后面有两层括号。
  1. s1.bind(('0.0.0.0', 9999))
复制代码
然后,向指定的IP地址的指定端口发送消息。在这里,我发送消息的内容是hello,发送之前要把hello这个字符串编码成二进制才能发送,所以我们用国际通用的UTF-8编码把它编码成二进制的形式。我的电脑的IP地址是192.168.0.103,端口号是8888(就是刚才在网络调试助手里设置的端口号)。
  1. s1.sendto('hello'.encode('UTF-8'), ('192.168.0.103', 8888))
复制代码
最后,关闭套接字。因为Python程序执行结束以后会自动关闭套接字,所以这一步也可以略掉不写。
  1. s1.close()
复制代码
完成了。
合起来,代码就是:
  1. import socket
  2. s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  3. s1.bind(('0.0.0.0', 9999))
  4. s1.sendto('hello'.encode('UTF-8'),('192.168.0.103', 8888))
  5. s1.close()
复制代码
总共只有5行代码。如果把可以略掉不写的两个步骤去掉的话,就只有3行代码。
  1. import socket
  2. s1=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  3. s1.sendto('hello'.encode('UTF-8'),('192.168.0.103', 8888))
复制代码
确保你的电脑和EV3的网络是连接到同一个路由器的,而且网络调试助手已经设置好并打开端口。然后用ThonnyEV3运行这段程序。
1.png
运行程序之后,在你的电脑上的网络调试助手就会收到EV3发来的消息。
2.png
现在,你已经可以让EV3通过网络向电脑发送消息了!

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2022-12-5 17:06:07 | 显示全部楼层
一个嵌入式linux开发环境被你搭建起来了。接下来就是各种功能移植了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-4-25 09:27 , Processed in 0.109641 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表