一、资料下载
二、框架知识
三、MQTT通信协议
1、上位机APP主要工作
1.wait for msg / while(1)订阅等待消息
2.处理消息
客户端创建了两个线程,一个线程用于发布消息,一个线程用于监听订阅消息
(那我的仿真系统也可以啊,一个发送处理数据线程。一个监听订阅线程)
2、中间传输
使用的通信传输协议 MQTT/FTP/SSH
3、开发板硬件平台
主要提供:多线程/Timer/网卡收发信息
四、单片机和linux联网的区别
五、订阅和发布
5.1订阅
//订阅消息
mqtt_subscribe(client, "topic1", QOS0, topic1_handler);
mqtt_subscribe(client, "topic2", QOS1, NULL);
mqtt_subscribe(client, "topic3", QOS2, NULL);
订阅会根据不同的消息主题去订阅,会有一个while(1)死循环,订阅到消息后然后找到消息的主题,然后执行相应的函数topic1_handler,这个应该叫响应函数吧,实现了一个信号与曹的机制,"topic1"是信号,topic1_handler槽函数。
mqtt_subscribe主要创建结构体handler去记录主题,记录处理函数和服务质量,handler放入链表中
建立连接后,会创建订阅死循环线程,主要功能有:读数据,处理数据、保持活性、检查错误
5.1 发布
//创建一个发布线程
res = pthread_create(&thread1, NULL, mqtt_publish_thread, client);
if(res != 0) {
MQTT_LOG_E("create mqtt publish thread fail");
exit(res);
}
六、Ubuntu编译MQTT
1、编译生成可执行文件
./build.sh
2.运行可执行文件
andzhang@wandzhang-virtual-machine:/home/book/mqtt_project/mqtr01/mqttclient$ ./build/bin/emqx //命令
welcome to mqttclient test...
[32m[I] >> /home/book/mqtt_project/mqtr01/mqttclient/mqttclient/mqttclient.c:989 mqtt_connect_with_results()... mqtt connect success...
[32m[I] >> /home/book/mqtt_project/mqtr01/mqttclient/mqttclient/