同步操作将从 hihopeorg/HarmonyOS-IoT-Application-Development 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
netcat是一个非常强大的网络实用工具,可以用它来调试TCP/UDP应用程序;
Linux上可以使用发行版的包管理器安装,例如Debian/Ubuntu上:
sudo apt-get install netcat
Windows上,MobaXterm工具上也可以用 apt-get install netcat
安装;
开始之前,先简单介绍一下 netcat 的几种用法:
netcat -l 5678
,会启动一个TCP服务器,监听5678
端口,你可以换成其他端口;netcat localhost 5678
, localhost
是目标主机参数,可以换成其他你想要连接的主机(主机名、IP地址、域名都可以),5678
是端口;
netcat -u -l 6789
, 没错,只需要加一个-u
参数,就可以启动一个UDP服务端;netcat -u localhost 6789
,
A Lightweight TCP/IP stack 一个轻量级的TCP/IP协议栈
详细介绍请参考LwIP项目官网:https://savannah.nongnu.org/projects/lwip/
目前,openharmony源码树有两份LwIP:
建议将本教程的源码下载到鸿蒙源码树的顶层目录,即和applications
、build
等目录平级的地方:
git clone https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development.git
文件:
文件名 | 说明 |
---|---|
BUILD.gn | 鸿蒙构建脚本,支持Hi3861、Hi3518、Hi3516开发板 |
demo_entry_cmsis.c | 鸿蒙liteos-m程序入口,支持Hi3861 |
demo_entry_posix.c | 鸿蒙liteos-a和Unix系统程序入口,Hi3516、Hi3518、PC |
Makefile | Unix系统构建脚本,支持Linux/Mac OS |
net_common.h | 系统网络接口头文件 |
net_demo.h | demo脚手架头文件 |
net_params.h | 网络参数,包括WiFi热点信息,服务器IP、端口信息 |
tcp_client_test.c | TCP客户端 |
tcp_server_test.c | TCP服务端 |
udp_client_test.c | UDP客户端 |
udp_server_test.c | UDP服务端 |
wifi_connecter.c | 鸿蒙WiFi STA模式API的封装实现文件,比鸿蒙原始接口更容易使用 |
wifi_connecter.h | 鸿蒙WiFi STA模式API的封装头文件,比鸿蒙原始接口更容易使用 |
使用如下命令进行编译:
make
编译测试程序,该命令会生成4个可执行文件和几个.o文件make clean
删除可执行程序和.o文件Linux系统可以在同一台机器上,使用多个终端进行测试;
netcat -l 5678
;./tcp_client_test 5678 127.0.0.1
;Hello
,输入World
并回车,World
将会发送到测试程序所在终端;./tcp_server_test 5678
;netcat 127.0.0.1 5678
;Hello
并回车,终端应该会再输出一行Hello
,后面一行是TCP服务端测试程序发送回来的,同时终端上会有相关打印;netcat -u -l 5678
;./udp_client_test 5678 127.0.0.1
;Hello.
,输入World
并回车,World
将会发送到测试程序所在终端;./udp_server_test 5678
;netcat -u 127.0.0.1 5678
;Hello.
并回车,终端应该会再输出一行Hello.
,后面一行是UDP服务端测试程序是发送回来的,同时终端上会有相关打印;在Hi3861开发板上运行上述四个测试程序之前,需要先准备网络环境:
在Hi3861开发板上运行上述四个测试程序之前,需要根据你的无线路由、Linux系统IP修改net_params.h
文件的相关代码:
在Hi3861开发板上运行上述四个测试程序,需要分别编译、烧录程序;
BUILD.gn
代码,取消你想要执行的测试程序的注释:
sources = ["tcp_client_test.c"]
的注释,保留其余三行的sources
注释;sources = ["tcp_server_test.c"]
的注释,保留其余三行的sources
注释;sources = ["udp_client_test.c"]
的注释,保留其余三行的sources
注释;sources = ["udp_server_test.c"]
的注释,保留其余三行的sources
注释;build/lite/product/wifiiot.json
:
"//applications/sample/wifi-iot/app"
替换为:"//HarmonyOS-IoT-Application-Development:app"
python build.py wifiiot
进行编译;Hi3861开发板上运行测试程序的操作流程和Linux上大体相同,只是Linux终端执行测试程序变成了——开发板复位后自动运行;
netcat -l 5678
;Hello
,输入World
并回车,World
将会发送到开发板上,同时开发板的串口会有相关打印;sources = ["tcp_server_test.c"]
的注释,保留其他三行的注释,重新编译、烧录到开发板上;5678
端口;
netcat board_ip 5678
,其中board_ip
是开发板的IP地址;Hello
并回车,终端应该会再输出一行Hello
,后面一行是开发板上TCP服务端序发送回来的,同时开发板的串口会有相关打印;sources = ["udp_client_test.c"]
的注释,保留其他三行的注释,重新编译、烧录到开发板上;netcat -u -l 5678
;Hello.
,输入World
并回车,World
将会发送到开发板上,同时开发板的串口会有相关打印;sources = ["udp_server_test.c"]
的注释,保留其他三行的注释,重新编译、烧录到开发板上;5678
端口;netcat -u 127.0.0.1 5678
;Hello.
并回车,终端应该会再输出一行Hello.
,后面一行是UDP服务端测试程序是发送回来的,同时开发板的串口会有相关打印;和在Hi3861开发板上运行测试程序类似,在Hi3516开发板上运行四个测试程序之前,需要先准备网络环境:
确认你已经修改了Hi3516开发板的编译配置文件build/lite/product/ipcamera_hi3516dv300.json
:
向"//applications/sample/camera/app:camera_app"
所在行之前添加一行配置:
{ "name": "net_test", "dir": "//HarmonyOS-IoT-Application-Development:app", "features":[] },
使用python build.py ipcamera_hi3516dv300
进行编译;
编译成功后在out/ipcamera_hi3516dv300/bin
目录下会生成四个测试程序:
$ find out/ipcamera_hi3516dv300/ -name *_test
out/ipcamera_hi3516dv300/bin/udp_server_test
out/ipcamera_hi3516dv300/bin/udp_client_test
out/ipcamera_hi3516dv300/bin/tcp_client_test
out/ipcamera_hi3516dv300/bin/tcp_server_test
有多种方式可以将测试程序从你的Linux主机转移到Hi3516开发板上:
重新烧写rootfs.img映像文件到开发板;
通过T-Flash拷贝;
通过网络和TFTP传输;
tftp -g -l tcp_client_test -r tcp_client_test $LINUX_IP
,其中$LINUX_IP
是你的Linux主机的IP地址Hi3861开发板上运行测试程序的操作流程和Linux上几乎完全相同,只是Linux终端执行测试程序变成了——在开发板上的串口终端中执行;
netcat -l 5678
;./tcp_client_test 5678 $LINUX_IP
,其中$LINUX_IP
是你的Linux主机的IP地址;Hello
,输入World
并回车,World
将会发送到测试程序所在终端;./tcp_server_test 5678
;netcat $BOARD_IP 5678
,其中$BOARD_IP
是开发板的IP地址;Hello
并回车,终端应该会再输出一行Hello
,后面一行是开发板上TCP服务端测试程序发送回来的,开发板串口终端上会有相关打印;netcat -u -l 5678
;./udp_client_test 5678 $LINUX_IP
,其中$LINUX_IP
是你的Linux主机的IP地址;Hello.
,输入World
并回车,World
将会发送到开发板上,开发板串口终端上会有相关打印;./udp_server_test 5678
;netcat -u $BOARD_IP 5678
,其中$BOARD_IP
是开发板的IP地址;Hello.
并回车,终端应该会再输出一行Hello.
,后面一行是UDP服务端测试程序是发送回来的,开发板串口终端上会有相关打印;和在Hi3861开发板上运行测试程序类似,在Hi3518开发板上运行四个测试程序之前,需要先准备网络环境:
Hi3518连接WiFi热点需要使用wpa_supplicant和相关配置文件;
编译wap_supplicant程序:
打开编译wpa_supplicant编译配置:
修改配置文件applications\sample\camera\communication\BUILD.gn
中的features
,向其中添加:
"wpa_supplicant:wpa_sample"
执行编译命令:python build.py ipcamera_hi3518ev300
准备wap_supplicant配置文件;
country=GB
ctrl_interface=udp
network={
ssid="example" # 热点名称
# key_mgmt=NONE # for OPEN Access Point
psk="12345678" # 热点密码
}
将编译生成的wpa_supplicant程序和准备好的wpa_supplicant.conf拷贝到T-Flash卡,然后将T-Flash卡插到开发板上;
运行wpa_supplicant程序,开发板启动后,在串口终端中:
cd sdcard
, 跳转到T-Flash卡所在目录,wpa_supplicant -i wlan0 -c wpa_supplicant.conf
,如果配置文件中的热点名称和密码没错的话,将会连接上WiFi热点;ifconfig
,查看网络配置信息,连接WiFi热点成功之后,可以查看到IP地址;和Hi3516开发板的操作流程一致,参考前面的描述;
和Hi3516开发板的操作流程一致,参考前面的描述;
和Hi3516开发板的操作流程一致,参考前面的描述;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。