一种多协议通信方法及装置与流程

文档序号:15116647发布日期:2018-08-07 20:29阅读:99来源:国知局

本发明涉及计算机技术领域,尤其涉及一种多协议通信方法及装置。



背景技术:

行驶记录仪按照国标的要求提供一路对外的物理串口,串口通讯协议采用gb19056-2012标准协议,随着产品集成越来越多的其他标准的功能,要求该对外的物理串口能自适应支持不同标准的串口协议,从而避免为每种协议增加一路物理串口,同时根据模块化的软件设计原则设计,可能会将不同协议的处理划分为不同的进程,但多进程不能同时操作一个串口设备。

现有技术中的做法是采用一个串口通信代理服务,负责消息的转发,来实现多个进程同时操作一个串口设备。

现有技术中的方法会构成依赖,且不利于移植。



技术实现要素:

(一)要解决的技术问题

本发明的目的是提供一种多协议通信方法,解决了现有技术中的通信方法依赖性强,进程代码可移植性差的技术问题。

(二)技术方案

为了解决上述技术问题,一方面,本发明提供一种多协议通信方法,包括:

获取设备触发事件;

基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据。

进一步地,所述获取设备触发事件之前,还包括:

获取多个协议解析插件;

创建每个协议解析插件对应的虚拟串口。

进一步地,所述基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据,具体为:

若判断获知所述设备触发事件是由物理串口触发,则通过所述物理串口获取目标协议数据;

遍历获取到的每个协议解析插件;

根据遍历到的协议解析插件x对所述目标协议数据进行解析;

将解析后的目标协议数据发送到所述协议解析插件x对应的虚拟串口。

进一步地,所述基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据,具体为:

若判断获知所述设备触发事件是由虚拟串口触发,则通过所述虚拟串口获取目标协议数据;

将所述目标协议数据发送到物理串口。

另一方面,本发明提供一种多协议通信装置,包括:

获取模块,用于获取设备触发事件;

数据处理模块,用于基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据。

再一方面,本发明提供一种用于多协议通信的电子设备,包括:

存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述的方法。

又一方面,本发明提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述的方法。

又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。

(三)有益效果

本发明提供的多协议通信方法及装置,通过伪终端技术将一路物理串口根据支持的不同协议虚拟出相同数量的虚拟串口,不同的协议进程通过虚拟串口进行读写操作,就像操作真实的物理串口一样,无需额外提供接口,避免不必要的依赖,并且对虚拟串口操作进程屏蔽了硬件细节,只需要通过系统接口操作系统设备,无需关心操作的串口是虚拟串口的还是物理串口,以及根本不知道系统中存在一个串口多路复用服务进程,如果将来新版硬件专门为操作进程增加一个物理串口,也无需修改进程代码,提高了进程代码的可移植性。

附图说明

图1为依照本发明实施例的多协议通信方法示意图;

图2为依照本发明实施例的多协议通信方法的逻辑流程图;

图3为依照本发明实施例的多协议通信装置示意图;

图4为本发明实施例提供的用于多协议通信的电子设备的结构示意图。

具体实施方式

为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:

图1为依照本发明实施例的多协议通信方法示意图,如图1所示,本发明实施例提供一种多协议通信方法,包括:

步骤s10、获取设备触发事件;

步骤s20、基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据。

进一步地,所述获取设备触发事件之前,还包括:

获取多个协议解析插件;

创建每个协议解析插件对应的虚拟串口。

进一步地,所述基于所述设备触发事件,获取目标协议数据,并发送所述标协议数据,具体为:

若判断获知所述设备触发事件是由物理串口触发,则通过所述物理串口获取目标协议数据;

遍历获取到的每个协议解析插件;

根据遍历到的协议解析插件x对所述目标协议数据进行解析;

将解析后的目标协议数据发送到所述协议解析插件x对应的虚拟串口。

进一步地,所述基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据,具体为:

若判断获知所述设备触发事件是由虚拟串口触发,则通过所述虚拟串口获取目标协议数据;

将所述目标协议数据发送到物理串口。

具体的,图2为依照本发明实施例的多协议通信方法的逻辑流程图,如图2所示,首先,启动服务进程,该服务进程为ttymuxd进程,是一种后台服务进程,是唯一操作物理串口的进程,负责物理串口数据到虚拟串口的数据路由,以及收集虚拟串口数据转发到物理串口。

