<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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


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

前面的步驟基本與之前發的tcp實驗一致。

1、要確定pc機所連接路由的wifi名稱和密碼。通過修改代碼使小凌派連接到與pc同一網絡。

修改文件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 文件

是否調用ExternalTaskConfigNetwork();


3、確認小凌派開發板與開發板在同一網段。

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

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


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

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

可以看到兩個ip地址都是點2網段,說明已經在同一局域網。


4、 修改wifi_udp 例程中服務地址及端口

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

#define SERVER_PORT 6666

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


5、pc上打開兩個網絡調試工具,一個用于連接小凌派udp客戶端,一個用于連接小凌派udp服務端,并設置ip地址和端口號。

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

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

ip地址:192.168.2.49

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

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

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


6、在pc網絡調試助手點擊啟動

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


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

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


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

小凌派udp服務端的ip地址192.168.2.48和端口號6666,這個類似tcp的服務端,監聽6666端口的數據。


8、這時用于連接小凌派udp客戶端網絡調試工具就已經收到開發板發送的數據如下圖

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


9、用網絡調試工具往小凌派udp客戶端發消息如下圖,可以看到開發板已經收到數據。

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


需要注意的是網絡調試工具發送消息的遠程主機需與開發板一致,本地主機端口號與開發板的遠端端口一致,否則開發板無法收到消息。如下圖

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


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

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


再點發送消息如下圖

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

從上圖也可以看出小凌派udp 服務端接收到了網絡調試工具的消息并且打印了消息來源的ip地址和端口號,可以看出與我們網絡調試工具設置一致。


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

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


12、發送字符集修改,細心的小伙伴應該早就發現小凌派開發板數據接收顯示有些異常,主要原因是發送的字符集沒有改成utf-8造成的。在發送窗口右擊,字符集編碼選擇utf-8編碼。然后再發送數據。

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

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


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

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

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


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

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

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

#define SERVER_IP "192.168.2.48" //小凌派開發板的ip

#define SERVER_PORT 6666 //小凌派開發板udp服務端綁定的本地端口號


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

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


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

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

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


5、因為前面在測試與網絡調試助手通信的時候小凌派開發板udp服務端已啟動了,所以這里直接在虛擬機終端里運行udp客戶端app。

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

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

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



l虛擬機udp服務端app與客戶端類似,這里就不詳細說明,就強調一下不同的地方。

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

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

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

#define SERVER_PORT 6666

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

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

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

1、小凌派udp部分代碼

首先包含必要的頭文件


pYYBAGKV002AQYbsAABBGxqPKPE327.png



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

poYBAGKV01GAN_JCAAAczJpxz-A252.png


WifiLinkedInfo wifiinfo; //用于保存開發板本地ip



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

pYYBAGKV03uAQ14_AAEPy3v9WOM819.png


這部分是udp服務端接收消息處理

先進入recvfrom()會處于阻塞狀態沒有數據時一直阻塞

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

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

pYYBAGKV062AJkrjAADa8kpAHD4513.png


這部分是udp服務端任務代碼

服務端處理流程

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

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

然后設置需要綁定的服務端ip地址及端口號。

最后等待接收消息數據并發送響應消息。

poYBAGKV07OAfNklAAEhWJ1_Yf8585.png


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

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

接著發消息給服務端,這里不管連接與否。

發完消息進入阻塞接收消息。

當接收到pc的消息后進入循環發送狀態。

pYYBAGKV1CSAALnvAAEBSWhJbmw528.png


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

客戶端處理流程

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

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

然后設置客戶端連接PC服務端的ip地址及端口號。

再進行connect連接。
pYYBAGKV1CqAK6mMAADnhl2xqfE055.png

這部分是udp創建客戶端和服務端任務

可以看到在創建客戶端和服務端任務前先阻塞判斷wifi的連接狀態。

只有wifi連接成功后才創建客戶端和服務端任務。

poYBAGKV1FCAY_jCAABrQFu7y2U245.png


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

這樣當OpenHarmony初始化完成后會自動執行此任務。

pYYBAGKV1FWAQQYNAACIb7rLn0U096.png



2、虛擬機udp app代碼

這部分代碼與開發板的類似就不詳細說明了。

2.1、 udp_client.c

poYBAGKV1JuAf2aNAAGSVVCtL4I884.png


2.2、 udp_server.c

pYYBAGKV1KCASL01AAHPFIpyTOo763.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    4554

    瀏覽量

    94788
  • UDP通信
    +關注

    關注

    0

    文章

    21

    瀏覽量

    1848
  • RK2206
    +關注

    關注

    0

    文章

    34

    瀏覽量

    1658
  • 小凌派
    +關注

    關注

    0

    文章

    27

    瀏覽量

    1146
收藏 人收藏

    評論

    相關推薦

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

    使用stm32L152RCDISCOVER開發板進行串口通信實驗為什么接收亂碼
    發表于 03-11 07:56

    飛騰開發板評測獲獎名單公布?。?!

    恭喜以上小伙伴!經過飛騰專家評選,前三名小伙伴可保留飛騰開發板,其余小伙伴需退回開發板,有問題請微信聯系工作人員(微信號:elecfans123) 飛騰
    發表于 01-30 17:02

    【飛騰4G版免費試用】飛騰4G版開發板套裝測試及環境搭建

    先簡單介紹一下這款飛騰4G版開發板套裝; 飛騰是由中電港螢火工場研發的一款面向行業工程師、學生和愛好者的開源硬件。主板處理器采用飛騰嵌入式四核處理器,兼容ARM V8架構,包含2個FTC664核
    發表于 01-22 00:47

    【飛騰4G版免費試用】飛騰開發板運行Ubuntu系統

    飛騰4G版開發板是一款做工精細,布線合理的開發板,今天給大家介紹一下如何運行Ubuntu系統,下面是網上的資料,幫助大家快速認識飛騰4G版開發板
    發表于 01-08 22:40

    【飛騰4G版免費試用】大家來了解飛騰4G版開發板

    今天把收到的飛騰4G版開發板做各視頻,讓大家直觀的了解一下做工精細,布線合理,做工扎實的飛騰4G版開發板。 關于飛騰: 飛騰信息技術有限公司是國內領先的自主核心芯片提供商,致力于飛
    發表于 01-02 22:43

    【飛騰4G版免費試用】初步認識飛騰4G版開發板

    這幾天收到飛騰 4G 基礎套件,給大家做個介紹,讓大家可以了解一下這塊開發板, 飛騰 4G 基礎套件單板+電源+風扇 開源開發板 支持Ubuntu SylixOS OpenKyli
    發表于 01-02 22:23

    【飛 OK113i-C 全志T113-i開發板WiFi和以太網絡的使用

    WiFi和以太網絡的使用飛這塊t113-t開發板,板載了一塊WiFi+藍牙的模塊,以及千兆一臺網絡,出廠已經支持了WiFi驅動,且在之前的
    發表于 12-27 09:57

    基于Labview的遠程虛擬通信實驗開發

    電子發燒友網站提供《基于Labview的遠程虛擬通信實驗開發.pdf》資料免費下載
    發表于 10-23 10:41 ?1次下載
    基于Labview的遠程虛擬<b class='flag-5'>通信實驗</b>室<b class='flag-5'>開發</b>

    【悟空H3開發板免費體驗】悟空H3開發板

    悟空H3開發版是一款由悟空派團隊開發的基于RISC-V架構的開發板。該開發板采用了SiFive U74-HiFive Unleashed
    發表于 09-19 10:04

    Windows搭建OpenHarmony編譯環境

    對OpenHarmony編譯呢?答案是:可以。所以,我們今天來嘗試在Windows環境下搭建OpenHarmony編譯環境。 本次OpenHarmony選用小-RK2206開發板
    發表于 08-16 16:07

    串口通信實驗資料分享

    串口通信實驗資料分享
    發表于 06-29 15:03 ?5次下載

    好書推薦|《OpenHarmony嵌入式操作原理與應用》

    操作系統的原理與開發過程有更深刻的了解。 本書基于已經通過開放原子開源基金會XTS認證的小RK2206開發套件,書中所有的電路、程序和
    發表于 06-27 23:12

    《OpenHarmony嵌入式系統原理與應用——基于RK2206芯片(微課視頻版)》學習記錄1 環境配置與源碼編譯

    、arm-linux-gnueabi-gcc等。 可使用vscode/eclipse/vim等進行代碼的閱讀與開發 配置rk2206開發板的IP地址和SSH連接:在使用Eclipse進行遠程
    發表于 06-25 11:26

    《OpenHarmony嵌入式系統原理與應用——基于RK2206芯片(微課視頻版)》學習記錄之一

    非常感謝電子發燒友論壇提供這次《《OpenHarmony嵌入式系統原理與應用——基于RK2206芯片(微課視頻版)》學習機會。 下面記錄一下書中實驗需要注意的一些細節。 1、安裝hb后,執行hb
    發表于 06-15 14:10

    基于小RK2206的智教助教—智能控制教學教室的探索先鋒

    的教育形式和現代化教學手段,給教育行業帶來了新的機遇。2、 項目簡介2.1 項目描述這是一款基于OpenHarmony的智慧教室系統。我們的主控采用小RK2206開發板,系統由3節
    發表于 06-06 15:15
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>