打印

用WiFi单片机做一个简单的UDP服务计算

[复制链接]
973|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Simon西|  楼主 | 2020-12-23 19:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

常见的网络连接除了TCP之外还有UDP,支持UDP的功能实现对于wifi单片机也是很重要,这里我们展示一下瑞昱的Ameba RTL8722的UDP服务和示例,




材料准备
  • Ameba x 1



范例说明
这个范例里,我们使用Ameba连上WiFi,作为UDP服务器端,当UDP 客户端发送讯息给Ameba之后,回应“acknowledged” 给客户端。
首先打开 WiFi Web Server的范例, “File” -> “Examples” -> “AmebaWiFi” -> “WiFiUdpSendReceiveString”

将WiFi连线至AP的相关讯息进行修改,包括 ssid, pass, keyIndex
并且修改连线的方式
上传程式码之后,按下Ameba的Reset按钮, WiFi连线成功后,会开启UDP服务器,服务器端的IP为Ameba的IP,端口为2390
启动服务之后,会印出讯息“Starting connection to server”,并等待UDP客户端连线进来
另外在电脑的socket工具上(本示例中使用的工具为“sokit”)通过获取的IP地址以及范例中设定的端口号“2390”来进行连线。
选取Client模式,填写Server IP和PORT信息,点击“UDP Connect”.
连接成功后, 传送字串过去,这个例子里,在Buf 0填入“Hello World”, 并且按下Send
此时会看到Ameba UDP服务器端回应“acknowledged”,并且Ameba的Serial Monitor会看到Contents: “Hello World”,这个例子就成功了




程式码说明Ameba使用相容于Arduino Wifi Shield的WiFiUdp class,所以范例程式也与Arduino相容。
https://www.arduino.cc/en/Tutorial/WiFiSendReceiveUDPString

首先呼叫  begin() 在Ameba开启UDP端口
https://www.arduino.cc/en/Reference/WiFiUDPBegin
使用parsePacket() 等待客户端传送资料进来
https://www.arduino.cc/en/Reference/WiFiUDPParsePacket
如果有资料进来, 使用remoteIP() 与remotePort() 取得客户端的IP 与Port
https://www.arduino.cc/en/Reference/WiFiUDPRemoteIP
https://www.arduino.cc/en/Reference/WiFiUDPRemoteIP
并且呼叫 read() 将资料收进来
https://www.arduino.cc/en/Reference/WiFiUDPRead
回传资料时, 使用beginPacket(), write(), end()传送资料,需要三个为一组来使用
https://www.arduino.cc/en/Reference/WiFiUDPBeginPacket
https://www.arduino.cc/en/Reference/WiFiUDPWrite
https://www.arduino.cc/en/Reference/WiFiUDPEndPacket



使用特权

评论回复

相关帖子

沙发
xyz549040622| | 2020-12-29 15:24 | 只看该作者
支持一下,感谢分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

62

帖子

0

粉丝