一种虚拟机CAN口数据透传到物理机CAN口设备的方法和设备与流程

文档序号:22757835发布日期:2020-10-31 09:55阅读:181来源:国知局
一种虚拟机CAN口数据透传到物理机CAN口设备的方法和设备与流程

本领域涉及计算机领域,并且更具体地涉及一种虚拟机can口数据透传到物理机can口设备的方法和设备。



背景技术:

随着云计算技术的广泛应用,通过虚拟化的方式部署用户的软件应用程序是目前非常成熟的软件架构模式。

虚拟化的方式,通过虚拟的计算机载体替代了物理的计算机载体,能够在一台真实的物理计算机中通过虚拟化的技术,虚拟出多个独立的虚拟的计算机运行环境,通常将这种虚拟的计算机运行环境称为虚拟机。

对于用户的使用方式来讲,虚拟机与物理机一样,提供了操作系统、硬件驱动等运行环境。

因为虚拟机中的硬件环境是通过虚拟化技术模拟出来的,比如在虚拟机中能够模拟出一个can口的虚拟的物理设备,如果用户的软件应用程序往该can口设备写数据,数据是不能够真正的发送到真实的物理设备的can口设备的。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种将虚拟机中的can口数据透传到物理机中can口设备的方法和设备,通过使用本发明的方法,能够使部署在虚拟机中的用户的软件应用程序跟部署在物理机中一样能够读写物理机上的can口设备的数据。

基于上述目的,本发明的实施例的一个方面提供了一种将虚拟机中的can口数据透传到物理机中can口设备的方法,包括以下步骤:

用户的应用调用第一中间程序的写数据接口,将应用的数据发送到虚拟can口设备的驱动程序存储;

第二中间程序每经过阈值时间读取虚拟can口设备的驱动程序中存储的数据并将数据发送到服务端软件程序;

服务端软件程序调用物理机can口设备驱动程序以将数据发送到物理机can口设备中。

根据本发明的一个实施例,第一中间程序包括能够被用户的应用调用并且能够调用虚拟can口设备的驱动程序的中间层程序。

根据本发明的一个实施例,第二中间程序包括能够与服务端软件程序建立网络通信链接并且能够调用虚拟can口设备的驱动程序的中间层程序。

根据本发明的一个实施例,阈值时间为1秒。

根据本发明的一个实施例,还包括:服务端软件程序读取物理机can口设备的数据,并将数据发送到第二中间程序,第二中间程序将数据发送到虚拟can口设备的驱动程序中存储,当第一中间程序调用读数据接口时,将数据发送到第一中间程序以将数据返回到用户的应用。

本发明的实施例的另一个方面,还提供了一种将虚拟机中的can口数据透传到物理机中can口设备的设备,设备包括:

发送模块,发送模块配置为用户的应用调用第一中间程序的写数据接口,将应用的数据发送到虚拟can口设备的驱动程序存储;

存储模块,存储模块配置为第二中间程序每经过阈值时间读取虚拟can口设备的驱动程序中存储的数据并将数据发送到服务端软件程序;

调用模块,调用模块配置为服务端软件程序调用物理机can口设备驱动程序以将数据发送到物理机can口设备中。

根据本发明的一个实施例,第一中间程序包括能够被用户的应用调用并且能够调用虚拟can口设备的驱动程序的中间层程序。

根据本发明的一个实施例,第二中间程序包括能够与服务端软件程序建立网络通信链接并且能够调用虚拟can口设备的驱动程序的中间层程序。

根据本发明的一个实施例,阈值时间为1秒。

根据本发明的一个实施例,还包括返回模块,返回模块配置为:服务端软件程序读取物理机can口设备的数据,并将数据发送到第二中间程序,第二中间程序将数据发送到虚拟can口设备的驱动程序中存储,当第一中间程序调用读数据接口时,将数据发送到第一中间程序以将数据返回到用户的应用。

本发明具有以下有益技术效果:本发明实施例提供的将虚拟机中的can口数据透传到物理机中can口设备的方法,通过用户的应用调用第一中间程序的写数据接口,将应用的数据发送到虚拟can口设备的驱动程序存储;第二中间程序每经过阈值时间读取虚拟can口设备的驱动程序中存储的数据并将数据发送到服务端软件程序;服务端软件程序调用物理机can口设备驱动程序以将数据发送到物理机can口设备中的技术方案,能够使部署在虚拟机中的用户的软件应用程序跟部署在物理机中一样能够读写物理机上的can口设备的数据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的将虚拟机中的can口数据透传到物理机中can口设备的方法的示意性流程图;

图2为根据本发明一个实施例的将虚拟机中的can口数据透传到物理机中can口设备的设备的示意图;

图3为根据本发明一个实施例的将虚拟机中的can口数据透传到物理机中can口设备的系统的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明的实施例的第一个方面,提出了一种将虚拟机中的can口数据透传到物理机中can口设备的方法的一个实施例。图1示出的是该方法的示意性流程图。

如图1中所示,该方法可以包括以下步骤:

s1用户的应用调用第一中间程序的写数据接口,将应用的数据发送到虚拟can口设备的驱动程序存储;

s2第二中间程序每经过阈值时间读取虚拟can口设备的驱动程序中存储的数据并将数据发送到服务端软件程序;

s3服务端软件程序调用物理机can口设备驱动程序以将数据发送到物理机can口设备中。

通过使用本发明的技术方案,能够使部署在虚拟机中的用户的软件应用程序跟部署在物理机中一样能够读写物理机上的can口设备的数据。

在本发明的一个优选实施例中,第一中间程序包括能够被用户的应用调用并且能够调用虚拟can口设备的驱动程序的中间层程序。

在本发明的一个优选实施例中,第二中间程序包括能够与服务端软件程序建立网络通信链接并且能够调用虚拟can口设备的驱动程序的中间层程序。

在本发明的一个优选实施例中,阈值时间为1秒。

在本发明的一个优选实施例中,还包括:服务端软件程序读取物理机can口设备的数据,并将数据发送到第二中间程序,第二中间程序将数据发送到虚拟can口设备的驱动程序中存储,当第一中间程序调用读数据接口时,将数据发送到第一中间程序以将数据返回到用户的应用。

本发明从部署结构上分为客户端软件程序和服务端软件程序。客户端软件程序是指用户的软件应用程序部署所在的虚拟机中需要安装的本发明的软件程序;服务端软件程序是指真实的can口设备所连接的物理机中需要安装的本发明的软件程序。

客户端软件程序,需要部署在虚拟机中,由3部分组成:

(1)虚拟can口设备的驱动程序,简称a程序。

(2)能够被用户的软件应用程序调用,并且能够调用虚拟can口设备的驱动程序的中间层程序,简称b程序。

用户的软件应用程序,a程序,b程序,三者之间的关系是:

当发送can口数据时,用户的软件应用程序调用b程序的写数据接口,b程序的写数据接口调用a程序的写数据接口,a程序将数据通过队列的方式进行缓存。

当读取can口数据时,用户的软件应用程序调用b程序的读数据接口,b程序的读数据接口调用a程序的读数据接口,a程序删除缓存在队列中的数据并将该数据向上返还。

(3)能够与服务端软件程序建立网络通信链接,并且能够调用虚拟can口设备的驱动程序的中间层程序,简称c程序。

a程序,c程序,服务端软件程序三者之间的关系是:

当用户的软件应用程序发送数据时,由上述所知,a程序中已经通过队列的方式缓存了数据,c程序调用a程序的读数据接口,读取a程序中的数据,并将数据通过网络化的方式发送到服务器端软件程序。

c程序通过网络化的方式接收到服务端软件程序发送的数据,并调用a程序的写数据接口,由a程序通过队列的方式缓存该数据。

服务端软件程序,简称d程序,需要部署在物理机中,主要功能包括:

d程序能够建立与c程序的网络链接,能够接收c程序发送的数据,并将数据写入到真实的can口设备,能够读取真实的can口设备的数据,并将数据发送到c程序。

实施例

如图3所示为实现本发明的方法的系统框图,整个系统包括程序a、程序b、程序c、程序d。

整个系统的部署流程如下:

(1)在虚拟机中安装虚拟can设备的驱动程序,即程序a。

(2)在虚拟机中安装程序c,并且程序c以服务的方式启动。

(3)在在物理机中安装程序d,并且程序d以服务的方式启动。

整理系统的数据处理流程如下:

(1)程序b封装了调用程序a的写数据接口和读数据接口。程序b中的写数据接口,能够将数据发送到程序a,并且在程序a中以队列的方式缓存数据;程序b中的读数据接口,能够读取缓存在程序a中的队列中的数据。

(2)程序c以服务的方式启动,并且启动2个线程:读线程和写线程。2个线程以阻塞的模式启动,并且每隔1秒种的时间执行一次任务。读线程用于每隔1秒种的时间,从程序a中读取缓存在队列中的由程序b写入的数据,当数据不为空时,将数据发送到程序d。写线程用于每隔1秒种的时间,检查是否有从程序d中发送过来的数据,如果数据不为空,则将数据发送到程序a中,由程序a将数据缓存到队列中。

(3)程序c与程序d之间通过socket建立tcp/ip链接。

(4)用户的软件应用程序,通过调用程序b的写数据接口,将数据发送到了程序a,程序c通过读线程中的处理任务,定时将程序a中缓存的数据读取出来,并将数据通过tcp/ip协议发送到程序d,由程序d调用物理机的can设备驱动程序,将数据发送到真实的can设备。

(5)程序d读取真实的can设备的数据,并将数据通过tcp/ip协议发送到程序c,程序c通过写线程中的处理任务,定时将数据发送到程序a中,程序a将数据缓存到队列中,当程序b调用读数据接口时,程序a将队列中的数据发送到程序b,由程序b将数据返回到用户的软件应用程序。

通过本发明的技术方案,能够使部署在虚拟机中的用户的软件应用程序跟部署在物理机中一样能够读写物理机上的can口设备的数据。

需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。

基于上述目的,本发明的实施例的第二个方面,提出了一种将虚拟机中的can口数据透传到物理机中can口设备的设备,如图2所示,设备200包括:

发送模块,发送模块配置为用户的应用调用第一中间程序的写数据接口,将应用的数据发送到虚拟can口设备的驱动程序存储;

存储模块,存储模块配置为第二中间程序每经过阈值时间读取虚拟can口设备的驱动程序中存储的数据并将数据发送到服务端软件程序;

调用模块,调用模块配置为服务端软件程序调用物理机can口设备驱动程序以将数据发送到物理机can口设备中。

在本发明的一个优选实施例中,第一中间程序包括能够被用户的应用调用并且能够调用虚拟can口设备的驱动程序的中间层程序。

在本发明的一个优选实施例中,第二中间程序包括能够与服务端软件程序建立网络通信链接并且能够调用虚拟can口设备的驱动程序的中间层程序。

在本发明的一个优选实施例中,阈值时间为1秒。

在本发明的一个优选实施例中,还包括返回模块,返回模块配置为:服务端软件程序读取物理机can口设备的数据,并将数据发送到第二中间程序,第二中间程序将数据发送到虚拟can口设备的驱动程序中存储,当第一中间程序调用读数据接口时,将数据发送到第一中间程序以将数据返回到用户的应用。

需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。

上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

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