衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于小凌派RK2206開發(fā)板wifi-udp通信實驗

福州市凌睿智捷電子有限公司 ? 2022-06-01 10:33 ? 次閱讀

開發(fā)板與pc通信有很多形式,之前已經(jīng)介紹過通過tcp通信,不過有些場合使用udp會更合適,因為udp沒有了tcp的握手與連接步驟,傳輸效率會高的多。例如通過wifi傳輸開發(fā)板采集到傳感器數(shù)據(jù)在PC端顯示,這些消息是不斷被覆蓋的,使用udp就高效的多。


一、在使用小凌派開發(fā)板wifi進行udp通信的步驟

前面的步驟基本與之前發(fā)的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、確認(rèn)小凌派wifi功能是否開啟

查看device/rockchip/rk2206/sdk_liteos/board/main.c 文件

是否調(diào)用ExternalTaskConfigNetwork();


3、確認(rèn)小凌派開發(fā)板與開發(fā)板在同一網(wǎng)段。

在修改以上配置后先編譯燒錄程序然后查看log確認(rèn)小凌派開發(fā)板獲取到的ip地址。

ea9fcc1e-e10b-11ec-b80f-dac502259ad0.png


再確認(rèn)pc的ip地址,在控制臺輸入ipconfig

eae9dbd8-e10b-11ec-b80f-dac502259ad0.png

可以看到兩個ip地址都是點2網(wǎng)段,說明已經(jīng)在同一局域網(wǎng)。


4、 修改wifi_udp 例程中服務(wù)地址及端口

#define OC_SERVER_IP "192.168.2.49" //需要連接服務(wù)端的ip地址

#define SERVER_PORT 6666

這個ip地址即PC的ip地址,修改后重新編譯燒錄程序。


5、pc上打開兩個網(wǎng)絡(luò)調(diào)試工具,一個用于連接小凌派udp客戶端,一個用于連接小凌派udp服務(wù)端,并設(shè)置ip地址和端口號。

ip地址都填本機ip地址,即前一步查詢到的IP地址如上圖所示。區(qū)別在于端口號,用于連接小凌派udp客戶端的端口號需要與前一步配置的(SERVER_PORT 6666)一致。

用于連接小凌派udp服務(wù)端的端口可以隨意填寫,不過要注意不要與常見的端口號沖突,如果有沖突就改成其他的。

ip地址:192.168.2.49

用于連接小凌派udp客戶端的端口號:6666

用于連接小凌派udp服務(wù)端的端口號:8888

eb105966-e10b-11ec-b80f-dac502259ad0.png


6、在pc網(wǎng)絡(luò)調(diào)試助手點擊啟動

eb5b6668-e10b-11ec-b80f-dac502259ad0.png


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

eb7c524c-e10b-11ec-b80f-dac502259ad0.png


可以看到小凌派udp客戶端的ip地址192.168.2.48和端口號65460,因為本次實驗客戶端沒有指定本地端口號這個端口號是自動生成的每次可能都不一樣。還有一個遠端端口號6666,這個遠端端口號就是我們網(wǎng)絡(luò)調(diào)試助手已配置的端口號。這時pc想與小凌派udp客戶端通信的關(guān)鍵三個信息都確定了。

小凌派udp服務(wù)端的ip地址192.168.2.48和端口號6666,這個類似tcp的服務(wù)端,監(jiān)聽6666端口的數(shù)據(jù)。


8、這時用于連接小凌派udp客戶端網(wǎng)絡(luò)調(diào)試工具就已經(jīng)收到開發(fā)板發(fā)送的數(shù)據(jù)如下圖

ebad888a-e10b-11ec-b80f-dac502259ad0.png


9、用網(wǎng)絡(luò)調(diào)試工具往小凌派udp客戶端發(fā)消息如下圖,可以看到開發(fā)板已經(jīng)收到數(shù)據(jù)。

ebd8f204-e10b-11ec-b80f-dac502259ad0.png


