RM新时代网站-首页

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

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

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

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

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-05-16 09:35 ? 次閱讀

在開發(fā)過程中想要與開發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開發(fā)板使用串口與pc通信還需要專門的串口轉(zhuǎn)換工具才行,小凌派開發(fā)板自帶wifi功能。因此與pc通信時(shí)可以使用wifi功能進(jìn)行tcp通信這樣就不需要專門的轉(zhuǎn)換工具非常方便。

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

1、要確定pc機(jī)所連接路由的wifi名稱和密碼,通過修改代碼使小凌派連接到與pc同一網(wǎng)絡(luò)

修改文件device/rockchip/rk2206/sdk_liteos/board/src/config_network.c 中的SSID 即wifi名稱,和PASSWORD 即wifi密碼。

#define SSID          "凌智電子"#define PASSWORD        "********"

(左右移動(dòng)查看全部內(nèi)容)

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地址。

6aa1fc74-d4b0-11ec-bce3-dac502259ad0.png

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

6ad1b1f8-d4b0-11ec-bce3-dac502259ad0.png

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

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

#define OC_SERVER_IP  "192.168.2.49"#define SERVER_PORT   6666

(左右移動(dòng)查看全部內(nèi)容)


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

5、 pc上打開兩個(gè)網(wǎng)絡(luò)調(diào)試工具,一個(gè)客戶端和一個(gè)服務(wù)端,并設(shè)置ip地址和端口號:
服務(wù)端 ip地址:0.0.0.0
端口號:6666


客戶端ip地址:192.168.2.50 (之前查看到小凌派的ip地址)
端口號:6666

6b07a196-d4b0-11ec-bce3-dac502259ad0.png

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

6b4d6384-d4b0-11ec-bce3-dac502259ad0.png

可以看到客戶端連接地址192.168.2.49:6666 即pc的ip地址:服務(wù)端監(jiān)聽端口為6666,這表示小凌派tcp客戶端和服務(wù)端任務(wù)都已經(jīng)啟動(dòng)。

7、 在pc網(wǎng)絡(luò)調(diào)試助手點(diǎn)擊啟動(dòng)客戶端和服務(wù)端

6b7abe4c-d4b0-11ec-bce3-dac502259ad0.png

可以觀察到網(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ù)

6bc6f848-d4b0-11ec-bce3-dac502259ad0.png

可以查看log發(fā)現(xiàn)小凌派開發(fā)板已經(jīng)可以正常收發(fā)數(shù)據(jù)了,這樣就可以通過使用wifi與pc進(jìn)行通信。

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

首先包含必要的頭文件:

#include "ohos_init.h"#include "cmsis_os2.h"#include "los_task.h"#include "lz_hardware.h"#include "config_network.h"#include "lwip/tcp.h"#include "lwip/ip_addr.h"#include "lwip/priv/tcp_priv.h"#include "lwip/stats.h"#include "lwip/inet_chksum.h"

(左右移動(dòng)查看全部內(nèi)容)

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

#define LOG_TAG  "tcp"#define OC_SERVER_IP  "192.168.2.49"#define SERVER_PORT 6666#define BUFF_LEN  256

(左右移動(dòng)查看全部內(nèi)容)

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

int get_wifi_info(WifiLinkedInfo *info){  int ret = -1;  int gw, netmask;  memset(info, 0, sizeof(WifiLinkedInfo));  unsigned int retry = 15;  while (retry) {    if (GetLinkedInfo(info) == WIFI_SUCCESS) {      if (info->connState == WIFI_CONNECTED) {        if (info->ipAddress != 0) {          LZ_HARDWARE_LOGD(LOG_TAG, "rknetwork IP (%s)", inet_ntoa(info->ipAddress));          if (WIFI_SUCCESS == GetLocalWifiGw(&gw)) {            LZ_HARDWARE_LOGD(LOG_TAG, "network GW (%s)", inet_ntoa(gw));          }          if (WIFI_SUCCESS == GetLocalWifiNetmask(&netmask)) {            LZ_HARDWARE_LOGD(LOG_TAG, "network NETMASK (%s)", inet_ntoa(netmask));          }          if (WIFI_SUCCESS == SetLocalWifiGw()) {            LZ_HARDWARE_LOGD(LOG_TAG, "set network GW");          }          if (WIFI_SUCCESS == GetLocalWifiGw(&gw)) {            LZ_HARDWARE_LOGD(LOG_TAG, "network GW (%s)", inet_ntoa(gw));          }          if (WIFI_SUCCESS == GetLocalWifiNetmask(&netmask)) {            LZ_HARDWARE_LOGD(LOG_TAG, "network NETMASK (%s)", inet_ntoa(netmask));          }          ret = 0;          goto connect_done;        }      }    }    LOS_Msleep(1000);    retry--;  }
connect_done:  return ret;}

