掌桥专利:专业的专利平台
掌桥专利
首页

一种基于MQTT协议的消息流乱序纠正方法及串口波形显示系统

文献发布时间:2023-06-19 16:09:34



技术领域

本发明涉及物联网和嵌入式通信技术领域,具体涉及一种基于MQTT协议的消息流乱序纠正方法及串口波形显示系统。

背景技术

现有技术中,常用于波形显示的示波器这类硬件设备作为波形显示的工具,其有如中国专利CN103869121A和中国专利CN101131404A等其他相关专利。其能够实现高精度的波形显示效果,但受限于使用环境相关问题,常用的示波器并不具备远程通信能力,且由于示波器中不同的功能要求最终导致仪器设备体积较大,不具有便携性。在本地没有示波器的情况下若需要检测设备发送的信号波形则需要相关专业仪器才能达到功能需求。

在相关的无线波形显示方法中通常使用本地WiFi热点局域网和使用本地蓝牙BLE点对点的通信方式,两者在地理距离上有一定限制。如WiFi热点需要在该SSID的物理广播覆范围内,而蓝牙BLE则需要两端设备距离在十几米以内保持通信。这些方法并不能做到正真意义上的远程波形显示。

使用无线通信的方式进行波形显示的优势是可以扩展其他的通信方式,数据的波形显示仅是作为一种特殊的通信方式。在一些常用的通信协议中如HTTP等协议,由于该类的通信协议主要用于资源丰富的智能计算机设备,且其需要消耗大量的网络资源。这在一些资源较少的物联网和嵌入式终端设备中并不能表现出稳定的通信效果。当设备在一些网络质量恶劣的环境中,协议并不能达到理想的通信效果。

现有的基于MQTT协议的通信方式,可以实现机器到机器的物联网通信。但是,在通信的过程中,由于MQTT消息数据流在经过MQTT实例的集群后,数据流内部的消息顺序会发生打乱。

发明内容

发明目的:针对现有技术中存在的问题,本发明提供一种基于MQTT协议的消息流乱序纠正方法及串口波形显示系统,基于MQTT协议实现无线通信,降低硬件对设备的性能成本要求,同时对于通信过程中的消息流乱序进行纠正。

技术方案:本发明提供了一种基于MQTT协议的消息流乱序纠正方法,包括如下步骤:

步骤1:移动串口终端接收一帧数据,并将每一帧数据按照接收顺序存放到缓存队列中;

步骤2:移动串口终端和数据采集设备需使用特定的数据帧格式进行相应的数据解析,即[HEAD][ID][MSG][#[SID]],其中,[HEAD]表示数据帧头,[ID]表示当前接收到的一帧消息的ID,[MSG]表示当前接收到的一帧消息所携带的数据,[SID]表示接收到的下一帧消息的ID,每一帧消息的[ID]后所携带的[MSG]数据即为消息

步骤3:第一次接收到消息时,直接将消息

步骤4:若再次收到的消息数据帧的[ID]与上一次接收到的数据帧[SID]一致,则将当前接收到的

步骤5:当缓存队列中存在对应的缓存消息,则将与上一次接收到的数据帧[SID]一致的数据推入纠正后的正序消息FIFO队列中;若在扫描的过程中未发现与上一次接收到的数据帧[SID]一致的数据,则开始等待正确的

进一步地,在步骤5中,当等待的帧数超出设定范围则直接清空消息缓存队列,并重新触发连续消息接收。

进一步地,在每次将数据从缓存队列推入纠正后的正序消息FIFO队列中,自动将原来缓存队列中的位置

本发明还公开一种基于MQTT协议的串口波形显示系统,包括MQTT云端服务实例规则、移动串口终端、数据采集设备、基于MQTT协议的消息流乱序纠正方法和波形自定义显示模块;

所述MQTT云端服务实例规则使用物联网平台并创建MQTT服务实例,添加多个设备消息主题用于设备订阅和发送,创建设备到设备的消息流传规则,所述规则包括将一台设备的消息发布主题tx流转到另一台设备订阅的消息主题rx,反之亦然;

所述移动串口终端包括:订阅云端MQTT服务实例设定的消息主题rx,向云端MQTT服务实例发布消息主题tx,从云端MQTT服务实例订阅消息主题rx并从该主题接收其他设备发送的消息;接收其他设备的消息流并将其解析,所述消息具有文本和数据帧两种类型,文本可用于任意消息的全双工通信,数据帧用于移动串口终端接收数据采集设备发送过来的数据消息流,将数据采集设备发送过来的消息数据流解析并重新排序完成波形显示;

所述数据采集设备包括:订阅云端MQTT服务实例设定的消息主题rx,向云端MQTT服务实例发布消息主题tx,将采集到的数据信息通过消息主题tx发送到其他设备,从rx消息主题接收其他设备发送过来的消息,并根据不同的消息或自定义的指令对自身做出相应的功能控制;

所述基于MQTT协议的消息流乱序纠正方法基于权利要求1至3任一所述的 消息流乱序纠正方法;

所述波形自定义显示模块包括:移动串口终端将乱序的数据消息流纠正后将数据从正序的消息流中提取到用于波形显示的缓存区,当该缓存区需要溢出或者数据帧全部都移动到缓存区后触发缓存区更新,则将缓存区的数据发送至界面上并显示波形。

进一步地,所述波形自定义显示方法中的缓存区是一个FIFO队列,当有更新事件被触发后,则按序将数据映射到相应的网格中连点显示波形数据,移动串口终端在波形显示中使用双重栅格的显示方法,其内容包括:设定一个大栅格,将要波形显示的区域均匀划分适当个数,在每个划分后的小栅格中再次均匀划分成几个更小的栅格;在波形缓存区的数据按顺序一一映射到显示界面上时,每次不同的波形数据点从被划分后的最小栅格移动到下一个栅格,当需要对波形进行横向或纵向拉伸和收缩时,通过改变内部栅格的等分个数来改变波形中相邻两个数据点的位置距离。

有益效果:

1、本发明在整个系统中使用MQTT协议实现机器到机器的物联网通信。由于MQTT是一个极其轻量级的(发布/订阅)消息传输协议,它是专门用于低带宽高延迟或者不可靠的网络环境设计的。系统整体通信质量的稳定性和系统所需硬件的性能都有较好的表现。在整个系统中,移动串口终端负责数据的最终纠正和显示处理,数据采集设备负责数据发送和其他功能扩展,而物联网平台只负责消息转发。整个系统对不同的物联网平台依赖性小。系统中使用移动设备上的小程序作为移动串口终端,使得系统整体波形显示效果具有较好的便携性。

2、本发明实现了一种在使用MQTT作为远程通信协议中,连续消息经过服务实例集群后乱序纠正的方法。通过设定了一种通信帧格式,利用缓存队列进行乱序纠正。

附图说明

图1为本发明基于MQTT协议的消息流乱序纠正方法纠错流程图;

图2为本发明MQTT协议的物联网平台连接关系;

图3为本发明移动串口终端数据缓存更新流程。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明公开了一种基于MQTT协议的串口波形显示系统,主要包括MQTT云端服务实例规则、移动串口终端、数据采集设备、MQTT消息流经过MQTT服务集群后端的基于MQTT协议的消息流乱序纠正方法和波形自定义显示模块。

MQTT云端服务实例规则内容包括:使用物联网平台并创建MQTT服务实例,添加多个设备消息主题用于设备订阅和发送,创建设备到设备的消息流传规则,规则包括将一台设备的消息发布主题tx流转到另一台设备订阅的消息主题rx,反之亦然。

移动串口终端内容包括:订阅云端MQTT服务实例设定的消息主题rx。向云端MQTT服务实例发布消息主题tx,从云端MQTT服务实例订阅消息主题rx并从该主题接收其他设备发送的消息。接收其他设备的消息流并将其解析,消息具有文本和数据帧两种类型,文本可用于任意消息的全双工通信,数据帧用于移动串口终端接收数据采集设备发送过来的数据消息流。将数据采集设备发送过来的消息数据流解析并重新排序完成波形显示。

数据采集设备内容包括:订阅云端MQTT服务实例设定的消息主题rx。向云端MQTT服务实例发布消息主题tx,将采集到的数据信息通过消息主题tx发送到其他设备。从rx消息主题接收其他设备发送过来的消息,并根据不同的消息或自定义的指令对自身做出相应的功能控制。

MQTT消息流经过MQTT服务集群后端的基于MQTT协议的消息流乱序纠正方法内容包括:

1)将移动串口终端实际接收到的每一帧消息用集合

