<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLCH579M/CH579M/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
这节测试一下CH579M使用自带以太网连接MQTT服务器
测试的是连接我的服务器,用户可以根据后面的教程搭建自己的MQTT服务器.
要学习该教程,请用户一定要先学完本人开源的以下基础例程!
测试
1.使用网线连接路由器或者交换机
2.编译下载这节的程序到开发板
3.开发板上面的串口会打印连接成功的日志
4.使用MQTT上位机测试通信
5.配置说明
设备订阅的主题是: user/以太网MAC地址
设备发布的主题是: device/以太网MAC地址
MQTT调试助手上订阅和发布的主题要和设备相反, 如下图我的配置
6.使用调试助手发送消息
在调试助手上点击连接, 然后点击订阅主题, 然后设置发送的消息,点击发送
程序说明
1.关于主要的几个文件说明(后面章节有详细的移植使用说明,用户前期只需要了解即可)
tcp_mqtt文件是处理TCP连接通信和MQTT连接通信的文件;
net_tcp_client文件: 调用这里面的API实现基本的TCP连接通信;
mqtt文件: 我封装的MQTT消息处理文件,使用环形队列式缓存管理,支持消息等级0,1,2
2.MQTT本身就是TCP服务器,所以先连接TCP服务器
设置要连接的服务器的地址和端口号
咱连接的地址有可能是域名也可能是ip, 使用net_dns_str_ip函数来处理一下;
如果是ip则会把地址解析到 tcp_client_value.ip_addr_remote 数组,在while(1)循环里面便会直接执行DHCP, 然后执行连接TCP;
如果是域名, 在while(1)里面便会先执行域名解析,然后再执行DHCP,最后在执行连接TCP;
3.TCP各种回调函数写在了 tcp_mqtt文件里面
使用 tcp_client_flag 变量来标记TCP的连接状态
4,接着是MQTT连接通信, MQTT文件我封装成了回调函数的形式
咱一开始的时候已经初始化了
5.连接成功TCP以后,发送MQTT连接协议
5.发送连接协议给服务器以后,如果服务器返回连接成功消息,便会调用MQTT连接成功回调函数