基于小凌派RK2206開發(fā)板wifi-tcp通信實驗
在開發(fā)過程中想要與開發(fā)板進行通信一般使用串口通信,當開發(fā)板使用串口與pc通信還需要專門的串口轉(zhuǎn)換工具才行。而小凌派開發(fā)板自帶wifi功能。因此與pc通信時可以使用wifi功能進行tcp通信這樣就不需要專門的轉(zhuǎn)換工具非常方便。
一、在使用小凌派開發(fā)板wifi進行tcp通信的步驟
1、要確定pc機所連接路由的wifi名稱和密碼。通過修改代碼使小凌派連接到與pc同一網(wǎng)絡(luò)。
修改文件device/rockchip/rk2206/sdk_liteos/board/src/config_network.c 中的SSID 即wifi名稱,和PASSWORD 即wifi密碼。
#define SSID “凌智電子”
#define PASSWORD “********”
2、確認小凌派wifi功能是否開啟
查看device/rockchip/rk2206/sdk_liteos/board/main.c 文件
是否調(diào)用ExternalTaskConfigNetwork();
3、確認小凌派開發(fā)板與開發(fā)板在同一網(wǎng)段。
在修改以上配置后先編譯燒錄程序然后查看log確認小凌派開發(fā)板獲取到的ip地址。

在確認pc的ip地址,在控制臺輸入ipconfig

可以看到兩個ip地址都是點2網(wǎng)段,說明已經(jīng)在同一局域網(wǎng)。
4、 修改wifi_tcp 例程中服務(wù)地址及端口號
#define OC_SERVER_IP “192.168.2.49”
#define SERVER_PORT 6666
這個ip地址即PC的ip地址,修改后重新編譯燒錄程序。
5、 pc上打開兩個網(wǎng)絡(luò)調(diào)試工具,一個客戶端和一個服務(wù)端,并設(shè)置ip地址和端口號
服務(wù)端 ip地址:0.0.0.0
端口號:6666
客戶端ip地址:192.168.2.50 (之前查看到小凌派的ip地址)
端口號:6666

6 、查看log等待小凌派的tcp客戶端和服務(wù)端任務(wù)啟動

可以看到客戶端連接地址192.168.2.49:6666 即pc的ip地址
服務(wù)端監(jiān)聽端口為6666
這表示小凌派tcp客戶端和服務(wù)端任務(wù)都已經(jīng)啟動。
7、 在pc網(wǎng)絡(luò)調(diào)試助手點擊啟動客戶端和服務(wù)端

可以觀察到網(wǎng)絡(luò)調(diào)試助手服務(wù)端有設(shè)備連接成功并且接收到了調(diào)試數(shù)據(jù)。
網(wǎng)絡(luò)調(diào)試助手的客戶端也顯示連接成功。
8、 使用網(wǎng)絡(luò)調(diào)試助手發(fā)送數(shù)據(jù)

可以查看log發(fā)現(xiàn)小凌派開發(fā)板已經(jīng)可以正常收發(fā)數(shù)據(jù)了。
這樣就可以通過使用wifi與pc進行通信。
二、接下來分析一下代碼的工作流程。
首先包含必要的頭文件

這些定義主要是 ip地址和端口號以及緩存大小

這部分是獲取wifi連接信息,通過查詢wifi連接信息確認wifi是否連接成功。只有wifi連接成功了才能進行tcp通信

這部分是tcp服務(wù)端接收消息處理
先進入accept()會處于阻塞狀態(tài),即沒有客戶端連接時一直阻塞。
單客戶端連接后又進入接收數(shù)據(jù)狀態(tài),此狀態(tài)也是阻塞狀態(tài)。
沒有數(shù)據(jù)時一直阻塞,不過需要注意的是在此狀態(tài)下當客戶端斷開連接時recv會返回-1
接收到pc客戶端的消息后通過send()發(fā)響應(yīng)消息給PC客戶端。

這部分是tcp服務(wù)端任務(wù)代碼
服務(wù)端處理流程
socket--》bind--》listen--》accept--》recv--》send--》lwip_close
先通過socket()接口打開一個服務(wù)端socket文件
然后設(shè)置需要綁定的服務(wù)端ip地址及端口號。
在進行監(jiān)聽,需要注意的是此處監(jiān)聽不會處于阻塞態(tài)。

這部分是tcp客戶端的接收消息處理函數(shù)
先進行嘗試連接pc機的服務(wù)端,如果失敗則延遲5秒后重新連接直到連接成功。
連接成功后先發(fā)消息給PC的服務(wù)端,然后進入接收狀態(tài),此狀態(tài)是阻塞態(tài)。
當接收到pc的消息后進入循環(huán)發(fā)送狀態(tài)。

這部分代碼是tcp客戶端代碼
客戶端處理流程
socket--》connect--》send--》recv--》lwip_close
先通過socket()接口創(chuàng)建客戶端的socket文件。
然后設(shè)置客戶端連接PC服務(wù)端的ip地址及端口號。
在進行connect連接。

這部分是tcp創(chuàng)建客戶端和服務(wù)端任務(wù)
可以看到在創(chuàng)建客戶端和服務(wù)端任務(wù)前先阻塞判斷wifi的連接狀態(tài)。
只有wifi連接成功后才創(chuàng)建客戶端和服務(wù)端任務(wù)。

這部分是創(chuàng)建wifi tcp 通信任務(wù)主要是為了使用APP_FEATURE_INIT(wifi_tcp_example);
這樣當OpenHarmony初始化完成后會自動執(zhí)行此任務(wù)。

來源: 凌智電子
-
WIFI
+關(guān)注
關(guān)注
82文章
5457瀏覽量
211776 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
6108瀏覽量
112804 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4765 -
小凌派
+關(guān)注
關(guān)注
0文章
28瀏覽量
1551
發(fā)布評論請先 登錄
如何使用Vitis自帶的LWIP模板進行PS端千兆以太網(wǎng)TCP通信?
【小凌派RK2206開發(fā)板試用體驗】小凌派手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機器人
每周精選 | 小凌派RK2206開發(fā)板wifi-tcp通信實驗,Markdown編輯器有獎體驗活動
【小凌派RK2206開發(fā)板試用體驗】小凌派手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機器人
【小凌派RK2206開發(fā)板試用體驗】第5章 使用WiFi聯(lián)網(wǎng)
基于小凌派RK2206開發(fā)板wifi-udp通信實驗
如何在小凌派RK2206開發(fā)板上使用wifi進行tcp通信
使用小凌派開發(fā)板wifi進行tcp通信的步驟
基于OpenHarmony輕量級操作系統(tǒng)實現(xiàn)RK2206 WiFi-AP模式通信開發(fā)案例
基于ALINX開發(fā)板Z19-P實現(xiàn)WIFI無線通信功能

利用小凌派開發(fā)板自帶的wifi功能來進行tcp通信的教程
評論