需要注意的是網(wǎng)絡(luò)調(diào)試工具發(fā)送消息的遠程主機需與開發(fā)板一致,本地主機端口號與開發(fā)板的遠端端口一致,否則開發(fā)板無法收到消息。如下圖

ec0f205e-e10b-11ec-b80f-dac502259ad0.png


10、往小凌派的udp服務(wù)端發(fā)送消息先填寫小凌派開發(fā)板的ip與端口號如下圖

ec4d1be8-e10b-11ec-b80f-dac502259ad0.png


再點發(fā)送消息如下圖

ec87b032-e10b-11ec-b80f-dac502259ad0.png

從上圖也可以看出小凌派udp 服務(wù)端接收到了網(wǎng)絡(luò)調(diào)試工具的消息并且打印了消息來源的ip地址和端口號,可以看出與我們網(wǎng)絡(luò)調(diào)試工具設(shè)置一致。


11、小凌派udp服務(wù)端監(jiān)聽的端口號是固定的,遠程端口號并沒限制,通過修改網(wǎng)絡(luò)調(diào)試工具的端口號再與小凌派udp服務(wù)端通信。如下圖把端口號改成9999再發(fā)送消息可以看出小凌派udp服務(wù)端接收打印的端口也隨之改變。

ecbfa604-e10b-11ec-b80f-dac502259ad0.png


12、發(fā)送字符集修改,細(xì)心的小伙伴應(yīng)該早就發(fā)現(xiàn)小凌派開發(fā)板數(shù)據(jù)接收顯示有些異常,主要原因是發(fā)送的字符集沒有改成utf-8造成的。在發(fā)送窗口右擊,字符集編碼選擇utf-8編碼。然后再發(fā)送數(shù)據(jù)。

ecf23272-e10b-11ec-b80f-dac502259ad0.png

ed6b562a-e10b-11ec-b80f-dac502259ad0.png


二、在使用小凌派開發(fā)板wifi-udp與虛擬機APP通信的步驟

這部分修改都是虛擬機app部分代碼沒特別說明以下修改都指修改虛擬機里的app文件

這部分具體代碼添加在后面。本人這里使用的虛擬機為deepin社區(qū)版20.5,gcc版本為8.3.0


1、查看虛擬機ip是否與小凌派在同一網(wǎng)段,如下圖ip為192.168.2.156 與小凌派在同一網(wǎng)段。

eda38c8e-e10b-11ec-b80f-dac502259ad0.png

2、修改 udp_cilent.c中的ip與端口號

#define SERVER_IP "192.168.2.48" //小凌派開發(fā)板的ip

#define SERVER_PORT 6666 //小凌派開發(fā)板udp服務(wù)端綁定的本地端口號


3、打開終端后進入 udp_cilent.c文件夾如下圖 我源文件放在主目錄下的work文件內(nèi)。并輸入gcc進行編譯

edf977ac-e10b-11ec-b80f-dac502259ad0.png


4、查看編譯文件ls -l udp_cilent*

ee497892-e10b-11ec-b80f-dac502259ad0.png

可以看到虛擬機里已生成了udp客戶端app了


5、因為前面在測試與網(wǎng)絡(luò)調(diào)試助手通信的時候小凌派開發(fā)板udp服務(wù)端已啟動了,所以這里直接在虛擬機終端里運行udp客戶端app。

如下圖,左邊為虛擬機udp客戶端log,右邊為小凌派log,可以看出虛擬機里的app 已經(jīng)與小凌派正常通信了。

ee7438ac-e10b-11ec-b80f-dac502259ad0.png

從上圖可以看出小凌派udp服務(wù)端接收到的消息ip與虛擬機的ip一致。



l虛擬機udp服務(wù)端app與客戶端類似,這里就不詳細(xì)說明,就強調(diào)一下不同的地方。

udp客戶端的端口號是連接時產(chǎn)生的所以需要客戶端先往服務(wù)端發(fā)送消息后,服務(wù)端解析出客戶端的端口號后才能與之通信。

