本发明涉及数据通信的管理方法,特别是一种数据监控系统的通讯管理方法。
背景技术:
在现有技术中,多串口的主机与多台设备之间进行实时数据通信的算法,大多是将串口通信处理写入各个设备进程中,这样的做法有可能会导致设备的多个进程向同一个串口读写数据,从而造成串口缓冲区的紊乱,当设备通过串口返回数据给主机时,有可能会被该串口所连接的其他设备所接收,这也导致各个设备进程获取的数据发送错乱。此外在数据通信中途切换串口时,需要从头初始化串口才可以继续通信,这也造成了极大地不便。各个进程同时对多个串口进行操作,不利于串口的统一管理,也会造成串口数据紊乱使程序产生不可预估的后果。
技术实现要素:
本发明的目的在于提供一种解决上述缺陷的数据监控系统的通讯管理方法。
为实现上述目的,本发明的技术方案是:一种数据监控系统的通讯管理方法,所述数据监控系统包括一设有N个串口的监控主机,及至少一通过串口与所述监控主机连接的设备,所述监控主机能够获取所接设备的设备地址,
所述监控主机包括一用于管理串口通信的串口通信进程,所述串口通信进程建立有N个子线程,且子线程与串口一一对应,用于监控主机与串口所连接设备之间的数据通信;
任一所述子线程均执行以下步骤,
S1,初始化对应串口;
S2,设置对应串口参数,监控主机以轮询方式查看串口,确认是否需修改对应串口参数;
S3,清空监控主机的串口缓存区;
S4,监控主机发送通信数据消息给与设备地址相对应的设备,该通信数据消息包括设备进程ID;
S5,等待T时间,若在T时间内,监控主机接收到设备数据且数据长度大于0,则将包含数据长度的数据消息发送给相应的设备进程;否则,发送数据长度为0的数据消息发送给相应的设备进程;
S6,清空监控主机串口缓存区,返回步骤S2,等待接收下一个通信数据消息。
在本发明一实施例中,所述串口参数包括波特率、停止位、校验位、数据位。
在本发明一实施例中,所述通信数据消息还包括主机期望接收的数据长度、设备所要发送的数据、串口最大等待时间T。
相较于现有技术,本发明具有以下有益效果:
1)本方法将串口通信进程与其他进程独立开,所有进程要通信时都要通过消息以队列方式通知串口通信进程,所有串口通信由串口通信进程来统一调配管理,合理安排各个串口的通信;
2)每个串口单独一个线程运行,以提高通信的效率,各个串口的通信不会互相干扰,设备切换串口时,设备进程只需要将消息发送到对应的串口线程即可,减少了设备处理的复杂度与出错率;
3)串口进程接收的消息中,带有设备进程ID,且根据设备进程ID返回给相应的设备进程,这样便不会造成数据被其他设备读到的情况;
4)每个串口会设置一个等待时间,当在等待时间内外接设备没有返回数据时,串口仍然会通知设备进程,告知其没有数据,以防设备进程无限期的等待,造成程序的阻塞。
附图说明
图1为本发明流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明的一种数据监控系统的通讯管理方法,所述数据监控系统包括一设有N个串口的监控主机,及至少一通过串口与所述监控主机连接的设备,所述监控主机能够获取所接设备的设备地址,
所述监控主机包括一用于管理串口通信的串口通信进程,所述串口通信进程建立有N个子线程,且子线程与串口一一对应,用于监控主机与串口所连接设备之间的数据通信;
任一所述子线程均执行以下步骤,
S1,初始化对应串口;
S2,设置对应串口参数,监控主机以轮询方式查看串口,确认是否需修改对应串口参数;
S3,清空监控主机的串口缓存区;
S4,监控主机发送通信数据消息给与设备地址相对应的设备,该通信数据消息包括设备进程ID;
S5,等待T时间,若在T时间内,监控主机接收到设备数据且数据长度大于0,则将包含数据长度的数据消息发送给相应的设备进程;否则,发送数据长度为0的数据消息发送给相应的设备进程;
S6,清空监控主机串口缓存区,返回步骤S2,等待接收下一个通信数据消息。
进一步的,所述串口参数包括波特率、停止位、校验位、数据位。
进一步的,所述通信数据消息还包括主机期望接收的数据长度、设备所要发送的数据、串口最大等待时间T。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。