1. 程式人生 > >06 OPENMV中的AT指令集操作

06 OPENMV中的AT指令集操作

最近一個專案需要使用wifi模組進行圖片的傳輸,傳輸協議採用tcp協議,使用模組為經典的ESP8266,在此和大家分享一下在OPENMV中使用AT指令集遇到的一些問題:

1:使用AT指令集一個基本常識就是一定要在AT指令後面加入回車換行符,在java中為string型別的“\r\n”,在C中為uint8_t型別的0x0D,0x0A,在openmv中我的方式是使用一個bytearray儲存兩個字元變數

2:返回幀一定要檢視,因為在openMV中的串列埠是採用uart.any()方式進行資料的接收判斷

該函式只要有資料在等待就會呼叫成功,但是我們每次在串列埠傳送一次AT指令即意味著資料在串列埠等待發送,所以在AT指令呼叫的間隙,需要呼叫該函式進行資料的取出和讀取,一是緩解串列埠的傳送壓力,二是通過讀取8266的返回資料,可以更好的把握模組的連結情況

3:傳送間隙最好延時,在博主的專案中,8266的連結情況受wifi訊號的制約,但是都不可避免的需要在at指令中延時,延時方法:呼叫time類 使用time.sleep()函式進行延時,這點在8266 UDP透傳的時候也有介紹:

4:記憶體的及時回收

   在python中變數並不是一塊特定的記憶體,所以在使用完畢後儘量使用del()函式進行手動處理,在一次大的while迴圈中也應該通過記憶體回收命令gc.collect()進行處理優化。

最後附上一些新手容易遇見的問題:

  1. AT指令必須大寫,每條AT指令後頭加一個空格,程式碼中對應0x0d 0x0a,否則發什麼回什麼
  2. 連線tcp的時候使用串列埠助手自動找到IP地址,將其餘的全部禁用即可
  3. 退出透傳命令什麼都不要加,就+++即可