2)在进行对端通信的过程中,移动串口终端和数据采集设备需使用特定的数据帧格式([HEAD][ID][MSG][#[SID]])进行相应的数据解析。每一帧消息的[ID]后所携带的[MSG]数据即为消息

3)在第一次接收到消息时(即,

4)若再次收到的消息数据帧的[ID]与上一次收到的数据帧[SID]一致,则将当前接收到的

5)当缓存队列中存在对应的缓存消息(即,满足

在每次将数据从

波形自定义显示模块包括:移动串口终端将乱序的数据消息流纠正后将数据从正序的消息流中提取到用于波形显示的缓存区,当该缓存区需要溢出或者说是数据帧全部都移动到缓存区后会触发缓存区更新,则将缓存区的数据发送至界面上并显示波形。缓存区是一个FIFO队列,当有更新事件被触发后,则按序将数据映射到相应的网格中连点显示波形数据。移动串口终端在波形显示中使用双重栅格的显示方法方便用于波形的测量,其内容包括:设定一个大栅格,将要波形显示的区域均匀划分适当个数,在每个划分后的小栅格中再次均匀划分成几个更小的栅格。在波形缓存区的数据按顺序一一映射到显示界面上时,每次不同的波形数据点从被划分后的最小栅格移动到下一个栅格。当需要对波形进行横向或纵向拉伸和收缩时,通过改变内部栅格的等分个数来改变波形中相邻两个数据点的位置距离。

本实施方式中,移动串口终端小程序和数据采集设备两者均先使用MQTT协议和物联网平台进行连接。在连接成功后两者均订阅rx主题用于接收对端发送的数据。两者均使用tx主题进行向对端发送数据。物联网平台实现了将一台设备在tx主题发布的信息轮流转发到另一台设备的rx主题的信息流转规则。移动串口终端小程序侦听数据流,数据采集设备发送数据流。移动串口终端小程序在接收到数据后对数据进行处理用于远程通信和波形显示。数据采集设备以数据帧的格式上传数据。移动终端在处理数据帧的信息解析和提取的任务之后需要将信息放在缓存区,当缓存区需要溢出或者说是数据帧全部都移动到缓存区后会触发缓存区更新,则将缓存区的数据发送至界面上并显示波形。

移动串口终端小程序使用MQTT协议和物联网平台进行连接。首先物联网设备和小程序都要和物联网平台进行连接,连接成功后,物联网平台通过规则转发使得两个设备通过Topic(主题)进行消息转发,实现双向通信。在小程序中对物联网设备上传的消息进行读取显示,在波形图功能中对数据进行处理,提取数据帧中的信息,并根据自定义的波形显示范围调节显示的波形尺寸。

上述实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种基于MQTT协议的消息流乱序纠正方法及串口波形显示系统
  • 一种基于MQTT协议的消息推送系统及方法
技术分类

06120114725296