一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

用小凌派開發(fā)板wifi進(jìn)行udp通信的教程

海闊天空的專欄 ? 來(lái)源:凌智電子 ? 作者:凌智電子 ? 2022-05-31 16:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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


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

前面的步驟基本與之前發(fā)的tcp實(shí)驗(yàn)一致。

1、要確定pc機(jī)所連接路由的wifi名稱和密碼。通過(guò)修改代碼使小凌派連接到與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地址。

圖片


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

圖片

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

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

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

#define SERVER_PORT 6666

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


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

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

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

ip地址:192.168.2.49

用于連接小凌派udp客戶端的端口號(hào):6666

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

圖片


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

圖片


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

圖片


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

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


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

圖片


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

圖片


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

圖片


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

圖片


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

圖片

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


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

圖片


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

圖片

圖片


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

這部分修改都是虛擬機(jī)app部分代碼沒(méi)特別說(shuō)明以下修改都指修改虛擬機(jī)里的app文件

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


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

圖片

2、修改 udp_cilent.c中的ip與端口號(hào)

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

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


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

圖片


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

圖片

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


5、因?yàn)榍懊嬖跍y(cè)試與網(wǎng)絡(luò)調(diào)試助手通信的時(shí)候小凌派開發(fā)板udp服務(wù)端已啟動(dòng)了,所以這里直接在虛擬機(jī)終端里運(yùn)行udp客戶端app。

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

圖片

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



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

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

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

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

#define SERVER_PORT 6666

l虛擬機(jī)udp服務(wù)端先啟動(dòng),再?gòu)?fù)位開發(fā)板。等待通信log 如下圖

圖片

三、接下來(lái)分析一下代碼的工作流程。

1、小凌派udp部分代碼

首先包含必要的頭文件

pYYBAGKV002AQYbsAABBGxqPKPE327.png

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

poYBAGKV01GAN_JCAAAczJpxz-A252.png

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

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

pYYBAGKV03uAQ14_AAEPy3v9WOM819.png


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

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

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

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

pYYBAGKV062AJkrjAADa8kpAHD4513.png


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

服務(wù)端處理流程

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

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

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

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

poYBAGKV07OAfNklAAEhWJ1_Yf8585.png


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

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

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

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

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

pYYBAGKV1CSAALnvAAEBSWhJbmw528.png


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

客戶端處理流程

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

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

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

再進(jìn)行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初始化完成后會(huì)自動(dòng)執(zhí)行此任務(wù)。

pYYBAGKV1FWAQQYNAACIb7rLn0U096.png



2、虛擬機(jī)udp app代碼

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

2.1、 udp_client.c

poYBAGKV1JuAf2aNAAGSVVCtL4I884.png

2.2、 udp_server.c

pYYBAGKV1KCASL01AAHPFIpyTOo763.png

