|
## 一、使用说明
1. 第一步,选择协议前缀,可选mqtt://、mqtts://、ws://、wss://四种,带s结尾的是走ssl通信,ws表示走websocket通信。一般选默认的mqtt://就好。
2. 第二步,填写服务所在主机地址,可以是IP地址也可以是网址,只要真实存在的就行。
3. 第三步,填写通信所用端口号,mqtt默认端口号是1883,以实际真实端口号为准。
4. 第四步,填写资源路径,这个要websocket通信才需要填写。
5. 第五步,选择协议版本,这个要和实际的一致,比如服务器不支持5.0,而这里选择的5.0则会失败。一般服务器都会支持所有协议,因为在通信过程中会告知当前用哪个协议。
6. 第六步,填写客户端唯一编号,这个可选,如果服务器要求一定要填写则填写,不然通信会失败。
7. 第七步,单击启动服务按钮,连接成功后会变成断开服务按钮。
8. 第八步,发布主题,先要在主题文本框中输入主题字符串,再单击发布主题按钮。
9. 第九步,订阅主题,先要在主题文本框中输入主题字符串,再单击订阅主题按钮。
10. 既可以发布主题,也可以订阅主题,还可以取消订阅的主题。
11. 有些场景只需要发布主题,比如下位机采集到的数据,则只需要发布主题带上数据内容即可。
12. 有些场景只需要订阅主题,比如上位机通过订阅主题获取到最新的数据,订阅对应主题后,有新的主题数据发布,就会立即更新通知订阅过的客户端。
13. 发布的主题和订阅的主题,标识可以相同也可以不同,同一个标识的才会触发通知机制,一旦发布主题就会触发通知订阅过该主题的客户端。
14. 切换到高级参数选项卡,有一堆高级参数可以设置,比如用户验证,这样可以防止非法用户访问。一般合法的用户信息需要在mqtt服务的后台设置,相当于权限控制。
```cpp
//实例化mqtt采集类
IotMqttBase *mqttBase = new IotMqttBase(this);
//取出mqtt通信对象
QMqttClient *mqttClient = mqttBase->getMqttClient();
//关联收到数据信号
connect(mqttClient, SIGNAL(messageReceived(QByteArray, QMqttTopicName)), this, SLOT(messageReceived(QByteArray, QMqttTopicName)));
//设置通信参数/主机地址和端口参数必须设置
mqttClient->setHostname("broker.emqx.io");
mqttClient->setPort(1883);
//还有其他一堆参数根据情况按需设置
.....
//连接到服务器
mqttBase->connectToHost();
//从服务器断开
mqttBase->disconnectFromHost();
//发布主题
mqttClient->publish("qtmqtt/topic", "hello");
//订阅主题
mqttClient->subscribe("qtmqtt/topic");
```
## 二、功能特点
1. 支持多种物联网通信协议,包括modbus和mqtt。
2. 协议方式支持串口com通信、网络tcp通信、网络udp通信、网络websocket通信。
3. 数据规则支持rtu模式和网络模式,网络rtu模式也就是modbus rtu over tcp/udp/websocket。相当于modbus串口协议数据走网络方式通信。
4. 支持批量连续写入寄存器数值和单个写入寄存器数值。
5. 支持数据顺序格式的设置,比如大端小端,高字节在前低字节在前的设置。支持Short_AB、Short_BA、Long_ABCD、Long_CDAB、Long_BADC、Long_DCBA、Float_ABCD、Float_CDAB、Float_BADC、Float_DCBA等。
6. 支持数据位字节数设置,比如短整型、长整型、浮点型等。常规的一般是2字节表示一个数据位,也有设备是4字节表示一个数据位,还有4字节浮点数的形式。后期可能还有8字节一个数据位。
7. 支持mqtt协议,可设置主机地址和端口、协议版本、唯一标号、用户名称、用户密码。
8. 支持mqtt发布主题、订阅主题、取消订阅。
9. 定时自动发布主题,可设置保活时间、超时时间、过期时间。mqtt通信自动重连。
10. mqtt模拟数据收发支持多种格式,文本、json、base64、hex等。
11. mqtt同时支持websocket方式,还支持ssl方式通信。
12. 支持多种采集通讯方式,包括串口和网络等,可自由拓展其他方式。可同时采集多路。
13. 自定义采集间隔(精确到毫秒)和超时次数,超时后自动将离线的文件从轮询队列中移除,加快轮询速度。
14. 可设置最大超时重连间隔,将离线的设备重新探测一次,保证设备恢复正常后能够重新加入轮询队列。
15. 同时提供了设备模拟工具,支持各种协议,支持设定多个设备的数据值。
16. 模拟工具可随机切换模拟数据值,要正常随机数据就模拟生成正常范围的数据,要报警数据就模拟生成报警范围的数据。方便测试。
17. 多线程采集和解析数据,以信号的方式发送解析结果,不卡主线程。
18. 架构采用基类继承方式,通用处理在基类,极易拓展其他通信方式。
19. 接口友好,使用非常简单,设置要采集的地址集合、开始索引集合、采集数量集合、数据顺序格式四个参数即可。会自动组装对应协议的数据发送。
20. 采集后的数据以统一格式的信号发出来,非常简单易用。支持浮点型数据。
21. 采集指令有优先级,如果有自定义的数据需要优先执行。可以将优先级高的指令调用append方法插入即可。可批量采集也可单个采集。
22. 支持利用现有的通信链路发送自定义数据,这个数据可以不是标准的modbus协议,比如有时候需要一些私有协议数据,利用现有链路发送下去执行。
23. 多线程高并发,每个端口采集都是一个独立的线程,互不干扰,支持成千上万个设备采集。
24. 代码做了兼容,支持各种编译器,同时支持Qt4、Qt5、Qt6。
25. 跨平台,支持windows、linux、mac、嵌入式linux、android、各种国产系统和开发板等。
## 三、相关链接
1. 体验地址:[https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A](https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A) 提取码:o05q 文件名:bin_iottool.zip
2. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
3. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|