l小凌派udp客戶端發(fā)送消息通過send()函數(shù)需要先設(shè)置遠端ip和端口號。虛擬機udp服務(wù)端想與小凌派開發(fā)板udp客戶端通信需要先修改小凌派里服務(wù)ip和端口,修改后重新編譯燒錄。如果想改成根據(jù)接收到不同ip的服務(wù)端消息,發(fā)送對應(yīng)的響應(yīng)消息。就需要把小凌派udp客戶端遠程ip改成htonl(INADDR_ANY),消息處理流程是先調(diào)用recvfrom()再調(diào)用sendto()。而虛擬機的服務(wù)端在bind()之后需要調(diào)用connect()設(shè)置目標(biāo)ip地址和端口號。再向目標(biāo)發(fā)送消息。

#define OC_SERVER_IP "192.168.2.156" //服務(wù)ip地址這里需要填虛擬機的ip

#define SERVER_PORT 6666

l虛擬機udp服務(wù)端先啟動,再復(fù)位開發(fā)板。等待通信log 如下圖

eeb6c0d2-e10b-11ec-b80f-dac502259ad0.png ?

三、接下來分析一下代碼的工作流程。

1、小凌派udp部分代碼

首先包含必要的頭文件


pYYBAGKV002AQYbsAABBGxqPKPE327.png



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

poYBAGKV01GAN_JCAAAczJpxz-A252.png


WifiLinkedInfo wifiinfo; //用于保存開發(fā)板本地ip



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

pYYBAGKV03uAQ14_AAEPy3v9WOM819.png


這部分是udp服務(wù)端接收消息處理

先進入recvfrom()會處于阻塞狀態(tài)沒有數(shù)據(jù)時一直阻塞

接收到pc客戶端的消息后通過sendto()發(fā)響應(yīng)消息給PC客戶端。

這里需要注意的是sendto()里的客戶端ip和端口信息來自于recvfrom()。

pYYBAGKV062AJkrjAADa8kpAHD4513.png


這部分是udp服務(wù)端任務(wù)代碼

服務(wù)端處理流程

socket-->bind--->recvfrom-->sendto-->lwip_close

先通過socket()接口打開一個服務(wù)端socket文件

然后設(shè)置需要綁定的服務(wù)端ip地址及端口號。

最后等待接收消息數(shù)據(jù)并發(fā)送響應(yīng)消息。

poYBAGKV07OAfNklAAEhWJ1_Yf8585.png


這部分是udp客戶端的接收消息處理函數(shù)

先連接pc機的服務(wù)端,這里連接只是獲取socket信息,然后解析出本地端口號。

接著發(fā)消息給服務(wù)端,這里不管連接與否。

發(fā)完消息進入阻塞接收消息。

當(dāng)接收到pc的消息后進入循環(huán)發(fā)送狀態(tài)。

pYYBAGKV1CSAALnvAAEBSWhJbmw528.png


這部分代碼是udp客戶端代碼

客戶端處理流程

socket-->connect-->send-->recvfrom-->lwip_close

先通過socket()接口創(chuàng)建客戶端的socket文件。

然后設(shè)置客戶端連接PC服務(wù)端的ip地址及端口號。

再進行connect連接。
pYYBAGKV1CqAK6mMAADnhl2xqfE055.png

這部分是udp創(chuàng)建客戶端和服務(wù)端任務(wù)

可以看到在創(chuàng)建客戶端和服務(wù)端任務(wù)前先阻塞判斷wifi的連接狀態(tài)。

只有wifi連接成功后才創(chuàng)建客戶端和服務(wù)端任務(wù)。

poYBAGKV1FCAY_jCAABrQFu7y2U245.png


這部分是創(chuàng)建wifi udp 通信任務(wù)主要是為了使用APP_FEATURE_INIT(wifi_udp_example);

這樣當(dāng)OpenHarmony初始化完成后會自動執(zhí)行此任務(wù)。

pYYBAGKV1FWAQQYNAACIb7rLn0U096.png



2、虛擬機udp app代碼

這部分代碼與開發(fā)板的類似就不詳細(xì)說明了。

