当前位置: 首页 > news >正文

modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持

一、前言说明

搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一点就是大大提升了自己对该协议的深度理解和应用,尤其是面对各种场景需求,逐步调整迭代代码。为什么最终选择自研,主要基于三点,第一点,Qt自带的modbus类功能很单一,比如不支持RTU OVER TCP,而且UDP和websocket也没有,需要自己拓展。第二点,libmodbus功能更强,但是不满足发送非modbus协议数据,也就是利用现有链路发送自定义的数据。第三点,面对复杂多变的需求,其他组件都无法灵活的调整,也许可能是对这些第三方代码不够熟悉。总之,自研的最大优势是灵活,可以最大限度的和现场实际需求做出调整。以便满足上帝的需求。

二、功能特点

  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 提取码:o05q 文件名:bin_iottool.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun

四、效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux编程获取指定网口MAC地址
  • 9.11 QT ( Day 4)
  • 大数据之Flink(三)
  • 尚品汇-订单拆单、支付宝关闭交易、关闭过期订单整合(五十)
  • SQLyou基础用法讲解
  • vue2基础系列教程之todo的实现及面试高频问题
  • PowerBI 自定义组合两个表的列
  • 探索使用 CockroachDB、Redpanda 和 Kafka Connect 将数据实时摄取到 Snowflake 中
  • 动态获取git版本号
  • 记录开发一个英语听力训练网站
  • 定制相亲交友系统如何提升用户体验
  • 如何利用人工智能大模型来进行数字化营销?
  • 面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
  • Cesium 获取BBOX
  • Matlab求解微分方程(解析解与数值解)
  • JavaScript-如何实现克隆(clone)函数
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Golang-长连接-状态推送
  • LeetCode18.四数之和 JavaScript
  • LintCode 31. partitionArray 数组划分
  • MySQL-事务管理(基础)
  • React Native移动开发实战-3-实现页面间的数据传递
  • React-Native - 收藏集 - 掘金
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 半理解系列--Promise的进化史
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务入门【系列视频课程】
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 大数据全解:定义、价值及挑战
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #14vue3生成表单并跳转到外部地址的方式
  • #Linux(帮助手册)
  • ${factoryList }后面有空格不影响
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (52)只出现一次的数字III
  • (7)摄像机和云台
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (javascript)再说document.body.scrollTop的使用问题
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四)linux文件内容查看
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转) ns2/nam与nam实现相关的文件
  • (转载)Google Chrome调试JS
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 中插件式开发实现
  • .net web项目 调用webService
  • .net 获取某一天 在当月是 第几周 函数
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 微服务 服务保护 自动重试 Polly