CN115718712A - 基于虚拟串口的数据传输方法、装置、设备和存储介质 - Google Patents
基于虚拟串口的数据传输方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115718712A CN115718712A CN202110972604.2A CN202110972604A CN115718712A CN 115718712 A CN115718712 A CN 115718712A CN 202110972604 A CN202110972604 A CN 202110972604A CN 115718712 A CN115718712 A CN 115718712A
- Authority
- CN
- China
- Prior art keywords
- data
- serial port
- original
- virtual serial
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明实施例公开了一种基于虚拟串口的数据传输方法、装置、设备和存储介质。该基于虚拟串口的数据传输方法包括:为所述主控CPU中每个业务模块确定由所述高速总线端口映射得到的关联虚拟串口;通过所述关联虚拟串口将至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;将所述第一组包数据通过所述高速总线端口发送到所述MCU,根据所述MCU返回的所述第二组包数据将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。本发明实施例通过虚拟串口映射的方式解决串口独占的问题,实现主控端中多个业务模块同时与多个外界设备进行数据传输,降低串口通信设计的复杂度。
Description
技术领域
本发明实施例涉及串口通信技术领域,尤其涉及一种基于虚拟串口的数据传输方法、装置、设备和存储介质。
背景技术
目前的硬件系统设计时,常常因为主控外设接口不够,需要外扩单片机,通过单片机连接多个外设。而为了降低系统软件设计的复杂度,主控和单片机会采用串口或USB转串口的方式连接,例如主控与单片机之间通过USB等高速总线相连,高速总线接口在主控端以一个物理串口呈现,对于主控上运行的软件业务模块即可使用串口与MCU(Microcontroller Unit,微控制单元或单片机)通信,以实现和MCU连接外设之间的通信。
物理串口是采用串行通信方式的扩展接口。物理串行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信。但是使得物理串口具有独占性的局限,即在同一时间只能被一个进程打开使用。但是主控中往往存在多个业务模块,如果多个业务模块中多个进程或线程需要通过同时访问串口操作MCU上不同的外设单元时,则一个物理串口无法实现。
现有技术中使用线程同步或进程间通信的同步机制,来保证串口的独占性操作,再依次访问不同外设。但是多线程间操作串口时,在读写操作前需要加锁;且即使使用进程间通信的方式,也只能保证一个进程操作串口,使得串口访问效率低,且同步机制使得系统软件的设计复杂度增加。
发明内容
本发明实施例提供一种基于虚拟串口的数据传输方法、装置、设备和存储介质,通过虚拟串口映射的方式解决串口独占的问题,实现主控端中多个业务模块同时与多个外界设备进行数据传输,降低串口通信设计的复杂度。
第一方面,本发明实施例提供了一种基于虚拟串口的数据传输方法,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,每个虚拟串口与所述主控CPU中任一业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
第二方面,本发明实施例还提供了一种基于虚拟串口的数据传输装置,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
发送数据组包模块,用于通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,与所述主控CPU中各业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
数据发送模块,用于将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
数据接收模块,用于根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
第三方面,本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的基于虚拟串口的数据传输方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的基于虚拟串口的数据传输方法。
本发明实施例通过预先为主控中每个业务模块确定由高速总线端口映射的关联虚拟串口,多个业务模块通过关联虚拟串口同时将发送到不同外设的原始发送数据进行协议封装组包处理,再将组包数据通过高速总线端口发送至MCU,由MCU将原始发送数据转发至不同外设,再将不同外设返回的数据通过关联虚拟串口返回至对应业务模块。通过虚拟串口映射的方式解决串口独占的问题,实现主控端中多个业务模块同时与多个外界设备进行数据传输,降低串口通信设计的复杂度。
附图说明
图1是本发明实施例一中的基于虚拟串口的数据传输方法的流程图;
图2是现有技术中主控与MCU之间的连接方式示意图;
图3是本发明实施例中主控与MCU之间的连接方式示意图;
图4是协议封装组包处理后进行数据传输的帧结构示意图;
图5是主控和MCU之间通过虚拟串口进行数据传输的示意框图;
图6是本发明实施例二中的基于虚拟串口的数据传输装置的结构示意图;
图7是本发明实施例三中的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一中的基于虚拟串口的数据传输方法的流程图,本实施例可适用于主控物理串口满足不了多个软件业务模块向多个外设传输数据的情况,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,MCU与至少两个外接设备连接。该方法可以由基于虚拟串口的数据传输装置来执行,该装置可以采用软件和/或硬件的方式实现,并可配置在电子设备中,例如电子设备可以是CPU或硬件系统等具有通信和计算能力的设备。如图1所示,该方法具体包括:
步骤101、通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据。
其中,虚拟串口由高速总线端口映射得到,每个虚拟串口与主控CPU中任一业务模块关联;第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系。
由于现有硬件系统中的主控CPU与MCU之间的物理串口数量有限,导致主控CPU中多个业务模块需要同时传输数据时,受到物理串口的限制,在本发明实施例中,预先通过在驱动层对高速总线端口重新映射为多个虚拟串口,对于软件层面而言,每个业务模块可以单独使用其关联虚拟串口,每个虚拟串口均可以在软件层上看作是一个独立的串口,实现业务模块在传输数据时无需关注高速总线端口是否独占,是否需要加锁及进程间如何同步的问题。
如图2所示为现有技术中主控与MCU之间的连接方式示意图,其中,tty表示设置在主控端的物理串口,现有技术中一般主控操作串口的流程常见为两种,一种为每次业务模块在进行通信前打开串口,数据发送接收后,关闭串口;另一种为在一个进程或线程中统一操作串口,各个业务模块需要使用预先确定的同步机制来传递消息。
如图3所示为本发明实施例中主控与MCU之间的连接方式示意图,图3中虚拟串口的数量只作示例,并不限制虚拟串口的数量,虚拟串口的实际数量根据主控中业务模块的数量进行确定。在本发明实施例中,通过驱动层映射封装一层多虚拟串口,降低业务模块数据传输处理的复杂度,各个业务模块不用考虑串口独占性问题,分别将其关联虚拟串口当作独立串口操作即可。
具体的,预先根据主控中业务模块的数量将高速总线端口映射成相同数量个虚拟串口,并建立业务模块与虚拟串口之间一对一的关联关系,使得每个业务模块有其专属的虚拟串口。主控中多个业务模块需要同时向不同外接设备进行数据传输时,由与业务模块关联的虚拟串口对进行传输的原始发送数据进行协议封装组包处理,得到第一组包数据。协议封装组包处理是为了建立原始发送数据与虚拟串口之间的映射关系,明确原始发送数据的来源方。
在一个可行的实施例中,步骤101,包括:
关联虚拟串口节点为原始发送数据添加关联串口标识、预设包头标识以及预设包尾标识,得到第一组包数据。
在确定协议封装组包处理中的映射关系时,通过为原始发送数据添加关联串口标识,预设包头标识和预设包尾标识,以实现协议封装组包处理。其中,每一个虚拟串口具有唯一的串口标识,即每一个业务模块具有唯一关联的串口标识,通过在第一组包数据中为原始发送数据添加关联串口标识,即可确定该原始发送数据的来源方。由于第一组包数据中包括多个业务模块发送的原始发送数据,因此为了区分不同的原始发送数据,在每个原始发送数据的开始添加预设包头标识,以及在每个原始发送数据的结尾添加预设包尾标识。如图4所示为协议封装组包处理后进行数据传输的帧结构。
通过该协议封装组包处理过程,可以从多个业务模块传输的数据中解析得到有效的数据内容,即原始发送数据,且可以明确每个原始发送数据的来源业务模块。
步骤102、将第一组包数据通过高速总线端口发送至MCU,由MCU将第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据映射关系对原始返回数据进行协议封装组包处理,得到第二组包数据,将第二组包数据通过高速总线端口返回给主控CPU。
在主控端由各虚拟串口对原始发送数据进行协议封装组包处理后,将组包后的第一组包数据通过高速总线端口发送至MCU中。由于第一组包数据可以看作是一个整体,因此不必关注于现有硬件系统中涉及到的物理串口的独占性,无论第一组包数据中包含多少个原始发送数据,均可以通过本发明实施例中的高速总线端口进行依次发送,实现多个业务模块与MCU通过一个高速总线端口的同时数据传输,提高数据传输效率。
由于原始发送数据是不同业务模块发送至不同外设的,因此MCU在接收到第一组包数据后,需要将其中包括的原始发送数据分发给不同的外设,以接收外设根据该原始发送数据返回的原始返回数据。由于业务模块与原始发送数据之间存在关联关系,而原始发送数据与外设之间存在关联关系,因此外设返回的原始返回数据与业务模块之间也存在关联关系。即目标业务模块将第一原始发送数据发送至目标外设,而目标外设返回的第一原始返回数据也需要返回至该目标业务模块,若返回时发生错乱,则会造成目标业务模块接收不到返回数据。因此MCU在将原始返回数据返回给主控MCU时,需要对原始返回数据进行同样的协议封装组包处理,得到第二组包数据,且在第二组包数据中包括根据原始发送数据与虚拟串口之间的映射关系确定的原始返回数据与虚拟串口之间的映射关系。
示例性的,MCU确定原始返回数据与原始发送数据的关联关系,且确定与原始发送数据关联的虚拟串口,将该虚拟串口与原始返回数据进行关联映射。
在一个可行的实施例中,步骤101,包括:
不同虚拟串口节点将关联业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据,并将第一组包数据添加到与虚拟串口关联的发送队列中;
相应的,将第一组包数据通过高速总线端口发送至MCU,包括:
发起定时轮询线程对所有虚拟串口关联的发送队列进行定时轮询,将发送队列中的第一组包数据通过高速总线端口发送至MCU。
每个虚拟串口的发送数据均由各自的发送队列进行管理。具体的,业务模块在发送原始发送数据时,确定与其关联的虚拟串口节点,该虚拟串口节点将原始发送数据添加到关联的发送队列中。示例性的,在上述示例的基础上,每个虚拟串口节点将原始发送数据加上对应串口标识以及预设包头标识和预设包尾标识,与原始发送数据一起进行打包入关联的发送队列中。
各个业务模块根据各自的需求将原始发送数据添加到发送队列中,由主控发起定时轮询线程定时轮询各个虚拟串口的发送队列,若发送队列中有数据,则将数据依次通过高速总线端口发送给MCU。
在一个可行的实施例中,由MCU将第一组包数据中的原始发送数据发送至关联外接设备,包括:
MCU根据预设包头标识和预设包尾标识对第一组包数据进行解析,得到关联串口标识和原始发送数据,并根据原始发送数据中的具体信息将原始发送数据发送至关联外接设备。
MCU在接收到第一组包数据后,需要进行协议解析拆包处理,以从第一组包数据中分离出实际有效的数据内容。由于第一组包数据中是按照预设格式进行协议封装组包处理的,因此MCU根据对预设包头标识和预设包尾标识的识别,可以定位原始发送数据的位置以及与该原始发送数据关联的串口标识。在得到有效的原始发送数据后,根据原始发送数据的具体内容将其发送给对应的关联外接设备。
在一个可行的实施例中,原始发送数据与关联虚拟串口的映射关系为原始发送数据与关联虚拟串口的串口标识的映射关系;
相应的,根据映射关系对原始返回数据进行协议封装组包处理,得到第二组包数据,包括:
根据映射关系确定与原始返回数据关联的串口标识;
为原始返回数据添加串口标识、预设包头标识以及预设包尾标识,得到第二组包数据。
MCU确定原始返回数据与原始发送数据的关联关系,且确定与原始发送数据关联的串口标识,将该串口标识与原始返回数据进行关联映射。具体的,在确定与原始返回数据关联的串口标识后,按照第一组包数据的协议封装组包处理方式,对原始返回数据进行同样的协议封装组包处理。示例性的,在每个原始返回数据的开始添加预设包头标识,以及在每个原始返回数据的结尾添加预设包尾标识。即按照图4所示数据传输的帧结构进行协议封装组包处理,得到第二组包数据。
步骤103、根据MCU返回的第二组包数据,将原始返回数据通过关联虚拟串口返回给关联的业务模块。
主控CPU根据MCU返回的第二组包数据,从第二组包数据中分离出实际有效的原始返回数据,再将原始返回数据通过关联的虚拟串口返回给关联的业务模块。示例性的,在上述示例的基础上,第二组包数据中包括原始返回数据和虚拟串口的关联关系,因此可以确定原始返回数据的关联虚拟串口。
在一个可行的实施例中,步骤103,包括:
根据预设包头标识和预设包尾标识对第二组包数据进行解析,得到串口标识和原始返回数据;
根据串口标识确定关联虚拟串口,并将原始返回数据发送至关联虚拟串口的接收队列中,以使业务模块从关联虚拟串口的接收队列中获取原始返回数据。
主控根据预设包头标识和预设包尾标识对第二组包数据进行解析,得到串口标识和原始返回数据。具体的,主控在接收到第二组包数据后,需要进行协议解析拆包处理,以从第二组包数据中分离中实际有效的数据内容。由于第二组包数据中是按照预设格式进行协议封装组包处理的,因此主控根据对预设包头标识和预设包尾标识的识别,可以定位原始返回数据的位置以及与该原始返回数据关联的串口标识。在得到有效的原始返回数据后,根据关联的串口标识将原始返回数据送入对应的虚拟串口接收队列中。
如图5所示为主控和MCU之间通过虚拟串口进行数据传输的示意框图。如图5所示,高速总线端口为USB串口,对USB串口/dev/ttyUSB0重新封装后的虚拟串口/dev/ttyVirtual0-/dev/ttyVirtual3,每个虚拟串口的数据均由各自的收发队列来进行管理。每个虚拟串口节点发送的原始发送数据会加上对应串口标识及预设包头标识和预设包尾标识,与原始发送数据一起打包入队列。再通过内核发送线程定时轮询各个虚拟串口的发送队列,并将数据依次通过USB形式发送给MCU。对端的MCU进行数据包的拆包解析,分离出实际有效的数据内容,并根据之前收到的数据包的串口标识,重新组包填充到发送数据缓冲中,通过USB发送给主控。主控端接收数据后根据收到的预设包头标志和预设包尾标识,得到原始返回数据,并根据串口标识送入对应的虚拟串口接收队列中。
在一个可行的实施例中,主控CPU与MCU之间通过第一总线连接,MCU与外接设备之间通过第二总线连接;其中,第一总线的传输速率大于第二总线的传输速率。
在上述示例的基础上,通过第一总线传输的数据为通过第二总线传输的数据之和,并且MCU与多个外接设备连接,因此,第一总线为高速总线,第二总线为低速总线,需要满足高速总线的传输速率大于低速总线的传输速率,以满足速总线和低速总线之间通过FIFO(First In First Out,先进先出)队列进行数据缓冲交互的要求。其中,高速总线可以采用USB的通信方式或pcie、sdio等其他高速总线。
本发明实施例通过预先为主控中每个业务模块确定由高速总线端口映射的关联虚拟串口,多个业务模块通过关联虚拟串口同时将发送到不同外设的原始发送数据进行协议封装组包处理,再将组包数据通过高速总线端口发送至MCU,由MCU将原始发送数据转发至不同外设,再将不同外设返回的数据通过关联虚拟串口返回至对应业务模块。通过虚拟串口映射的方式解决串口独占的问题,实现主控端中多个业务模块同时与多个外界设备进行数据传输,降低串口通信设计的复杂度。
实施例二
图6是本发明实施例二中的基于虚拟串口的数据传输装置的结构示意图,本实施例可适用于主控物理串口满足不了多个软件业务模块向多个外设传输数据的情况,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,如图6所示,该装置包括:
发送数据组包模块610,用于通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,与所述主控CPU中各业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
数据发送模块620,用于将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
数据接收模块630,用于根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
本发明实施例通过预先为主控中每个业务模块确定由高速总线端口映射的关联虚拟串口,多个业务模块通过关联虚拟串口同时将发送到不同外设的原始发送数据进行协议封装组包处理,再将组包数据通过高速总线端口发送至MCU,由MCU将原始发送数据转发至不同外设,再将不同外设返回的数据通过关联虚拟串口返回至对应业务模块。通过虚拟串口映射的方式解决串口独占的问题,实现主控端中多个业务模块同时与多个外界设备进行数据传输,降低串口通信设计的复杂度。
可选的,发送数据组包模块,具体用于:
不同虚拟串口节点将关联业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据,并将所述第一组包数据添加到与虚拟串口关联的发送队列中;
相应的,数据发送模块,具体用于:
发起定时轮询线程对所有虚拟串口关联的发送队列进行定时轮询,将所述发送队列中的第一组包数据通过所述高速总线端口发送至所述MCU。
可选的,发送数据组包模块,具体用于:
关联虚拟串口节点为所述原始发送数据添加关联串口标识、预设包头标识以及预设包尾标识,得到第一组包数据。
可选的,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,包括:
所述MCU根据所述预设包头标识和所述预设包尾标识对所述第一组包数据进行解析,得到所述关联串口标识和所述原始发送数据,并根据原始发送数据中的具体信息将所述原始发送数据发送至关联外接设备。
可选的,所述原始发送数据与关联虚拟串口的映射关系为所述原始发送数据与所述关联虚拟串口的串口标识的映射关系;
相应的,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,包括:
根据所述映射关系确定与所述原始返回数据关联的串口标识;
为所述原始返回数据添加所述串口标识、预设包头标识以及预设包尾标识,得到第二组包数据。
可选的,数据接收模块,具体用于:
根据所述预设包头标识和所述预设包尾标识对所述第二组包数据进行解析,得到所述串口标识和所述原始返回数据;
根据所述串口标识确定关联虚拟串口,并将所述原始返回数据发送至所述关联虚拟串口的接收队列中,以使业务模块从所述关联虚拟串口的接收队列中获取原始返回数据。
可选的,所述主控CPU与所述MCU之间通过第一总线连接,所述MCU与所述外接设备之间通过第二总线连接;其中,所述第一总线的传输速率大于所述第二总线的传输速率。
本发明实施例所提供的基于虚拟串口的数据传输装置可执行本发明任意实施例所提供的基于虚拟串口的数据传输方法,具备执行基于虚拟串口的数据传输方法相应的功能模块和有益效果。
实施例三
图7是本发明实施例三提供的一种电子设备的结构示意图。图7示出了适于用来实现本发明实施方式的示例性电子设备12的框图。图7显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储装置28,连接不同系统组件(包括系统存储装置28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储装置总线或者存储装置控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储装置28可以包括易失性存储装置形式的计算机系统可读介质,例如随机存取存储装置(RAM)30和/或高速缓存存储装置32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储装置28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储装置28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图7中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储装置28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于虚拟串口的数据传输方法,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,每个虚拟串口与所述主控CPU中任一业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
实施例四
本发明实施例四还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的基于虚拟串口的数据传输方法,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,每个虚拟串口与所述主控CPU中任一业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于虚拟串口的数据传输方法,其特征在于,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,每个虚拟串口与所述主控CPU中任一业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
2.根据权利要求1所述的方法,其特征在于,通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据,包括:
不同虚拟串口节点将关联业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据,并将所述第一组包数据添加到与虚拟串口关联的发送队列中;
相应的,将所述第一组包数据通过所述高速总线端口发送至所述MCU,包括:
发起定时轮询线程对所有虚拟串口关联的发送队列进行定时轮询,将所述发送队列中的第一组包数据通过所述高速总线端口发送至所述MCU。
3.根据权利要求1所述的方法,其特征在于,通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据,包括:
关联虚拟串口节点为所述原始发送数据添加关联串口标识、预设包头标识以及预设包尾标识,得到第一组包数据。
4.根据权利要求3所述的方法,其特征在于,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,包括:
所述MCU根据所述预设包头标识和所述预设包尾标识对所述第一组包数据进行解析,得到所述关联串口标识和所述原始发送数据,并根据原始发送数据中的具体信息将所述原始发送数据发送至关联外接设备。
5.根据权利要求4所述的方法,其特征在于,所述原始发送数据与关联虚拟串口的映射关系为所述原始发送数据与所述关联虚拟串口的串口标识的映射关系;
相应的,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,包括:
根据所述映射关系确定与所述原始返回数据关联的串口标识;
为所述原始返回数据添加所述串口标识、预设包头标识以及预设包尾标识,得到第二组包数据。
6.根据权利要求5所述的方法,其特征在于,根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块,包括:
根据所述预设包头标识和所述预设包尾标识对所述第二组包数据进行解析,得到所述串口标识和所述原始返回数据;
根据所述串口标识确定关联虚拟串口,并将所述原始返回数据发送至所述关联虚拟串口的接收队列中,以使业务模块从所述关联虚拟串口的接收队列中获取原始返回数据。
7.根据权利要求1所述的方法,其特征在于,所述主控CPU与所述MCU之间通过第一总线连接,所述MCU与所述外接设备之间通过第二总线连接;其中,所述第一总线的传输速率大于所述第二总线的传输速率。
8.一种基于虚拟串口的数据传输装置,其特征在于,由主控CPU执行,在主控CPU端设置一个高速总线端口与MCU连接,所述MCU与至少两个外接设备连接,包括:
发送数据组包模块,用于通过预先映射的关联虚拟串口对至少两个业务模块同时发送到不同外接设备的原始发送数据进行协议封装组包处理,得到第一组包数据;其中,虚拟串口由所述高速总线端口映射得到,与所述主控CPU中各业务模块关联;所述第一组包数据中至少包括原始发送数据与关联虚拟串口的映射关系;
数据发送模块,用于将所述第一组包数据通过所述高速总线端口发送至所述MCU,由所述MCU将所述第一组包数据中的原始发送数据发送至关联外接设备,并接收不同关联外接设备的原始返回数据,根据所述映射关系对所述原始返回数据进行协议封装组包处理,得到第二组包数据,将所述第二组包数据通过所述高速总线端口返回给所述主控CPU;
数据接收模块,用于根据所述MCU返回的所述第二组包数据,将所述原始返回数据通过关联虚拟串口返回给关联的业务模块。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的基于虚拟串口的数据传输方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的基于虚拟串口的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110972604.2A CN115718712A (zh) | 2021-08-24 | 2021-08-24 | 基于虚拟串口的数据传输方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110972604.2A CN115718712A (zh) | 2021-08-24 | 2021-08-24 | 基于虚拟串口的数据传输方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115718712A true CN115718712A (zh) | 2023-02-28 |
Family
ID=85254103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110972604.2A Pending CN115718712A (zh) | 2021-08-24 | 2021-08-24 | 基于虚拟串口的数据传输方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718712A (zh) |
-
2021
- 2021-08-24 CN CN202110972604.2A patent/CN115718712A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10152441B2 (en) | Host bus access by add-on devices via a network interface controller | |
US7594057B1 (en) | Method and system for processing DMA requests | |
US7577773B1 (en) | Method and system for DMA optimization | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
EP1514191B1 (en) | A network device driver architecture | |
US20040057380A1 (en) | Controlling flow of data between data processing systems via a memory | |
US11750418B2 (en) | Cross network bridging | |
CN110557311B (zh) | 用于系统级封装管芯间访问等待时间的处理器间通信方法 | |
CN116069711B (zh) | 直接内存访问控制器、异构设备、内存访问方法及介质 | |
CN115499505B (zh) | Usb网卡和通信方法 | |
US7460531B2 (en) | Method, system, and program for constructing a packet | |
US6856619B1 (en) | Computer network controller | |
US7249204B2 (en) | Data transfer control device electronic equipment and method data transfer control | |
US20030093631A1 (en) | Method and apparatus for read launch optimizations in memory interconnect | |
US20060265520A1 (en) | Method and system for high speed network application | |
US9594706B2 (en) | Island-based network flow processor with efficient search key processing | |
US9817784B2 (en) | Multi-port transmitter device for transmitting at least partly redundant data, an associated control system, an associated method and an associated computer program product | |
US9137167B2 (en) | Host ethernet adapter frame forwarding | |
US7228375B1 (en) | System and method for efficient input/output of a computer system | |
US20070208896A1 (en) | Interrupt Scheme for Bus Controller | |
CN115718712A (zh) | 基于虚拟串口的数据传输方法、装置、设备和存储介质 | |
US20230112720A1 (en) | Hardware system for automatic direct memory access data formatting | |
US8643655B2 (en) | Method and system for communicating with external device through processing unit in graphics system | |
US9268725B2 (en) | Data transferring apparatus and data transferring method | |
WO2024174846A1 (zh) | 一种随路信息传输方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |