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

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

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

【開鴻智谷NiobeU4開發(fā)板免費(fèi)試用體驗(yàn)】基于LWIP的TCP連接

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-17 10:37 ? 次閱讀

本文來源電子發(fā)燒友社區(qū),作者:大菠蘿Alpha, 帖子地址:https://bbs.elecfans.com/jishu_2307368_1_1.html


這個(gè)功能反反復(fù)復(fù)折騰了好幾天,多虧開鴻智谷原廠工程師支持。

一、目標(biāo)

基于LWIP,在NiobeU4開發(fā)板上部署TCP Client,連接測(cè)試服務(wù)器,獲取服務(wù)器發(fā)來的信息

二、設(shè)計(jì)實(shí)現(xiàn)

TS1.png

(一)TCP Server

Server直接在計(jì)算機(jī)上,用Python實(shí)現(xiàn)了個(gè)簡(jiǎn)單的,功能就是client連接上后,給其發(fā)送一段字符。

import socket

# 指定協(xié)議
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 讓端口可以重復(fù)使用
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 綁定ip和端口
server.bind(('0.0.0.0', 8080))
# 監(jiān)聽
server.listen(1)
# 等待消息
while1:
  clientsocket, address = server.accept()
  clientsocket.send(address[0].encode("utf-8")+b'HELLO world~')
  clientsocket.close()
server.close()

代碼比較簡(jiǎn)單,讀讀也清晰。

(二)TCP Client

TS.png

開發(fā)板端實(shí)現(xiàn)TCP Client功能即可,如上圖,首先創(chuàng)建socket,再connect server,然后send 數(shù)據(jù),最后close socket,一個(gè)典型的TCP Server-Client案例就好了,這次Client不發(fā)送而是接收(recv)信息,得益于OpenHarmony的LWIP協(xié)議棧,Client實(shí)現(xiàn)跟Linux編程毫無區(qū)別,具體代碼如下:

void wifi_test(void)
{
    int sock = -1;
    struct sockaddr_in client_addr;
    char recv_data[768] = {0};
    int recv_data_len;
    WifiConnect(WIFI_NAME, WIFI_PWD);
    while (1) {
        sock = socket(AF_INET, SOCK_STREAM, 0);
        if (sock < 0) {
            printf("Socket errorn");
            osDelay(OD_DELAY_100);
            continue;
        }
        memset_s(&(client_addr), sizeof(client_addr), 0, sizeof(client_addr));
        client_addr.sin_family = AF_INET;
        client_addr.sin_port = htons(SERVER_PORT);
        client_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
        printf("try connect to server "SERVER_IP" :%d n", SERVER_PORT);
        if (connect(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr)) == -1) {
            closesocket(sock);
            osDelay(OD_DELAY_1000);
            continue;
        }
        printf("Connect to tcp server successful!n");		
        while (1) {
            recv_data_len = recv(sock, recv_data, RECV_LEN, 0);
            if (recv_data_len <= 0) {
                break;
            } else {
                recv_data[recv_data_len] = '';
            }
            printf("recv: %sn", recv_data);
            write(sock, recv_data, recv_data_len);
        }
        close(sock);
	break;
    }
}

三、編譯燒錄

反正hb set,hb build -f一頓操作猛如虎,直接燒寫OHOS Img即可,其他的bootloader和partition因?yàn)闆]有變化,不必重新燒錄。
TS3.png

四、運(yùn)行

從系統(tǒng)log中,可以看出,NiobeU4板子啟動(dòng)后收到了Server發(fā)來的數(shù)據(jù),HELLO world~。