來(lái)源:凌智電子

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

    關(guān)注

    0

    文章

    21

    瀏覽量

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

    關(guān)注

    0

    文章

    28

    瀏覽量

    1433
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)

    開發(fā)過(guò)程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開發(fā)板使用串口與pc
    發(fā)表于 05-13 09:20

    每周精選 | 小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn),Markdown編輯器有獎(jiǎng)體驗(yàn)活動(dòng)

    開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開發(fā)板使用串口與pc通信還需要專門的串口轉(zhuǎn)換工具才行。而小
    發(fā)表于 05-13 10:25

    基于小RK2206開發(fā)板wifi-udp通信實(shí)驗(yàn)

    顯示,這些消息是不斷被覆蓋的,使用udp就高效的多。一、在使用小開發(fā)板wifi進(jìn)行
    發(fā)表于 05-31 10:12

    6410開發(fā)板使用導(dǎo)讀

    開發(fā)板出廠默認(rèn)燒寫系統(tǒng)是WINCE6.0系統(tǒng)。出廠的開發(fā)板WINCE6.0桌面上有一些應(yīng)用程序的快捷方式。WINCE6.0系統(tǒng)已經(jīng)校準(zhǔn)好觸摸屏,所以您可以直接
    發(fā)表于 02-28 15:12 ?22次下載
    飛<b class='flag-5'>凌</b>6410<b class='flag-5'>開發(fā)板</b>使用導(dǎo)讀

    如何移植OpenHarmony 3.0 到星空開發(fā)板

    的一款 gd32 開發(fā)板,板載 GD32F303ZET6 芯片,可直接替代 STM32F103 和 GD32F103 系列。 它支持 WiFi、4G、loRa 等物聯(lián)通信接口。板載 Flash
    的頭像 發(fā)表于 10-19 09:08 ?3170次閱讀
    如何移植OpenHarmony 3.0 到星空<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>上

    基于OpenHarmony系統(tǒng)和小RK2206開發(fā)板的避障小車

    這是一款基于OpenHarmony系統(tǒng)和小-RK2206開發(fā)板的避障小車。同時(shí),小車上搭載了超聲波測(cè)距模塊、舵機(jī)模塊、紅外尋跡模塊、直流電機(jī)模塊。
    的頭像 發(fā)表于 04-21 07:58 ?6123次閱讀

    基于小RK2206開發(fā)板所制作的簡(jiǎn)易示波器

    基于OpenHarmony + 小RK2206開發(fā)板制作的簡(jiǎn)易示波器,實(shí)時(shí)采集波形,實(shí)時(shí)計(jì)算并實(shí)時(shí)顯示對(duì)應(yīng)的波形。OpenHarmony實(shí)時(shí)性較高,穩(wěn)定性好,瑞芯微RK2206芯片接口豐富
    的頭像 發(fā)表于 05-06 17:09 ?2195次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>所制作的簡(jiǎn)易示波器

    利用小開發(fā)板自帶的wifi功能來(lái)進(jìn)行tcp通信的教程

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn) 在開發(fā)過(guò)程中想要與
    的頭像 發(fā)表于 05-13 15:05 ?3169次閱讀
    利用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>自帶的<b class='flag-5'>wifi</b>功能來(lái)<b class='flag-5'>進(jìn)行</b>tcp<b class='flag-5'>通信</b>的教程

    使用小開發(fā)板wifi進(jìn)行tcp通信的步驟

    開發(fā)過(guò)程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開發(fā)板使用串口與pc
    的頭像 發(fā)表于 05-16 09:35 ?2593次閱讀

    樹莓Pico開發(fā)板擴(kuò)展ESP01S無(wú)線WiFi模塊通信實(shí)踐

    介紹樹莓Pico開發(fā)板擴(kuò)展ESP01S無(wú)線模塊建立WiFi連接,并采用AT命令和MicroPython語(yǔ)言實(shí)現(xiàn)樹莓Pico與手機(jī)之間的WiFi
    發(fā)表于 05-31 15:59 ?3次下載
    樹莓<b class='flag-5'>派</b>Pico<b class='flag-5'>開發(fā)板</b>擴(kuò)展ESP01S無(wú)線<b class='flag-5'>WiFi</b>模塊<b class='flag-5'>通信</b>實(shí)踐

    基于小RK2206開發(fā)板wifi-udp通信實(shí)驗(yàn)

    顯示,這些消息是不斷被覆蓋的,使用udp就高效的多。一、在使用小開發(fā)板wifi進(jìn)行
    的頭像 發(fā)表于 06-01 10:33 ?1272次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b><b class='flag-5'>wifi-udp</b><b class='flag-5'>通信</b>實(shí)驗(yàn)

    -RK2206開發(fā)板:UART控制案例

    -RK2206開發(fā)板:UART控制案例一、簡(jiǎn)介通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART。它將要傳輸?shù)馁Y料在串行
    的頭像 發(fā)表于 06-14 11:12 ?1517次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-RK2206<b class='flag-5'>開發(fā)板</b>:UART控制案例

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)

    基于小RK2206開發(fā)板wifi-tcp通信實(shí)驗(yàn)在開發(fā)過(guò)程中想要與
    的頭像 發(fā)表于 06-14 11:10 ?2170次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b><b class='flag-5'>wifi</b>-tcp<b class='flag-5'>通信</b>實(shí)驗(yàn)

    HarmonyOS開發(fā)板隔空操作迪文COF智能屏

    這次有幸獲得小RK2206鴻蒙開發(fā)板試用,選擇的模塊是手勢(shì),通過(guò)官方例程,進(jìn)行了基礎(chǔ)的測(cè)試,非常順利。之后就想結(jié)合其他東西,多玩一玩。剛好之前有迪文的妍姐提供的迪文COF智能屏,做
    的頭像 發(fā)表于 06-14 11:09 ?1348次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>HarmonyOS<b class='flag-5'>開發(fā)板</b>隔空操作迪文COF智能屏

    基于小RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小-RK2206開發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GP
    的頭像 發(fā)表于 04-11 15:36 ?1209次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:OpenHarmony如何使用IoT接口控制GPIO外設(shè)