WiFi - 估算 UDP 數據接收超時

材料準備

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1

  • Windows電腦(需連入同樣的網絡)

範例説明

本例使用Ameba從計算機接收UDP數據包,併計算出可允許的UDP接收超時。

Ameba準備

Open the “CalculateUdpReceiveTimeout” example in “File” “Examples” “WiFi” UDP_Calculation “CalculateUdpReceiveTimeout”.

1

在示例代碼中,修改高亮的部分,輸入連接WiFi網絡所需的信息(ssid、密碼、密鑰索引)。

2

上傳代碼並在上傳完成後按下Ameba上的reset按鈕。

在Arduino IDE中打開串行監控器,並記下分配給Ameba的IP地址。

3

電腦準備

回到我們的電腦上,我們需要安裝Cygwin來編譯用來發送UDP數據包的代碼。 Cygwin可以從 https://www.cygwin.com/ 下載。

按照官網上的說明來安裝。接下來,從“CalculateUdpReceiveTimeout”的Arduino示例中,將示例最下面的“#if 0”和“#endif”之間的代碼複製到一個新的文本文件中,將hostname更改為Ameba的IP地址,並將該文件重命名為“UdpReceiveTimeout.cpp”。

4

接下來,打開Cygwin終端,將工作目錄更為“UdpReceiveTimeout.cpp”,的位置,並使用“g++ UdpReceiveTimeout.cpp -o UdpTimeout” 指令來編譯代碼。一個名為“UdpTimeout.exe” 的文件會在當前目錄中創建出來。

運行示例

重置Ameba,等待WiFi連接,並檢查IP地址是否保持不變。在計算機上運行UdpTimeout.exe文件,計算機就會開始不斷地向Ameba發送數據包。

超時值最初設置為1000ms。對於每個成功接收的包,Ameba都會降低超時值。Ameba必須在超時時間內接收下一個包,否則就會登記一個失敗的包並增加超時值。打開串行監視器,可以看到超時值最終會收斂到最小值。