Ameba Arduino: [RTL8722CSM] [RTL8722DM] [RTL8722DM MINI] 估算UDP数据接收超时

材料准备

  • AmebaD [RTL8722DM / RTL8722CSM / RTL8722DM MINI] x 1
  • Windows电脑(需连入同样的网络)

范例说明

本例使用Ameba从计算机接收UDP数据包,并计算出可允许的UDP接收超时。

打开”CalculateUdpReceiveTimeout” 示例: “File” -> “Examples” -> “AmebaWiFi” -> ” UDP_Calculation ” -> “CalculateUdpReceiveTimeout”.

1

在示例代码中,修改高亮的部分,输入连接WiFi网络所需的信息(ssid、密码、密钥索引)。

1

上传代码并在上传完成后按下Ameba上的reset按钮。

在Arduino IDE中打开串行监控器,并记下分配给Ameba的IP地址。

1

回到我们的电脑上,我们需要安装Cygwin来编译用来发送UDP数据包的代码。Cygwin可以从 https://www.cygwin.com/ 下载。

按照官网上的说明来安装。接下来,从“CalculateUdpReceiveTimeout”的Arduino示例中,将示例最下面的“#if 0”和“#endif”之间的代码复制到一个新的文本文件中,将hostname更改为Ameba的IP地址,并将该文件重命名为“UdpReceiveTimeout.cpp”。

1

接下来,打开Cygwin终端,将工作目录更为“UdpReceiveTimeout.cpp”,的位置,并使用“g++ UdpReceiveTimeout.cpp -o UdpTimeout” 指令来编译代码。一个名为“UdpTimeout.exe” 的文件会在当前目录中创建出来。

重置Ameba,等待WiFi连接,并检查IP地址是否保持不变。在计算机上运行UdpTimeout.exe文件,计算机就会开始不断地向Ameba发送数据包。

超时值最初设置为1000ms。对于每个成功接收的包,Ameba都会降低超时值。Ameba必须在超时时间内接收下一个包,否则就会登记一个失败的包并增加超时值。打开串行监视器,可以看到超时值最终会收敛到最小值。

请先确认已安装QQ通讯软体