(左右移動(dòng)查看全部內(nèi)容)

這部分是tcp服務(wù)端接收消息處理,先進(jìn)入accept()會處于阻塞狀態(tài),即沒有客戶端連接時(shí)一直阻塞。單客戶端連接后又進(jìn)入接收數(shù)據(jù)狀態(tài),此狀態(tài)也是阻塞狀態(tài)。

沒有數(shù)據(jù)時(shí)一直阻塞,不過需要注意的是在此狀態(tài)下當(dāng)客戶端斷開連接時(shí)recv會返回-1,接收到pc客戶端的消息后通過send()發(fā)響應(yīng)消息給PC客戶端。

void tcp_server_msg_handle(int fd){  char buf[BUFF_LEN]; //接收緩沖區(qū)  socklen_t client_addr_len;  int cnt = 0, count;  int client_fd;  struct sockaddr_in client_addr = {0};    printf("waitting for client connect...
");  /* 監(jiān)聽socket 此處會阻塞 */  client_fd = accept(fd, (struct sockaddr*)&client_addr, &client_addr_len);  // client_fd = lwip_accept(fd, (struct sockaddr*)&client_addr, &client_addr_len);  printf("[tcp server] accept <%s:%d>
", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));  while (1)  {    memset(buf, 0, BUFF_LEN);    printf("-------------------------------------------------------
");    printf("[tcp server] waitting client msg
");    count = recv(client_fd, buf, BUFF_LEN, 0);    //read是阻塞函數(shù),沒有數(shù)據(jù)就一直阻塞    // count = lwip_read(client_fd, buf, BUFF_LEN); //read是阻塞函數(shù),沒有數(shù)據(jù)就一直阻塞    if (count == -1)    {      printf("[tcp server] recieve data fail!
");      LOS_Msleep(3000);      break;    }    printf("[tcp server] rev client msg:%s
", buf);    memset(buf, 0, BUFF_LEN);    sprintf(buf, "I have recieved %d bytes data! recieved cnt:%d", count, ++cnt);    printf("[tcp server] send msg:%s
", buf);    send(client_fd, buf, strlen(buf), 0);    //發(fā)送信息給client    // lwip_write(client_fd, buf, strlen(buf)); //發(fā)送信息給client  }  lwip_close(client_fd);  lwip_close(fd);}

(左右移動(dòng)查看全部內(nèi)容)

這部分是tcp服務(wù)端任務(wù)代碼,服務(wù)端處理流程

socket-->bind-->listen-->accept-->recv-->send-->lwip_close

先通過socket()接口打開一個(gè)服務(wù)端socket文件,然后設(shè)置需要綁定的服務(wù)端ip地址及端口號。在進(jìn)行監(jiān)聽,需要注意的是此處監(jiān)聽不會處于阻塞態(tài)。

int wifi_server(void* arg){  int server_fd, ret;
  while(1)  {    server_fd = socket(AF_INET, SOCK_STREAM, 0);     //AF_INET:ipv4;SOCK_STREAM:TCP    // server_fd = lwip_socket(AF_INET, SOCK_STREAM, 0); //AF_INET:IPV4;SOCK_STREAM:TCP    if (server_fd < 0)    {      printf("create socket fail!
");      return -1;    }
    /*設(shè)置調(diào)用close(socket)后,仍可繼續(xù)重用該socket。調(diào)用close(socket)一般不會立即關(guān)閉socket,而經(jīng)歷TIME_WAIT的過程。*/    int flag = 1;    ret = setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int));    if (ret != 0) {      printf("[CommInitTcpServer]setsockopt fail, ret[%d]!
", ret);    }        struct sockaddr_in serv_addr = {0};    serv_addr.sin_family = AF_INET;    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); //IP地址,需要進(jìn)行網(wǎng)絡(luò)序轉(zhuǎn)換,INADDR_ANY:本地地址    // serv_addr.sin_addr.s_addr = inet_addr(OC_SERVER_IP); //IP地址,需要進(jìn)行網(wǎng)絡(luò)序轉(zhuǎn)換,INADDR_ANY:本地地址    serv_addr.sin_port = htons(SERVER_PORT);    //端口號,需要網(wǎng)絡(luò)序轉(zhuǎn)換    /* 綁定服務(wù)器地址結(jié)構(gòu) */    ret = bind(server_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));    // ret = lwip_bind(server_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));    if (ret < 0)    {      printf("socket bind fail!
");      lwip_close(server_fd);      return -1;    }    /* 監(jiān)聽socket 此處不阻塞 */    ret = listen(server_fd, 64);    // ret = lwip_listen(server_fd, 64);    if(ret != 0)    {      printf("socket listen fail!
");      lwip_close(server_fd);      return -1;    }    printf("[tcp server] listen:%d<%s:%d>
",server_fd, inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));    tcp_server_msg_handle(server_fd);  //處理接收到的數(shù)據(jù)    LOS_Msleep(1000);  }}

(左右移動(dòng)查看全部內(nèi)容)

這部分是tcp客戶端的接收消息處理函數(shù),先進(jìn)行嘗試連接pc機(jī)的服務(wù)端,如果失敗則延遲5秒后重新連接直到連接成功。

連接成功后先發(fā)消息給PC的服務(wù)端,然后進(jìn)入接收狀態(tài),此狀態(tài)是阻塞態(tài)。當(dāng)接收到pc的消息后進(jìn)入循環(huán)發(fā)送狀態(tài)。

void tcp_client_msg_handle(int fd, struct sockaddr* dst){  socklen_t len = sizeof(*dst);
  int cnt = 0, count = 0;  while (connect(fd, dst, len) < 0)  {    printf("connect server faiLED...%d
", ++count);    lwip_close(fd);    LOS_Msleep(5000);    fd = socket(AF_INET, SOCK_STREAM, 0); //AF_INET:IPV4;SOCK_STREAM:TCP  }    while (1)  {    char buf[BUFF_LEN];    sprintf(buf, "TCP TEST cilent send:%d", ++cnt);    count = send(fd, buf, strlen(buf), 0);           //發(fā)送數(shù)據(jù)給server    // count = lwip_write(fd, buf, strlen(buf));          //發(fā)送數(shù)據(jù)給server    printf("------------------------------------------------------------
");    printf("[tcp client] send:%s
", buf);    printf("[tcp client] client sendto msg to server %d,waitting server respond msg!!!
", count);    memset(buf, 0, BUFF_LEN);    count = recv(fd, buf, BUFF_LEN, 0);    //接收來自server的信息    // count = lwip_read(fd, buf, BUFF_LEN);   //接收來自server的信息    if(count == -1)    {      printf("[tcp client] recieve data fail!
");      LOS_Msleep(3000);      break;    }    printf("[tcp client] rev:%s
", buf);  }  lwip_close(fd);}

(左右移動(dòng)查看全部內(nèi)容)

這部分代碼是tcp客戶端代碼,客戶端處理流程:socket-->connect-->send-->recv-->lwip_close

先通過socket()接口創(chuàng)建客戶端的socket文件。然后設(shè)置客戶端連接PC服務(wù)端的ip地址及端口號。在進(jìn)行connect連接。

int wifi_client(void* arg){  int client_fd, ret;  struct sockaddr_in serv_addr;    while(1)  {    client_fd = socket(AF_INET, SOCK_STREAM, 0);//AF_INET:IPV4;SOCK_STREAM:TCP    if (client_fd < 0)    {      printf("create socket fail!
");      return -1;    }
    /*設(shè)置調(diào)用close(socket)后,仍可繼續(xù)重用該socket。調(diào)用close(socket)一般不會立即關(guān)閉socket,而經(jīng)歷TIME_WAIT的過程。*/    int flag = 1;    ret = setsockopt(client_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int));    if (ret != 0) {      printf("[CommInitTcpServer]setsockopt fail, ret[%d]!
", ret);    }        memset(&serv_addr, 0, sizeof(serv_addr));    serv_addr.sin_family = AF_INET;    serv_addr.sin_addr.s_addr = inet_addr(OC_SERVER_IP);    serv_addr.sin_port = htons(SERVER_PORT);    printf("[tcp client] connect:%d<%s:%d>
",client_fd, inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));            tcp_client_msg_handle(client_fd, (struct sockaddr*)&serv_addr);        LOS_Msleep(1000);  }
  return 0;}

(左右移動(dòng)查看全部內(nèi)容)

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

void wifi_process(void *args){  unsigned int threadID_client, threadID_server;  unsigned int ret = LOS_OK;    WifiLinkedInfo info;
  while(get_wifi_info(&info) != 0) ;
  CreateThread(&threadID_client, wifi_client, NULL, "client@ process");  CreateThread(&threadID_server, wifi_server, NULL, "server@ process");}

(左右移動(dòng)查看全部內(nèi)容)

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

void wifi_tcp_example(void){  unsigned int ret = LOS_OK;  unsigned int thread_id;  TSK_INIT_PARAM_S task = {0};  printf("%s start ....
", __FUNCTION__);
  task.pfnTaskEntry = (TSK_ENTRY_FUNC)wifi_process;  task.uwStackSize = 10240;  task.pcName = "wifi_process";  task.usTaskPrio = 24;  ret = LOS_TaskCreate(&thread_id, &task);  if (ret != LOS_OK)  {    printf("Falied to create wifi_process ret:0x%x
", ret);    return;  }}APP_FEATURE_INIT(wifi_tcp_example);

(左右移動(dòng)查看全部內(nèi)容)

原文標(biāo)題:基于小凌派RK2206鴻蒙開發(fā)板wifi-tcp通信實(shí)驗(yàn)

文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    81

    文章

    5296

    瀏覽量

    203569
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4221

原文標(biāo)題:基于小凌派RK2206鴻蒙開發(fā)板wifi-tcp通信實(shí)驗(yàn)

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

    需要專門的轉(zhuǎn)換工具非常方便。一、在使用小開發(fā)板wifi進(jìn)行tcp
    發(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ā)板試用體驗(yàn)】小手勢應(yīng)用之原力控制星球大戰(zhàn)BB-8機(jī)器人

    在上一篇文章中,我分享了 小隔空操作迪文COF智能屏 ,這次再給大家分享一個(gè)更有趣的智能手勢應(yīng)用----小RK2206開發(fā)板賦予你原
    發(fā)表于 05-24 10:56

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

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

    如何在小RK2206開發(fā)板上使用wifi進(jìn)行tcp通信

    文件,指定 b7_wifi_tcp 參與編譯。"b7_wifi_tcp",在主目錄下輸入編譯命令。hb build -f運(yùn)行結(jié)果示例代碼編譯燒錄代碼后,按下開發(fā)板的RESET按鍵
    發(fā)表于 08-12 16:50

    基于開發(fā)板的FastDeploy適配

    )目前,我已將FastDeploy適配到開發(fā)板上,可用于目標(biāo)檢測、人臉檢測、人臉識別、人臉對齊、圖像分割、OCR等領(lǐng)域,這將大大提高
    發(fā)表于 02-16 09:43

    NXP iMX6ULL開發(fā)板WIFI接口功能測試

    : iMX6ULL開發(fā)板上電,啟動(dòng)Linux系統(tǒng)。 步驟2: 連接USB?WIFI到飛iMX6ULL開發(fā)板的USB Host接口
    的頭像 發(fā)表于 05-05 17:02 ?2421次閱讀

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

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

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

    與pc通信時(shí)可以使用wifi功能進(jìn)行tcp通信這樣就不需要專門的轉(zhuǎn)換工具非常方便。 一、在使用小
    的頭像 發(fā)表于 05-13 15:05 ?2729次閱讀
    利用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>自帶的<b class='flag-5'>wifi</b>功能來<b class='flag-5'>進(jìn)行</b><b class='flag-5'>tcp</b><b class='flag-5'>通信</b>的教程

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

    顯示,這些消息是不斷被覆蓋的,使用udp就高效的多。 ? 一、在使用小開發(fā)板wifi進(jìn)行udp通信
    的頭像 發(fā)表于 05-31 16:43 ?3412次閱讀
    用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>wifi</b><b class='flag-5'>進(jìn)行</b>udp<b class='flag-5'>通信</b>的教程

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

    介紹樹莓Pico開發(fā)板擴(kuò)展ESP01S無線模塊建立WiFi連接,并采用AT命令和MicroPython語言實(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無線<b class='flag-5'>WiFi</b>模塊<b class='flag-5'>通信</b>實(shí)踐

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

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

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

    -RK2206開發(fā)板:UART控制案例一、簡介通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART。它將要傳輸?shù)馁Y料在串行
    的頭像 發(fā)表于 06-14 11:12 ?1033次閱讀
    小<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)

    與pc通信時(shí)可以使用wifi功能進(jìn)行tcp通信這樣就不需要專門的轉(zhuǎn)換工具非常方便。一、在使用小
    的頭像 發(fā)表于 06-14 11:10 ?1302次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b><b class='flag-5'>wifi-tcp</b><b class='flag-5'>通信</b>實(shí)驗(yàn)

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

    實(shí)驗(yàn)內(nèi)容本示例將演示如何在小-RK2206開發(fā)板上使用WiFi-AP模式(即將RK2206作為WiFi路由器),實(shí)現(xiàn)與PC端
    的頭像 發(fā)表于 08-08 08:23 ?415次閱讀
    基于OpenHarmony輕量級操作系統(tǒng)實(shí)現(xiàn)RK2206 <b class='flag-5'>WiFi</b>-AP模式<b class='flag-5'>通信</b><b class='flag-5'>開發(fā)</b>案例
    RM新时代网站-首页