WiFi - 估算UDP數據接收超時
材料準備
- AmebaPro2 [ AMB82 MINI ] x 1
- Windows電腦(需連入同樣的網絡)
範例說明
本例使用Ameba從計算機接收UDP數據包,併計算出可允許的UDP接收超時。
打開”CalculateUdpReceiveTimeout” 示例: “File” -> “Examples” -> “WiFi” -> ” UDPCalculation” -> “ReceiveTimeout”.
在示例代碼中,修改高亮的部分,輸入連接WiFi網絡所需的信息(ssid、密碼、密鑰索引)。
上傳代碼並在上傳完成後按下Ameba上的reset按鈕。
在Arduino IDE中打開串行監控器,並記下分配給Ameba的IP地址。
回到我們的電腦上,我們需要安裝Cygwin來編譯用來發送UDP數據包的代碼。 Cygwin可以從 https://www.cygwin.com/ 下載。
按照官網上的說明來安裝。接下來,從“CalculateUdpReceiveTimeout”的Arduino示例中,將示例最下面的“#if 0”和“#endif”之間的代碼複製到一個新的文本文件中,將hostname更改為Ameba的IP地址,並將該文件重命名為“UdpReceiveTimeout.cpp”。
接下來,打開Cygwin終端,將工作目錄更為“UdpReceiveTimeout.cpp”,的位置,並使用“g++ UdpReceiveTimeout.cpp -o UdpTimeout” 指令來編譯代碼。一個名為“UdpTimeout.exe” 的文件會在當前目錄中創建出來。
重置Ameba,等待WiFi連接,並檢查IP地址是否保持不變。在計算機上運行UdpTimeout.exe文件,計算機就會開始不斷地向Ameba發送數據包。
超時值最初設置為1000ms。對於每個成功接收的包,Ameba都會降低超時值。 Ameba必須在超時時間內接收下一個包,否則就會登記一個失敗的包並增加超時值。打開串行監視器,可以看到超時值最終會收斂到最小值。