[20:07:45:841]<--System Init-->
[20:07:45:841]<--Wifi Init-->
[20:07:45:841]register wifi event succeed!
[20:07:45:841]I (161) wifi_init: WiFi RX IRAM OP enabled
[20:07:45:992]I (558) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
[20:07:45:992]I (2378) wifi:mode : 
[20:07:48:981]WaitScanResult:wait success[3]s
[20:07:48:981]starlink  
[20:07:48:981]
[20:07:49:835]sta (44:17:93:96:e6:34)
[20:07:49:835]I (2378) wifi:enable tsf
[20:07:49:835]I (6228) wifi:new:<8,0>, old:<1,0>, ap:<255,255>, sta:<8,0>, prof:1
[20:07:49:841]I (6228) wifi:state: init -> auth (b0)
[20:07:49:866]I (6238) wifi:state: auth -> assoc (0)
[20:07:49:866]I (6248) wifi:state: assoc -> run (10)
[20:07:49:866]I (6248) wifi:connected with starlink, aid = 6, channel 8, BW20, bssid = 3e:87:46:16:13:6e
[20:07:49:880]I (6248) wifi:security: Open Auth, phy: bgn, rssi: -50
[20:07:49:880]I (6callback function for wifi connect
[20:07:49:880]248) wifi:pm start, type: 1
[20:07:49:954]
[20:07:49:954]W (6268) wifi:idx:0 (ifx:0, 3e:87:46:16:13:6e), tid:0, ssn:0, winSize:64
[20:07:49:969]I (6348) wifi:AP's
[20:07:52:482]WaitConnectResult:wait success[1]s
[20:07:52:482]WiFi connect succeed!
[20:07:52:482]
[20:07:53:485]start wifi_test test
[20:07:53:485]try connect to server 192.168.43.159 :8080 
[20:07:53:485]Connect to tcp server successful!
[20:07:53:495]recv: 192.168.43.158HELLO world~
[20:07:53:505]try connect to server 192.168.43.159 :8080 
[20:07:53:505]Connect to tcp server successful!
[20:07:53:509]recv: 192.168.43.158HELLO world~
[20:07:53:523]try connect to server 192.168.43.159 :8080 
[20:07:53:523]Connect to tcp server successful!
[20:07:53:523]recv: 192.168.43.158HELLO world~

