基于小凌派RK2206开发板wifi-tcp通信实验
在开发过程中想要与开发板进行通信一般使用串口通信,当开发板使用串口与pc通信还需要专门的串口转换工具才行。而小凌派开发板自带wifi功能。因此与pc通信时可以使用wifi功能进行tcp通信这样就不需要专门的转换工具非常方便。
一、在使用小凌派开发板wifi进行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地址。
在确认pc的ip地址,在控制台输入ipconfig
可以看到两个ip地址都是点2网段,说明已经在同一局域网。
4、 修改wifi_tcp 例程中服务地址及端口号
#define OC_SERVER_IP “192.168.2.49”
#define SERVER_PORT 6666
这个ip地址即PC的ip地址,修改后重新编译烧录程序。
5、 pc上打开两个网络调试工具,一个客户端和一个服务端,并设置ip地址和端口号
服务端 ip地址:0.0.0.0
端口号:6666
客户端ip地址:192.168.2.50 (之前查看到小凌派的ip地址)
端口号:6666
6 、查看log等待小凌派的tcp客户端和服务端任务启动
可以看到客户端连接地址192.168.2.49:6666 即pc的ip地址
服务端监听端口为6666
这表示小凌派tcp客户端和服务端任务都已经启动。
7、 在pc网络调试助手点击启动客户端和服务端
可以观察到网络调试助手服务端有设备连接成功并且接收到了调试数据。
网络调试助手的客户端也显示连接成功。
8、 使用网络调试助手发送数据
可以查看log发现小凌派开发板已经可以正常收发数据了。
这样就可以通过使用wifi与pc进行通信。
二、接下来分析一下代码的工作流程。
首先包含必要的头文件
这些定义主要是 ip地址和端口号以及缓存大小
这部分是获取wifi连接信息,通过查询wifi连接信息确认wifi是否连接成功。只有wifi连接成功了才能进行tcp通信
这部分是tcp服务端接收消息处理
先进入accept()会处于阻塞状态,即没有客户端连接时一直阻塞。
单客户端连接后又进入接收数据状态,此状态也是阻塞状态。
没有数据时一直阻塞,不过需要注意的是在此状态下当客户端断开连接时recv会返回-1
接收到pc客户端的消息后通过send()发响应消息给PC客户端。
这部分是tcp服务端任务代码
服务端处理流程
socket--》bind--》listen--》accept--》recv--》send--》lwip_close
先通过socket()接口打开一个服务端socket文件
然后设置需要绑定的服务端ip地址及端口号。
在进行监听,需要注意的是此处监听不会处于阻塞态。
这部分是tcp客户端的接收消息处理函数
先进行尝试连接pc机的服务端,如果失败则延迟5秒后重新连接直到连接成功。
连接成功后先发消息给PC的服务端,然后进入接收状态,此状态是阻塞态。
当接收到pc的消息后进入循环发送状态。
这部分代码是tcp客户端代码
客户端处理流程
socket--》connect--》send--》recv--》lwip_close
先通过socket()接口创建客户端的socket文件。
然后设置客户端连接PC服务端的ip地址及端口号。
在进行connect连接。
这部分是tcp创建客户端和服务端任务
可以看到在创建客户端和服务端任务前先阻塞判断wifi的连接状态。
只有wifi连接成功后才创建客户端和服务端任务。
这部分是创建wifi tcp 通信任务主要是为了使用APP_FEATURE_INIT(wifi_tcp_example);
这样当OpenHarmony初始化完成后会自动执行此任务。
来源: 凌智电子
全部0条评论
快来发表一下你的评论吧 !