本发明涉及串口通讯监测领域,尤其涉及一种对串口通讯实时数据监测方法。
背景技术:
串口通讯在生产生活中的用途广泛,通讯采集的数据也是多种多样,在实际工程中,通常同一串口需要连接多个传感器,监测获取的数据一般数量庞大,对下一步的处理与分析的工作都相当繁琐。具体的施工过程中对数据的采集还会有各种各样的条件限制,使得在具体的处理过程中很难及时地对多个传感器回传的庞杂的数据进行有效处理,从而使得工程数据在采集后还需要大量的时间整合处理。因此,需要对监测系统通过串口进行采集并获取到的数据,进行科学有序的分析处理。
技术实现要素:
为了解决上述技术问题,本发明提供一种对串口通讯的实时数据监测方法。以满足串口通讯监测的需要。本发明是通过如下技术方案实现的,采用如下技术方案。
一种串口通讯数据监测方法,该方法利用了三层构架以及实时数据库,该方法包括以下步骤:
步骤一:确定数据的来源;上位机需要通过波特率,起始位,数据位,停止位及奇偶校验进行串口配置。
步骤二:串口在通讯时,由上位机接收被监视串口返回的数据;在c#中,对一个文件监视,本系统使用了filesystemwatcher类。这个类的主要功能是实时侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件,也就是在当被监视的文件里的内容发生变化时,事件触发,引起之后的一系列功能响应。
步骤三:按功能码及地址码区分下位机返回的数据并保存到文本文件;多个传感器通过同一个串口返回数据时根据地址码和功能码将不同传感器返回的数据分开保存在文本文件中,以便于区分与处理数据。
步骤四:根据监视到的内容对侦听数据进行分割;传感器收到正确的指令将返回一串16进制数据:01030400000b10fccf。其中:0x01为传感器地址;0x03为返回的功能码;0x04表示返回4个byte;0x00、0x00、0x0b、0x10为返回的保持寄存器距离值,共4个字节,0x00000b10,转换成十进制就是2832mm,即2.832米;0xfc和0xcf为2个字节的crc校验码。
步骤五:将分割处理后的数据分类;下位机返回数据是由“时间+数据+\r\n”的格式组合而成,其中有一组时间,1列数据,最后有一个换行符。在这里采用了try{}catch{}的方式进行数据处理,解决了数据源会因为电磁干扰、设备故障等原因造成的数据丢包问题,能够允许不丢包但数据错误的发生,这样能够保证了系统的正常运行。
步骤六:数据的存储及实现数据的可视化并实时显示;采用了实时数据库和c#中的initchart()方法,实时数据库使得工程的数据有很强的实时性,同时展现了高效率的处理能力。initchart()方法初始化图像坐标的时间轴和数据轴的曲线网格的颜色,数据点的颜色,边框的宽度,曲线的类型,时间轴和数据轴之间的间隔,再绑定数据后展示为动态图像;
优选地,所述系统使用三层构架对采集到的数据分层处理。
优选地,所述系统采用visualstudio2013为开发工具。
本发明的有益效果为:
利用实时数据库将通过串口采集的数据都放在了统一的数据库中,实现了数据处理的实时性。使同一个工程的工作人员,实时地检查、分析、处理现场返回的繁多庞杂的数据;
通过功能码和地址码区分不同传感器回传的数据,稳定、高效的把众多现场数据分门别类的保存处理。
监测方式简单有效,扩展性强,利于操作员操作。
附图说明
为了更清楚地说明本发明实施流程和技术方案,下面将对实施流程和技术方案使用的附图作简单地介绍。
图1为数据通讯的逻辑控制示意图;
具体实施方式
下面对本发明的技术方案做进一步详细地介绍:
本发明提供一种对串口通讯的实时数据监测方法。该方法利用了三层构架以及实时数据库,该方法包括以下步骤。
步骤一:确定数据的来源;上位机需要通过波特率,起始位,数据位,停止位及奇偶校验进行串口配置。
步骤二:串口在通讯时,由上位机接收被监视串口返回的数据;在c#中,对一个文件监视,本系统使用了filesystemwatcher类。这个类的主要功能是实时侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件,也就是在当被监视的文件里的内容发生变化时,事件触发,引起之后的一系列功能响应。
步骤三:按功能码及地址码区分下位机返回的数据并保存到文本文件;多个传感器通过同一个串口返回数据时根据地址码和功能码将不同传感器返回的数据分开保存在文本文件中,以便于区分与处理数据。
步骤四:根据监视到的内容对侦听数据进行分割;传感器收到正确的指令将返回一串16进制数据:01030400000b10fccf。其中:0x01为传感器地址;0x03为返回的功能码;0x04表示返回4个byte;0x00、0x00、0x0b、0x10为返回的保持寄存器距离值,共4个字节,0x00000b10,转换成十进制就是2832mm,即2.832米;0xfc和0xcf为2个字节的crc校验码。
步骤五:将分割处理后的数据分类;下位机返回数据是由“时间+数据+\r\n”的格式组合而成,其中有一组时间,1列数据,最后有一个换行符。在这里采用了try{}catch{}的方式进行数据处理,解决了数据源会因为电磁干扰、设备故障等原因造成的数据丢包问题,能够允许不丢包但数据错误的发生,这样能够保证了系统的正常运行。
步骤六:数据的存储及实现数据的可视化并实时显示;采用了实时数据库和c#中的initchart()方法,实时数据库使得工程的数据有很强的实时性,同时展现了高效率的处理能力。initchart()方法初始化图像坐标的时间轴和数据轴的曲线网格的颜色,数据点的颜色,边框的宽度,曲线的类型,时间轴和数据轴之间的间隔,再绑定数据后展示为动态图像。