2.1、 udp_client.c

poYBAGKV1JuAf2aNAAGSVVCtL4I884.png


2.2、 udp_server.c

pYYBAGKV1KCASL01AAHPFIpyTOo763.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5121

    瀏覽量

    98218
  • UDP通信
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    1956
  • RK2206
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    1836
  • 小凌派
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    1241
收藏 人收藏

    評論

    相關(guān)推薦

    Linux系統(tǒng)更換開機logo方法教程,觸覺智能RK3562開發(fā)板演示

    本文介紹Linux系統(tǒng)更換開機logo方法教程,通用RK3566、RK3568、RK3588、RK3576等開發(fā)板,觸覺智能
    的頭像 發(fā)表于 01-06 10:53 ?231次閱讀
    Linux系統(tǒng)更換開機logo方法教程,觸覺智能<b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>演示

    瑞芯微主板/開發(fā)板Linux系統(tǒng)播放音頻方法,觸覺智能RK3562開發(fā)板演示

    本文介紹瑞芯微方案主板/開發(fā)板Linux系統(tǒng)播放音頻的方法,觸覺智能RK3562開發(fā)板演示,通用RK3566、RK3568、
    的頭像 發(fā)表于 12-13 11:40 ?337次閱讀
    瑞芯微主板/<b class='flag-5'>開發(fā)板</b>Linux系統(tǒng)播放音頻方法,觸覺智能<b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>演示

    【迅為】瑞芯微RK3588開發(fā)板RK3568開發(fā)板區(qū)別及優(yōu)勢

    RK3568開發(fā)板
    的頭像 發(fā)表于 11-18 14:19 ?585次閱讀
    【迅為】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>區(qū)別及優(yōu)勢

    基于ALINX開發(fā)板Z19-P實現(xiàn)WIFI無線通信功能

    本教程基于 ALINX 開發(fā)板 Z19-P , 實現(xiàn) WIFI 無線通信的功能,WIFI 模塊使用 USB WIFIrtl8188cu。
    的頭像 發(fā)表于 11-11 10:44 ?354次閱讀
    基于ALINX<b class='flag-5'>開發(fā)板</b>Z19-P實現(xiàn)<b class='flag-5'>WIFI</b>無線<b class='flag-5'>通信</b>功能

    【「OpenHarmony開發(fā)與實踐 | 基于紅莓RK2206開發(fā)板」閱讀體驗】+初體驗1

    愛好者沒有bug,「OpenHarmony開發(fā)與實踐 | 基于紅莓RK2206開發(fā)板」大賣吧!哦對了 你們的開發(fā)板是怎么準(zhǔn)備的呢?【小
    發(fā)表于 09-18 18:30

    【「OpenHarmony開發(fā)與實踐 | 基于紅莓RK2206開發(fā)板」閱讀體驗】+初體驗2連發(fā)發(fā)

    啥也不說先上圖 對于《OpenHarmony開發(fā)與實踐 | 基于紅莓RK2206開發(fā)板》這本書的熱愛,簡直就像夏日里的一股清泉,讓人忍不住想要一探究竟! 這本書的排布,簡直就是一場視覺盛宴,章節(jié)
    發(fā)表于 09-18 18:01

    樹莓和arm開發(fā)板的區(qū)別

    樹莓(Raspberry Pi)和ARM開發(fā)板都是基于ARM架構(gòu)的微型計算機,但它們之間存在一些關(guān)鍵區(qū)別。 一、歷史背景 樹莓(Raspberry Pi) 樹莓是由英國樹莓
    的頭像 發(fā)表于 08-30 15:36 ?1227次閱讀

    linux開發(fā)板與樹莓的區(qū)別

    定義和用途 Linux開發(fā)板:Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式開發(fā)板,通常用于工業(yè)自動化、物聯(lián)網(wǎng)、智能家居等領(lǐng)域。 樹莓:樹莓
    的頭像 發(fā)表于 08-30 15:34 ?1141次閱讀

    RK3588!黑神話悟空,啟動?-迅為電子RK3588開發(fā)板

    RK3588!黑神話悟空,啟動?-迅為電子RK3588開發(fā)板
    的頭像 發(fā)表于 08-30 14:13 ?763次閱讀
    <b class='flag-5'>RK</b>3588!黑神話悟空,啟動?-迅為電子<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b>

    HZ-CORE-RK3576開發(fā)板

    HZ-CORE-RK3576開發(fā)板
    的頭像 發(fā)表于 08-29 13:58 ?396次閱讀
    HZ-CORE-<b class='flag-5'>RK</b>3576<b class='flag-5'>開發(fā)板</b>

    基于OpenHarmony輕量級操作系統(tǒng)實現(xiàn)RK2206 WiFi-AP模式通信開發(fā)案例

    實驗內(nèi)容本示例將演示如何在小-RK2206開發(fā)板上使用WiFi-AP模式(即將
    的頭像 發(fā)表于 08-08 08:23 ?501次閱讀
    基于OpenHarmony輕量級操作系統(tǒng)實現(xiàn)<b class='flag-5'>RK2206</b> <b class='flag-5'>WiFi</b>-AP模式<b class='flag-5'>通信</b><b class='flag-5'>開發(fā)</b>案例

    基于OpenHarmony輕量級操作系統(tǒng)實現(xiàn)RK2206 WiFi-AP模式通信開發(fā)案例

    實驗內(nèi)容 本示例將演示如何在小-RK2206開發(fā)板上使用WiFi-AP模式(即將
    發(fā)表于 08-07 15:50

    基于Openharmony輕量級操作系統(tǒng)的分布式數(shù)據(jù)管理開發(fā)案例

    實驗內(nèi)容本例程演示如何在小-RK2206開發(fā)板上使用OpenHarmony輕量級操作系統(tǒng)進行KvStore(即分布式數(shù)據(jù)管理)數(shù)據(jù)讀寫。
    的頭像 發(fā)表于 08-07 08:23 ?1065次閱讀
    基于Openharmony輕量級操作系統(tǒng)的分布式數(shù)據(jù)管理<b class='flag-5'>開發(fā)</b>案例

    RK3568開發(fā)板支持AMP雙系統(tǒng)

    RK3568開發(fā)板支持AMP雙系統(tǒng)
    的頭像 發(fā)表于 06-04 15:33 ?818次閱讀
    <b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>支持AMP雙系統(tǒng)

    stm32L152RCDISCOVER進行串口通信實驗接收亂碼怎么解決?

    使用stm32L152RCDISCOVER開發(fā)板進行串口通信實驗為什么接收亂碼
    發(fā)表于 03-11 07:56
    百家乐官网色子玩法| 张家口市| 手机百家乐的玩法技巧和规则| 玩百家乐官网平台| 大发888真钱娱乐下载| 百家乐单打| 百家乐官网博弈指| 嬴澳门百家乐官网的公式| 布尔津县| 澳门顶级赌场百家乐的玩法技巧和规则 | 在线百家乐安卓| 怎样玩百家乐官网的玩法技巧和规则 | 海王星国际| 东莞水果机遥控器| 百家乐娱乐注册就送| 带百家乐官网的时时彩平台| 桓仁| a8娱乐城线上娱乐| 郑州水果机遥控器| 自贡百家乐娱乐场开户注册| 开店做生意的风水| 什么百家乐官网九宫三路| 真人百家乐官网代理合作| 六合彩图库| 大发888葡京下载地址| 鸟巢百家乐的玩法技巧和规则| 玩百家乐官网怎么能赢呢| 哪个百家乐官网网站最大| 龙泉市| 皇冠网平台| bet365 uo15| 大发888大发888娱乐游戏| 太阳城菲律宾官方网| 大上海百家乐的玩法技巧和规则 | 利澳娱乐城注册| 大发888博彩娱乐城| 唐朝百家乐的玩法技巧和规则| 百家乐有什么打法| 百家乐官网开户| 奇迹百家乐官网的玩法技巧和规则 | 2024年九运|