虚拟串口是系统提供的逻辑设备,无实际物理串口关联,由master和slave两部分组成,创建后在系统设备目录会出现一对master、slave设备,对master进行的写操作,数据会进入slave的输入队列,反之亦然。

协议解析插件,是一个针对特定协议进行解析的组件,被服务进程加载和适时调用,用于识别串口数据属于何种协议。

启动服务进程后,以读写方式打开物理串口,例如/dev/ttys1。

根据配置加载协议解析插件,并创建与协议解析插件数量等同的虚拟串口,并打开虚拟串口,例如/dev/ttym1~/dev/ttmn。确保所有预设的协议解析插件全部加载完毕。

同时监听物理串口和指定数量的虚拟串口的输入事件,等待获取设备触发事件。

基于设备触发事件,获取目标协议数据,并发送目标协议数据。具体分为以下两种情况。

第一种情况:

设备外程序产生目标协议数据,并通过物理串口输入事件。

若判断获知设备触发事件是由物理串口触发,则通过物理串口获取目标协议数据。

然后,遍历获取到的每个协议解析插件。

若遍历到协议解析插件x能够解析目标协议数据,则根据遍历到的协议解析插件x对目标协议数据进行解析。

将解析后的目标协议数据发送到协议解析插件x对应的虚拟串口。

最后,通过虚拟串口将目标协议数据发送到对应的应用程序。

第二种情况:

应用程序产生目标协议数据,并通过虚拟串口输入事件。

若判断获知设备触发事件是由虚拟串口触发,则通过虚拟串口获取解析后的目标协议数据;

将所述解析后的目标协议数据发送到物理串口。

最后,通过物理串口将目标协议数据发送到对应的设备外程序。

本发明提供的多协议通信方法,通过伪终端技术将一路物理串口根据支持的不同协议虚拟出相同数量的虚拟串口,不同的协议进程通过虚拟串口进行读写操作,就像操作真实的物理串口一样,无需额外提供接口,避免不必要的依赖,并且对虚拟串口操作进程屏蔽了硬件细节,只需要通过系统接口操作系统设备,无需关心操作的串口是虚拟串口的还是物理串口,以及根本不知道系统中存在一个串口多路复用服务进程,如果将来新版硬件专门为操作进程增加一个物理串口,也无需修改进程代码,提高了进程代码的可移植性。

实施例2:

图3为依照本发明实施例的多协议通信装置示意图,如图3所示,本发明实施例提供一种多协议通信装置,用于完成上述实施例中所述的方法,具体包括获取模块10和数据处理模块20,其中,

获取模块10用于获取设备触发事件;

数据处理模块20用于基于所述设备触发事件,获取目标协议数据,并发送所述目标协议数据。

本发明实施例提供一种多协议通信装置,用于完成上述实施例中所述的方法,通过本实施例提供的多协议通信装置完成上述实施例中所述的方法的具体步骤与上述实施例相同,此处不再赘述。

本发明提供的多协议通信装置,通过伪终端技术将一路物理串口根据支持的不同协议虚拟出相同数量的虚拟串口,不同的协议进程通过虚拟串口进行读写操作,就像操作真实的物理串口一样,无需额外提供接口,避免不必要的依赖,并且对虚拟串口操作进程屏蔽了硬件细节,只需要通过系统接口操作系统设备,无需关心操作的串口是虚拟串口的还是物理串口,以及根本不知道系统中存在一个串口多路复用服务进程,如果将来新版硬件专门为操作进程增加一个物理串口,也无需修改进程代码,提高了进程代码的可移植性。

实施例3:

图4为本发明实施例提供的用于多协议通信的电子设备的结构示意图,如图4所示,所述设备包括:处理器801、存储器802和总线803;

其中,处理器801和存储器802通过所述总线803完成相互间的通信;

处理器801用于调用存储器802中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:

获取设备触发事件;

基于所述设备触发事件,获取解析后的目标协议数据,并将所述解析后的目标协议数据发送到物理串口。

实施例4:

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:

获取设备触发事件;

基于所述设备触发事件,获取解析后的目标协议数据,并将所述解析后的目标协议数据发送到物理串口。

实施例5:

本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:

获取设备触发事件;

基于所述设备触发事件,获取解析后的目标协议数据,并将所述解析后的目标协议数据发送到物理串口。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置及设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1