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通訊軟體