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

news/2024/11/14 12:55:20/文章来源:https://www.cnblogs.com/feiyangqingyun/p/18413322

一、前言说明

搞物联网开发很多年,用的最多的当属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

四、效果图



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796882.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.7 发布下载,新增功能概览

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.7 发布下载,新增功能概览VMware NSX Advanced Load Balancer (NSX ALB) 22.1.7 - 多云负载均衡平台 应用交付:多云负载均衡、Web 应用防火墙和容器 Ingress 服务 请访问原文链接:https://sysin.org/blog/vmware-nsx-alb-2…

4、循环单链表

1、代码实现#include<stdio.h> #include<malloc.h> #include<assert.h> typedef int ElemType;typedef struct Node{ElemType data;struct Node* next; }Node,*PNode;typedef struct SCList{PNode first;PNode last;int size; }SCList;void initSCList(SCLis…

论文分享 《Timing Side-channel Attacks and Countermeasures in CPU Microarchitectures》

Attack 概述 传统攻击(CONVENTIONAL ATTACKS) 在传统攻击中,Attacker 通常:与 Victim 共享硬件资源 (比如说 LLC,BP,Prefetcher 等) 可以观察,改变微架构状态攻击步骤本文作者将传统攻击分为以下三步,如 Fig 1 所示:定位“漏洞”:该漏洞包括“代码漏洞”(vulnerab…

PbootCMS访问页面出现PHP Fatal error: Allowed memory size of 13421

当访问 PbootCMS 页面时出现 PHP Fatal error: Allowed memory size of 13421 的错误,通常是由于 PHP 的内存限制过低导致的。这个错误表明 PHP 脚本在运行过程中耗尽了分配给它的内存。 解决方案增加 PHP 内存限制 检查 PHP 配置文件 (php.ini) 在脚本中动态增加内存限制详细…

什么是 PHP? 为什么用 PHP? 有谁在用 PHP?

PHP,全称“PHP: Hypertext Preprocessor”,是一种开源的服务器端脚本语言,主要用于网页开发,能够产生动态交互性数据。它由Rasmus Lerdorf在1994年创建,并随着时间的推移不断更新迭代,以适应互联网技术的发展。为什么使用 PHP? 开源免费:PHP作为一个开源项目,用户可以…

系统配置nginx环境运行pbootcms访问首页直接404的问题

在安装 PbootCMS 时遇到访问首页返回 404 错误的问题,尤其是在 Windows + Nginx + PHP 的环境下,可能涉及到多个方面的配置问题。根据你的描述,填写授权码后问题得以解决。以下是详细的分析和解决方案,希望能帮助遇到类似问题的朋友。 问题分析与解决方案 1. 配置 Nginx 伪…

基于Java+Springboot+Vue开发的在线摄影预约管理系统

项目简介该项目是基于Java+Springboot+Vue开发的在线摄影预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的在线摄影管理系统项目,大学生可以在实践…

【痛点解决】跨网跨区域的文件传输摆渡解决办法指南

跨网跨区域的文件传输摆渡,顾名思义就是需要跨越不同网络、不同地区,或者是不同安全域的文件传输,一般有这样传输需求的机构,在组织架构、网络结构,或者传输需求上,都会比较复杂。 跨网跨区域文件传输是什么样的场景? 跨网跨区域文件传输涉及在不同的网络和地理区域之间…

SQL Server 中的 NUL 设备/NIL设备

SQL Server 中的 NUL 设备/NIL设备 在 SQL Server 中,有一个特殊的设备叫做 NUL(注意,不是 NULL),它类似于文件系统中的“黑洞”。NUL 设备类似于 Linux 系统中的 /dev/null,所有写入到 NUL 的数据都会被直接丢弃。 我们可以利用这个特性,在不需要实际生成备份文件的情况…

PbootCMS调用内容中换行符br不换行怎么办

在 PbootCMS 中,如果你在后台输入的文字包含换行符(如 <br>),但在前台显示时这些换行符被直接输出为文本(如 <br>),可以通过解码标签来解决这个问题。 解决方案 在需要输出的标签中加入 decode=1 参数,这样可以将 HTML 特殊字符解码为实际的 HTML 标签,从…

PbootCMS提交留言成功后跳转到指定的网址

要实现在 PbootCMS 中留言表单提交成功后跳转到指定网址,可以通过修改相关文件来实现。以下是详细的步骤: 步骤 1:定位相关文件 首先找到包含留言表单提交逻辑的相关文件。通常情况下,留言表单的提交逻辑会在 /core/function/helper.php 文件中。 步骤 2:修改提交成功后的…

PbootCMS判断一个字段为空的时候调用另外一个字段

在 PbootCMS 中,如果你想在一个字段为空时调用另一个字段,可以使用条件判断标签来实现。下面是一个具体的示例,展示了如何在某个字段为空时调用另一个字段。 示例场景 假设你有一个字段 ext_icos 用于存储图片,还有一个字段 ico 作为备用的缩略图。当 ext_icos 字段不为空时…