##感謝閱讀##

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

    關(guān)注

    2

    文章

    111

    瀏覽量

    1024
  • NiobeU4
    +關(guān)注

    關(guān)注

    3

    文章

    31

    瀏覽量

    488
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    亮相OpenHarmony開發(fā)者大會(huì),與生態(tài)共創(chuàng)開源新篇章!

    5月25日,以“心聚力智引未來”為主題的OpenHarmony開發(fā)者大會(huì)2024(以下簡(jiǎn)稱大會(huì))在深圳成功舉辦。獲得多項(xiàng)獎(jiǎng)項(xiàng)及授牌
    的頭像 發(fā)表于 05-26 08:30 ?447次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>亮相OpenHarmony<b class='flag-5'>開發(fā)</b>者大會(huì),與生態(tài)共創(chuàng)開源新篇章!

    榮獲鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商牌匾授牌

    出席現(xiàn)場(chǎng),并獲頒鴻蒙原生應(yīng)用開發(fā)及培訓(xùn)服務(wù)商稱號(hào)。圖/左4副總裁李傳釗
    的頭像 發(fā)表于 05-24 08:30 ?439次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>榮獲鴻蒙原生應(yīng)用<b class='flag-5'>開發(fā)</b>及培訓(xùn)服務(wù)商牌匾授牌

    電腦TCP客戶端連接開發(fā)板時(shí)LWIP出現(xiàn)錯(cuò)誤怎么解決?

    開發(fā)板使用的STM32F407,UCOSII+LWIP,開發(fā)板TCP服務(wù)器時(shí),用電腦作TCP客戶端連接
    發(fā)表于 05-09 06:38

    如何使用Vitis自帶的LWIP模板進(jìn)行PS端千兆以太網(wǎng)TCP通信?

    開發(fā)板有兩路千兆以太網(wǎng),通過RGMII接口連接,本實(shí)驗(yàn)演示如何使用Vitis自帶的LWIP模板進(jìn)行PS端千兆以太網(wǎng)TCP通信。
    的頭像 發(fā)表于 04-28 10:44 ?2082次閱讀
    如何使用Vitis自帶的<b class='flag-5'>LWIP</b>模板進(jìn)行PS端千兆以太網(wǎng)<b class='flag-5'>TCP</b>通信?

    lwip開發(fā)板聯(lián)網(wǎng)ping不通是怎么回事?

    求大佬幫助!eth外設(shè)的lwip功能聯(lián)網(wǎng)測(cè)試,發(fā)現(xiàn)電腦與開發(fā)版直連的時(shí)候通訊沒有問題,而且TCP和UDP測(cè)試沒有問題,但是電腦和開發(fā)版通過外部路由器
    發(fā)表于 04-03 06:51

    拓維信息及旗下同獲華為HarmonyOS開發(fā)服務(wù)商認(rèn)證

    近日,拓維信息及旗下雙雙通過華為HarmonyOS開發(fā)服務(wù)商認(rèn)證,成為華為“鴻蒙服務(wù)商先鋒計(jì)劃”認(rèn)證級(jí)伙伴。秉持共同發(fā)展、共創(chuàng)價(jià)值的合作理念,拓維信息、
    的頭像 發(fā)表于 03-29 08:13 ?254次閱讀
    拓維信息及旗下<b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>同獲華為HarmonyOS<b class='flag-5'>開發(fā)</b>服務(wù)商認(rèn)證

    與CSDN達(dá)成戰(zhàn)略合作,共建OpenHarmony人才計(jì)劃

    2024年3月19日,與中國(guó)專業(yè)開發(fā)者社區(qū)CSDN就共建OpenHarmony人才計(jì)劃達(dá)成戰(zhàn)略合作并舉辦發(fā)布儀式。
    的頭像 發(fā)表于 03-20 08:29 ?263次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>與CSDN達(dá)成戰(zhàn)略合作,共建OpenHarmony人才計(jì)劃

    與數(shù)城科技達(dá)成戰(zhàn)略合作

    12月21日,數(shù)城科技股份有限公司(以下簡(jiǎn)稱數(shù)城科技)董事長(zhǎng)杜潛一行到訪湖南開數(shù)字產(chǎn)業(yè)發(fā)展有限公司參觀交流(以下簡(jiǎn)稱),拓維信
    的頭像 發(fā)表于 12-22 08:30 ?889次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>與數(shù)城科技達(dá)成戰(zhàn)略合作

    亮相第十二屆中國(guó)互聯(lián)網(wǎng)測(cè)試開發(fā)大會(huì)

    11月25日,中國(guó)互聯(lián)網(wǎng)測(cè)試開發(fā)大會(huì)在深圳順利開啟,大會(huì)以“軟件質(zhì)量保障體系和測(cè)試研發(fā)技術(shù)交流”為主要目的,旨在為行業(yè)搭建一個(gè)深入探討和交流的橋梁和平臺(tái)。作為深耕OpenHar
    的頭像 發(fā)表于 11-28 08:29 ?513次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>亮相第十二屆中國(guó)互聯(lián)網(wǎng)測(cè)試<b class='flag-5'>開發(fā)</b>大會(huì)

    OpenHarmony開發(fā)板匯總

    NiobeU4(ESP32-U4WDH)輕量系統(tǒng):Niobe 407(STM32F407IGT6)輕量系統(tǒng):朗國(guó)IoT WiFi
    發(fā)表于 10-19 11:27

    輕量系統(tǒng):NiobeU4(ESP32-U4WDH)

    開發(fā)板名稱(芯片型號(hào)) NiobeU4(ESP32-U4WDH) 芯片架構(gòu) xtensa
    發(fā)表于 10-19 11:23

    輕量系統(tǒng):Niobe 407(STM32F407IGT6)

    開發(fā)板名稱(芯片型號(hào)) Niobe 407(STM32F407IGT6) 芯片架構(gòu) CST85F01 CPU頻率 介紹(字?jǐn)?shù)請(qǐng)控制在200字以內(nèi)) Niobe 407
    發(fā)表于 10-19 11:22

    OS設(shè)備開發(fā)實(shí)驗(yàn)箱通過OpenHarmony兼容性測(cè)評(píng)

    點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們 開源項(xiàng)目 OpenHarmony 是每個(gè)人的 OpenHarmony 近日,湖南開數(shù)字產(chǎn)業(yè)發(fā)展有限公司(以下簡(jiǎn)稱“
    的頭像 發(fā)表于 10-19 11:10 ?476次閱讀

    OS設(shè)備開發(fā)實(shí)驗(yàn)箱通過OpenHarmony兼容性測(cè)評(píng)

    ,實(shí)驗(yàn)箱還提供4個(gè)綜合智能場(chǎng)景,高校老師在教學(xué)時(shí)可自由組合多個(gè)案例模塊,開發(fā)更豐富、更有趣的互動(dòng)場(chǎng)景。 依托OpenHarmony
    發(fā)表于 10-19 10:14

    OS設(shè)備開發(fā)實(shí)驗(yàn)箱通過OpenHarmony兼容性測(cè)評(píng)

    近日,湖南開數(shù)字產(chǎn)業(yè)發(fā)展有限公司(以下簡(jiǎn)稱“”)面向高職高教的在OS設(shè)備
    的頭像 發(fā)表于 10-10 10:10 ?833次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>鴻</b>智<b class='flag-5'>谷</b>在<b class='flag-5'>鴻</b>OS設(shè)備<b class='flag-5'>開發(fā)</b>實(shí)驗(yàn)箱通過OpenHarmony兼容性測(cè)評(píng)