乾貨|小玩 Cyclone TCP

對於socket編程,如果自己講一大堆,會變得班門弄斧。所以還是直接進入重點好了。本來就想著在單片機跑下lwip,後來free叔叔介紹推薦了cyclonetcp,我個人覺得很好用,用起來很順手,而且代碼註釋等也很簡潔。

簡單說下CycloneTCP,包括了TCP和SSL兩部分,我主要用的是TCP部分,所以SSL部分也沒仔細去看。從網絡接口層上看,支持了eth、wifi、usb等常用的接口,從應用層上看,支持了16種應用層協議。對於單片機來說,已經足夠很強大了。

乾貨|小玩 Cyclone TCP

我並沒有切入到應用層上,而是在傳輸層上入手,因為自己項目上,用的tcp client和server比較多,所以同樣在cyclontcp,我也是先試下tcp client的搭建。硬件平臺是F746disco。

從底層開發上,搭建tcp client很簡單,只需要調用幾個socket接口即可通信。從官方的demo佈局可以看到,每個demo都帶了freertos,而且各個相關文件都已經給你分配好。

乾貨|小玩 Cyclone TCP

我在這個的基礎上,建立了一些tcp client的Test任務。我在數據的收發上,自定義的自己的一個小協議。當收到幀頭是7e的時候,長度一致,check麼問題的時候,我就認為是一次有效數據。

乾貨|小玩 Cyclone TCP

開發板上的IP分配為靜態IP,服務器地址是我的PC的IP地址。

乾貨|小玩 Cyclone TCP

接下來就是配置client端

乾貨|小玩 Cyclone TCP

然後在while裡面不斷等待收到數據,若收到一幀數據則進行處理。

乾貨|小玩 Cyclone TCP

以上的底層搭建已經完成。接下來就是server端。在PC上新建一個QT工程。在UI設計上簡單佈局幾個控件。

乾貨|小玩 Cyclone TCP

當點擊"打開連接"的時候,會輪詢查詢本機的IP地址並顯示在ServerIP上,同時也偵聽一個端口(我的是8001)使得開發板能夠利用這個端口訪問服務器。當服務器被客戶端訪問時,會發出newConnection()信號,因此為該信號添加槽函數acceptConnection()

乾貨|小玩 Cyclone TCP

連接成功後,每次點擊相對應的控件都會使用Socket的write函數向客戶端發送數據socket->write(data);

乾貨|小玩 Cyclone TCP

其他功能,比如收到開發板的相關數據進行處理顯示等,後續如果有時間我會繼續完善。代碼比較簡陋,就不敢上傳了

乾貨|小玩 Cyclone TCP

但是可以肯定的是,cyclonetcp功能強大,註釋也很好,很適合學習與項目應用。接下來就是點屏的時候了。


歡迎微博@EEWORLD

與更多行業內網友進行交流請登陸EEWORLD論壇。


分享到:


相關文章: