CN111949344A - 一种虚拟机远程访问usb外设的数据的方法 - Google Patents

一种虚拟机远程访问usb外设的数据的方法 Download PDF

Info

Publication number
CN111949344A
CN111949344A CN201910472752.0A CN201910472752A CN111949344A CN 111949344 A CN111949344 A CN 111949344A CN 201910472752 A CN201910472752 A CN 201910472752A CN 111949344 A CN111949344 A CN 111949344A
Authority
CN
China
Prior art keywords
usb
image
frame
terminal
server
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
Application number
CN201910472752.0A
Other languages
English (en)
Inventor
杜金新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to JP2021567928A priority Critical patent/JP2022532604A/ja
Priority to EP20804849.6A priority patent/EP3958119B1/en
Priority to PCT/CN2020/089502 priority patent/WO2020228650A1/zh
Publication of CN111949344A publication Critical patent/CN111949344A/zh
Priority to US17/524,715 priority patent/US12008393B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明提供一种虚拟机远程访问USB外设的数据的方法。所述终端连接有通用串行总线USB设备,并通过网络访问服务器中的虚拟机。USB设备采集到图像数据后,把采集到的图像数据发送给终端,由于USB通信协议USB请求块(USB request block,URB)的对传输数据的长度的限制,USB设备会将一帧图像会被分割成多个图像数据,然后将分割后的多个图像数据分别发送至终端,终端在接收到所述USB设备发送的多个图像数据后,将所述多个图像数据拼成一帧图像,然后将所述一帧图像发送至所述虚拟机所在的所述服务器。通过本发明所提供的方法,将多个图像数据拼成一帧图像传输至服务器,可以有效节省网络带宽。

Description

一种虚拟机远程访问USB外设的数据的方法
技术领域
本申请涉及信息技术领域,尤其涉及一种虚拟机远程访问USB外设的数据的方法。
背景技术
云桌面场景下,通用串行总线(Universal Serial Bus,USB)重定向技术的应用可以使虚拟机使用云终端上的USB外设,这样,用户通过使用虚拟机可以实现简易办公,如使用连接在云终端的高拍仪、摄像头、扫描仪等。但在通过USB重定向技术使用上述图像类设备时,如果上述图像类设备所产生的图像为高分辨率的图像,则图像传输过程中会有延时大,带宽高的缺点,这会导致视频图像卡顿,或无法显示图像等问题。
发明内容
本发明提供一种虚拟机远程访问USB外设的数据的方法,通过将USB外设传输的图像数据拼成一帧图像后再传输至虚拟机,以减少数据传输的时延。
本发明实施例第一方面提供一种由终端执行的数据处理的方法。所述终端连接有USB设备,并通过网络访问服务器中的虚拟机。USB设备采集到图像数据后,把采集到的图像数据发送给终端,由于USB通信协议USB请求块(USB request block,URB)的限制,一帧图像需要被分割成多个图像数据,然后将分割后的多个图像数据分别发送至终端,终端在接收到所述USB设备发送的多个图像数据后,将所述多个图像数据拼成一帧图像,然后将所述一帧图像发送至所述虚拟机所在的所述服务器。
通过将多个图像数据拼成一帧图像后再发送给服务器,可以减少因多个图像数据分别通过网络传输给服务器时所引起的网络时延。
在第一方面可选的一种实现方式中,在接收所述USB设备发送的多个图像数据之前,所述终端还生成多个数据请求包,所述多个数据请求包为URB协议中定义的URB,然后将多个请求包发送给USB设备。USB设备在收到多个数据请求包后,会为每个数据请求包生成响应消息,每个响应消息中携带一个图像数据,然后将响应消息发送给终端。
通过在终端模拟服务器中产生的数据请求包,可以网络上传输的数据量,从而节省了网络带宽。
在第一方面可选的一个实施方式中,在所述将所述一帧图像发送至所述虚拟机所在的服务器之前,所述方法还包括:对所述一帧图像进行压缩。
通过对所传输的图像进行压缩,可以进一步减少在网络上传输的数据量,从而进一步节省了网络带宽。
在第一方面可选的一个实施方式中,确定所述一帧图像的格式不是压缩格式。
在第一方面可选的一个实施方式中,所述终端接收所述服务器发送的图像数据的格式,所述图像数据的格式用于确定所述一帧图像的格式是否是压缩格式。
通过从服务端获取图像数据的格式,可以避免用户对终端做过多修改即可实现本发明。
在所述生成多个数据请求包之前,所述方法还包括:
接收所述服务器发送的生成指令,所述生成指令用于指示所述终端生成所述多个数据请求包。
在第一方面可选的一个实施方式中,所述生成指令包括所述USB设备的访问地址;
所述生成多个数据请求包包括:将所述USB设备的访问地址添加至每个数据请求包中;所述方法还包括:根据每个数据请求包中的所述USB设备的访问地址查找所述USB设备。
在第一方面可选的一个实施方式中,所述每个响应消息还包括帧标识及子帧标识,所述帧标识用于标识所述一帧图像,所述子帧标识用于标识所述响应消息所携带的图像数据位于所述一帧图像中的位置;所述将所述多个图像数据拼成一帧图像包括:根据所述帧标识及子帧标识将将所述多个响应消息中携带的图像数据拼成一帧图像。
通过设置帧标识及子帧标识,可以快速准确的将多个图像数据拼成一帧图像。
在第一方面可选的一个实施方式中,所述方法还包括:接收所述服务器发送的分辨率;根据所述分辨率的大小确定缓存所述一帧图像的缓存的大小;在所述将所述多个图像数据拼成一帧图像后,缓存所述一帧图像。
在第一方面可选的一个实施方式中,所述方法还包括:接收所述服务器发送的分辨率;
在所述将所述多个图像数据拼成一帧图像后根据所述分辨率的大小判断所拼成的一帧图像是否出错。
在第一方面可选的一个实施方式中,所述方法还包括:当所述终端所使用的操作系统与虚拟机所使用的操作系统不同时,将所述请求包转换为所述终端能够识别的格式。
本发明实施例第二方面提供一种由服务器执行的数据处理的方法。所述服务器中运行有虚拟机,并且所述服务器通过网络与终端通信。首先所述服务器中的USB设备驱动生成多个数据请求包,服务端接收所述终端发送的图像帧,将所述图像帧分割为多个子帧,及生成每个数据请求包的响应信息,每个响应信息包括所述多个子帧中的其中一个子帧;USB设备驱动获取每个响应信息中的子帧以将所述多个子帧拼成所述图像帧。
在本发明第二方面的一种可选的实施方式中,所述服务端发送USB设备开启指令至所述终端;接收所述终端发送的所述开启指令的响应信息;当所述响应信息指示所述USB设备已开启时,发送生成指令至所述终端,所述生成指令用于指示所述终端生成多个数据请求包。
本发明实施例第三方面提供一种终端,所述终端连接有通用串行总线USB设备,所述终端通过网络访问虚拟机,所述虚拟机运行在服务器中,所述终端包括USB总线驱动和USB客户端,所述USB总线驱动和所述USB客户端用于执行第一方面各个实施方式中所提供的数据访问方法的各步骤。
本发明实施例第四方面提供一种服务器,所述服务器通过网络与终端通信,所述服务器包括USB设备驱动及服务端,所述USB设备驱动及服务端用于执行第二方面各个实施方式中所提供的数据访问方法的各步骤。
本发明实施例第五方面提供一种终端,所述终端包括处理器及存储器,所述存储器存储有程序指令,所述处理器执行所述存储器中的程序指令以执行第一方面各个实施方式所提供的数据处理方法的各个步骤。
本发明实施例第六方面提供一种服务器,所述服务器包括处理器及存储器,所述存储器存储有程序指令,所述处理器执行所述存储器中的程序指令以执行第二方面各个实施方式所提供的数据处理方法的各个步骤。
本发明第七方面提供一种计算机可读存储介质,所述存储介质上存储有程序指令,执行所述程序指令即可实现本发明第一方面所提供的数据处理方法的各个步骤。
本发明第八方面提供一种计算机可读存储介质,所述存储介质上存储有程序指令,执行所述程序指令即可实现本发明第二方面所提供的数据处理方法的各个步骤。
本发明第九方面提供一种数据处理系统,包括本发明实施例第二方面各实施方式所提供的虚拟机及本发明实施例第一方面各实施方式所提供的终端。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例所应用的云桌面系统的架构图。
图2为本发明实施例中终端访问终端所连接的USB设备时终端中各个功能模块之间的数据流向。
图3为本发明实施例中的虚拟机与终端的结构图。
图4为本发明实施例中USB设备连接至所述终端后,所述虚拟机获取所述USB的信息的方法的流程图的方法。
图5为本发明第一实施例中虚拟机访问终端所连接的USB设备时数据在各个模块之间流动的示意图。
图6为本发明第一实施例中虚拟机访问终端所连接的USB设备的方法的流程图。
图7为本发明第二实施例中虚拟机访问终端所连接的USB设备时数据在各个模块之间流动的示意图。
图8为本发明第二实施例中虚拟机访问终端所连接的USB设备的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
随着网络技术的发展,云桌面以其方便使用、易管理、易扩展等特点被很多企业所采用。在使用云桌面时,可以使用USB重定向技术使用终端上的USB设备。
如图1所示,为一种云桌面系统的架构图。终端101通过网络102连接至远端服务器103。服务器103中运行有至少一个虚拟机104。终端101可通过网络102访问所述虚拟机104,所述网络为因特网或者局域网。
终端101可以为笔记本电脑、手机、桌上型电脑、或瘦终端(Thin-client)等。终端101包括显示器、键盘、鼠标、视频设备等外设。用户基于终端101提供的外设访问所述虚拟机104,例如通过显示器显示云桌面,通过键盘及鼠标操作所述云桌面,通过视频设备获取图像数据并在所述云桌面显示。一般终端101上会设置有若干个USB端口105,一些USB外设106例如鼠标、键盘、视频设备等通过USB端口105连接至终端101。而虚拟机104通过USB重定向技术使用所述USB端口105所连接的USB外设106。
为了更容易理解USB重定向技术,首先介绍终端(例如个人电脑)对连接至其上的USB外设的访问方法。如图2所示,终端200上通过USB端口201连接有USB设备202,在终端200中包括USB应用程序203、USB设备驱动204、USB总线驱动205。其中USB应用程序203为需要访问USB外设的应用程序,例如照相机、在线直播、视频聊天等视频软件等。USB设备驱动204及USB总线驱动205是为了使USB应用程序访问USB外设所设置的驱动程序,安装在终端200上并由终端200的处理器运行的程序。为了方便描述,在下面的描述中,将由处理器运行程序所执行的功能描述为上述程序本身执行的功能。
当USB设备202连接至终端200时。USB端口201会产生连接信号,USB总线驱动205检测到所述连接信号后,启动所述USB设备驱动204,以做好传输所述USB应用程序与USB设备202之间的数据的准备。
图2所描述的为终端200访问自身所连接的USB外设的过程,这种场景下,USB应用程序、USB设备驱动、USB总线驱动都在终端设备中。但在云桌面系统下,即在通过虚拟机访问终端所连接的USB外设的场景下,由于数据需要在连接两个设备的网络传输USB应用程序及USB设备驱动会被安装在虚拟机端,而USB总线驱动被安装在终端。在云桌面系统下虚拟机104与终端101的结构图请参考图3的描述。
如图3所示,虚拟机104的宿主机为服务器103,所以虚拟机104的CPU1041、存储器1042、总线1043及网卡(NIC)1044都是所述服务器103为所述虚拟机104分配的虚拟资源。所述存储器1042中存储有USB应用程序1045、USB设备驱动1046、虚拟USB总线驱动1047、USB服务端1048。所述终端101包括CPU1011、存储器1012、总线1013及网卡1014。所述存储器1042中存储有USB客户端1013、虚拟USB设备驱动1014、USB总线驱动1015。CPU1041运行存储器1042中存储的各个程序以实现各个程序的功能。同理,CPU1011运行存储器1012中存储的各个程序以实现各个程序的功能。
由于虚拟机104与终端101通过网络连接,USB应用程序1045安装在虚拟机104中,USB外设106连接在终端101上,所以USB应用程序1045必须通过网络访问USB外设106。为了使USB应用程序1045能够通过网络访问远端的USB外设106,USB总线驱动1015安装在终端101中,而USB设备驱动1046安装在虚拟机104中。另外,为了使虚拟机104及终端101都感知不到通信的对方在远端,在虚拟机104中安装有虚拟USB总线驱动1047,在终端101中安装有虚拟USB设备驱动。本发明实施例中,终端101与虚拟机104通过云桌面协议进行通信,所以在终端101设置USB客户端1013,在虚拟机104中设置了USB服务端1048,以将在虚拟机104与终端101之间传输的数据转换为符合云桌面协议的格式的数据。本实施例中所述云桌面协议可以为远程桌面协议(remote desktop protocol,RDP)、独立计算结构(IndependentComputing Architecture,ICA)协议等。
下面介绍当外设106连接至所述终端101时,所述虚拟机104发现所述终端101并启动USB设备驱动1046,使所述USB应用程序1045与所述视频设备106进行通信的方法,所述方法的流程图如图4所示。
在步骤S401,USB外设106被连接至所述终端101的USB端口105。
在步骤S402,所述USB端口105产生连接信号。
在步骤S403,所述USB总线驱动1015检测到所述连接信号后,为所述USB外设106查找设备驱动程序,并为所述USB外设106分配访问地址及获取所述外设106的描述信息。所述描述信息包括设备描述符及配置描述符,所述设备描述符可以是设备类型、所支持的协议等,所述配置描述符可以是所述USB外设所支持的功能。由于USB设备驱动安装在虚拟机104中,所以为了使USB总线驱动仍然以原有方式工作,则在终端安装虚拟USB设备驱动1014,这样,所述USB总线驱动1015就可以将所述虚拟USB设备驱动1014作为所述外设106的设备驱动,并将为所述外设分配的访问地址及获取的描述信息发送至所述虚拟USB设备驱动1014。
在步骤S404,所述虚拟USB设备驱动1014将所述USB外设106的访问地址及描述信息发送至所述USB客户端1013。
在步骤S405,所述USB客户端1013将接收到的数据封装为符合云桌面协议的网络数据。
在步骤S406,所述USB客户端1013将所述网络数据通过网络传输至虚拟机104。
在步骤S407,虚拟机104的USB服务端1048在接收到所述网络数据后,将所述网络数据转换为USB外设106的访问地址及描述信息,并将转换后的数据传输至虚拟USB总线驱动1047。为了使所述USB设备驱动1046感知不到数据是通过网络传输的,所以在虚拟机端设置了虚拟USB总线驱动1047。
在此需要说明的是,在所述虚拟机104与所述终端101所使用的操作系统不同时,所述虚拟USB总线驱动1047还会将所述连接信号转换为所述虚拟机104的系统能够识别的信号。例如,假设虚拟机104使用的是LINIX系统,而终端101使用的是WINDOWS系统,则所述虚拟USB总线驱动1047会将所述WINDOWS格式的数据转换为LINIX格式的数据。
在步骤S408,虚拟USB总线驱动1047所述访问地址及描述信息发送至USB设备驱动。
在步骤S409,所述USB设备驱动1046在接收到所述访问地址及描述信息后,在所述虚拟机104记录访问地址及描述信息,并启动所述USB设备驱动,在所述USB设备驱动1046启动后,所述USB应用程序1045即可与所述USB外设106进行数据交互了。下面将结合图5及图6描述USB应用程序1045与USB外设106进行数据交互的过程。
本发明实施例主要介绍的是USB应用程序1045为图像类应用程序(例如用于获取视频数据的照相机、直播软件、聊天软件等或者扫描图像的扫描仪程序),且USB外设106为获取图像的图像设备时,USB应用程序1045获取USB设备106的图像数据的过程。其中,图5为所述USB应用程序1045获取USB外设106的图像数据时的数据流向,图6为所述USB应用程序1045获取USB外设106的图像数据的方法的流程图。
图5及图6的实施例以获取USB外设106的一帧图像为例进行说明。本实施例中,当所述USB应用程序1045为视频软件时,所述虚拟机104中所预装的USB设备驱动为通用的USBVideo Class协议,当然也可以是其他视频设备专用的协议。
步骤S601,USB应用程序1045产生数据访问请求,并发送数据访问请求至USB设备驱动,所述数据访问请求中包含所述USB外设106的地址。用户在需要获取图像数据时,打开安装在虚拟机上的USB应用程序1045,或者启动USB应用程序中的视频功能,即可产生数据访问请求。
步骤S602,USB设备驱动1046根据接收到的数据访问请求产生USB请求块(USBrequest block,URB),并将所述URB发送至虚拟USB总线驱动。
所述USB应用程序1045与所述USB外设106主要通过URB协议进行交互。URB是USB设备驱动1046中用来描述与USB外设106通信时的核心数据结构。在生成所述URB时,所述USB设备驱动1046会定义所述URB所能携带的数据大小、还会携带所述USB外设106的地址。所述USB外设106的地址为所述USB外设106连接至终端101时,所述USB总线驱动1015分配的,获取方式请参考图4的相关描述。另外,为了持续获取USB外设106产生的图像数据,所述USB设备驱动1046会持续产生URB。
步骤S603,所述虚拟USB总线1045将所述URB发送至所述USB服务端1048。
步骤S604,所述USB服务端1048将所述URB转换为能够符合云桌面协议的网络数据包,然后将所述网络请求包发送至所述终端101。
在转换时,首先从所述URB中提取出相关数据,例如所述USB外设106的地址、数据长度等,然后将所提取的数据封装为符合云桌面传输协议的网络数据包。
步骤S605,终端101的USB客户端1013在接收到所述网络数据包后,将所述网络数据包转换为URB,并将所述URB发送至虚拟USB设备驱动1014。
在此需要说明的是,在终端101与虚拟机104采用不同的操作系统时,终端101产生的URB与虚拟机104的URB的结构不同,在这种情况下,所述USB客户端1013还会将所述URB转换为所述终端101的操作系统所能识别的URB。例如,在虚拟机104采用的是Linix操作系统,而终端使用的是Windows操作系统的时,所述虚拟USB设备驱动1014就需要将在Linix操作系统下产生的URB转化为Windows操作系统下的URB。
步骤S606,所述虚拟USB设备驱动1014将所述URB发送至所述USB总线驱动1015。
步骤S607,所述USB总线驱动1015根据所述URB中携带的所述USB外设106的地址将所述URB发送至USB外设106。
步骤S608,USB外设106在接收到所述URB后,将USB外设106获取的与所述URB定义的固定长度的数据填充在所述URB携带的buffer中,然后在所述URB中添加头信息,所述头信息包括所述图像数据所属的帧的标识,以及所属帧中的那一部分的标识,如此,生成所述URB的响应消息,并将所述响应信息传输至所述USB总线驱动1015。
步骤S609,所述USB总线驱动1015传输所述响应消息至USB虚拟设备驱动1014。
步骤S610,所述虚拟设备驱动1014将所述虚拟USB设备驱动返回响应信息转换为网络数据,即TCP包,然后将所述网络数据通过网络发送至所述USB服务端1048。
步骤S611,所述USB服务端1048将所述网络数据包转换为URB结构的响应消息,并将所述响应消息发送至所述USB虚拟总线驱动1045。
步骤S612,所述USB虚拟总线驱动1045再将所述响应消息返回到所述USB设备驱动1046。
步骤S613,所述USB设备驱动1046将返回的多个响应消息中的图像数据合成一帧图像,然后将合成的一帧图像返回到视频APP,并显示图像。如此,即可从视频设备106获取视频数据。
在所述URB格式的请求包中,记录有每个子图像所属的帧的标识及每个子图像的标识,所述USB设备驱动1046根据帧的标识及子图像的标识即可拼成一帧图像。
在此需要说明的是,在所述视频应用程序开启之后,所述视频应用程序向USB设备驱动查询视频设备支持的数据格式、分辨率等摄像头属性及启动摄像头操作。所述USB设备驱动产生获取参数的控制指令及启动摄像头的控制指令,所述控制指令被封装为URB结构后传输至终端,以获取视频应用程序的参数并控制摄像头开启。控制指令的数据流向与图5的相同,在此不再赘述。
由于URB协议的限定,每个URB请求包中只能携带一定长度的数据,一般需要发送多个URB请求才能获取一帧图像,而每个URB请求都需要经过网络传输。尤其需要获取高分辨率图像的场景下,显示一帧图像所需要的传输的URB请求会更多,这样会导致所累积的网络延时更大,从而导致图像卡顿或无法显示。
另外,所有从终端101获取的响应消息,都未经过压缩处理,就通过网络发往虚拟机104,导致网络带宽非常大。
为了解决上述问题,本发明另一实施例提供了一种数据处理方法,可以将多个URB中的图像数据拼成一帧图像后再发送至虚拟机,从而减少网络延时。
进一步的,可以对所拼成的一帧图像进行压缩,并将压缩后的图像发送至虚拟机,这样可以减少网络带宽。
在视频应用程序开启之后,与第一实施例相同的是,所述视频应用程序会发送控制指令获取视频设备备支持的数据格式、分辨率等摄像头属性及启动摄像头操作。并将结果反馈至视频应用程序。与第一实施例不同的是,所述服务端在接收到客户端发送的数据格式、分辨率、及数据传输通道等参数时,会将这些参数回传至客户端。关于客户端对这些参数的使用将在下文进行描述。
如图7及图8所示,为本发明实施例中可以减少获取图像数据的网络带宽的方法数据流向示意图及流程图。该方法同样应用与图1及图3所示的系统架构中。
步骤S801,当USB应用程序1047开启后,所述USB应用程序1047发送USB外设开启指令至终端101。
在本发明实施例中,当所述USB应用程序1047开启后,还会发送控制指令以获取USB外设所支持的数据格式、分辨率等USB外设106的属性,所述USB应用程序获取USB外设的属性及开启设备的方式与第一实施例相同,在此不再赘述。与第一实施例不同的是,在USB应用程序1047获取USB外设106的参数的过程中,所述USB客户端1013会获取所传输的参数并存储。在第一实施例中,所述USB客户端1013只是将所述参数传输至虚拟机104,但在本实施例中,所述USB客户端1013会获取所传输的参数,获取所述参数的方式有两种,第一种为当所述参数传输到USB客户端1013时,客户端1013直接获取所传输的参数后,再继续将其传输至虚拟机104。另外一种是USB客户端在接收到所述参数后,将其传输至虚拟机的USB服务端1048,USB服务端1048获取参数后,再将所获取的参数回传至USB客户端1013。在实际应用中,在终端101不方便编译的情况下,可通过在虚拟机侧获取参数,再回传至终端101的方式为USB客户端1013提供所使用的所述参数。
步骤S802,所述终端101在接收到所述USB外设开启指令后开启USB外设106,然后传输指示USB设备已开启的响应信息至虚拟机104。
步骤S803,虚拟机104的USB应用程序发送数据访问请求至所述USB客户端1013。
步骤S804,所述USB客户端1013根据所接收到的数据访问请求,生成URB,并将所生成的URB发送至虚拟USB设备驱动。
在生成所述URB请求包时,在所述URB请求包中指定所述USB外设106的地址,所述USB外设106的地址可以由所述USB服务端发送至所述USB客户端1013,也可以由所述USB客户端1013从终端101获取,例如在客户端1013传输所述外设地址时,获取所述地址并存储。
步骤S805,所述虚拟USB设备驱动1014将所述URB发送至所述USB总线驱动1015。
步骤S806,所述USB总线驱动1015获取所述URB中的地址将所述URB发送给所述USB外设106。
步骤S807,所述USB外设106根据所述URB获取图像数据,并将图像数据填充至所述URB请求的响应信息中,并将所述响应信息通过所述USB端口发送至所述USB总线驱动。
关于USB外设106生成URB响应信息的方法与图6中的步骤S605相同,在此不再赘述。
步骤S808,所述USB总线驱动将所述响应消息发送至所述虚拟USB设备驱动。
步骤S809,所述虚拟USB设备驱动将所述响应消息传输至USB客户端。
步骤S810,所述USB客户端从所述响应信息中提取出所述图像数据,并将所述图像数据与从其他响应信息中提取的图像数据拼成一帧图像。
由于URB响应信息中头信息包括所述图像数据所属的帧的标识,以及所属帧中的那一部分的标识,根据这些标识即可将多个URB响应信息中携带的图像数据拼成一帧图像。
在步骤S802中,USB客户端1013获取了图像的分辨率,所以可以根据所述分辨率预先准备存储所述一帧图像的缓存(buffer),这样,在所述一帧图像拼好之后,即可存储在该buffer中。另外,还可以根据所述分辨率判断所拼成的一帧图像是否出错,如果所拼成的图像大于该分辨率下一帧图像的大小,则可判定为出错。
可选地,为了节省网络带宽,在传输所述一帧图像之前,对其进行压缩,但由于有的图像已经是压缩格式,所以需要执行步骤S811判断所述一帧图像是否为压缩格式。
步骤S811,所USB客户端根据所述图像数据的格式,确定所述图像数据是否为压缩格式。
由于客户端在步骤S802中以获取了所述图像数据的格式,则可根据所述图像数据的格式确定是否为压缩格式。
步骤S812,如果所述图像数据为压缩格式,则将所述合并后的一帧图像数据封装为网络数据,即封装成TCP协议的数据,然后将封装后的数据传输至虚拟机104。
步骤S813,如果所述图像数据为不是压缩格式,则将所述图像数据进行压缩,将压缩后的数据设置压缩格式标记,然后执行步骤S814。
步骤S814,虚拟机104的USB服务端接收到所述网络数据后,从所述网络数据中提取图像数据,并根据设置的数据格式判断所述图像数据的数据格式是否为经USB客户端压缩的数据。
步骤S815,如果是经USB客户端压缩的数据,则对所压缩的数据进行解压缩,执行步骤S816。
由于只有在客户端包括了对所传输的一帧图像进行压缩的功能后,在虚拟机104端才会确定是否对所接收的一帧图像进行解压缩,所以步骤S814及S815也是可选步骤。
步骤S816,如果不是经USB客户端压缩的数据,则直接将所述图像分割为多份。
在步骤S815及816中,在分割数据时,以URB所设定的数据长度为单位进行分割。
分割为多份的数据可以先缓存等待USB应用程序来取。
下面介绍下USB应用程序打开后获取图像数据的方法,如图8中的步骤S816至S821所示。
步骤S817,USB应用程序打开后,产生数据访问请求,并将所述数据访问请求发送至所述USB设备驱动。
步骤S818,所述USB设备驱动1046产生URB,并将所述URB发送至虚拟USB总线。
所述USB设备驱动1046产生URB的方式与步骤S602相同,在此不再赘述。
步骤S819,虚拟USB总线驱动将所述URB发送至USB服务端1048。
步骤S820,所述USB服务端1048获取所缓存的已经分割图像数据,并生成URB响应信息,并将所生成的URB响应信息传输至虚拟USB总线驱动1045。
关于生成URB响应信息的方法与图6中的步骤S605相同,在此不再赘述。
步骤S821,虚拟USB总线驱动1045将所述URB响应信息发送至USB设备驱动1046。
步骤S822,USB设备驱动1046从所述URB响应信息中获取图像数据,并拼成一帧图像后传输至USB应用程序进行显示。
通过图7及图8所提供的实施例,所述终端把USB外设传输的多个URB响应信息中的图像数据提取出来后拼接成一帧图像,然后把拼接后的一帧图像发送至服务器端,这与图5及图6所示实施例中将每个URB中的图像数据单独发送给服务器的方式相比,减少了数据的传输时延。
另外,与图5及图6所述的实施例中的方案相比,图7及图8所提供的实施例中不需要把虚拟机的URB发送至终端,而是终端根据虚拟机的指令自己生成URB,这样可以减少网络上传输的URB的数量,从而节省了网络带宽。
进一步的,图7及图8所提供的实施例在传输所述一帧图像至服务器之前,还会对所述一帧图像进行压缩,这样进一步节省了网络带宽。
需要说明的是,上述实施例中的模块可以以软件、硬件或二者结合来实现。当以上任一模块或单元以软件实现的时候,所述软件以计算机程序指令的方式存在,并被存储在存储器中,处理器可以用于执行所述程序指令并实现以上方法流程。所述处理器可以包括但不限于以下至少一种:中央处理单元(central processing unit,CPU)、微处理器、数字信号处理器(DSP)、微控制器(microcontroller unit,MCU)、或人工智能处理器等各类运行软件的计算设备,每种计算设备可包括一个或多个用于执行软件指令以进行运算或处理的核。该处理器可以内置于SoC(片上系统)或专用集成电路(application specificintegrated circuit,ASIC),也可是一个独立的半导体芯片。该处理器内处理用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程门阵列(field programmable gate array,FPGA)、PLD(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路。
当以上模块或单元以硬件实现的时候,该硬件可以是CPU、微处理器、DSP、MCU、人工智能处理器、ASIC、SoC、FPGA、PLD、专用数字电路、硬件加速器或非集成的分立器件中的任一个或任一组合,其可以运行必要的软件或不依赖于软件以执行以上方法流程。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (23)

1.一种数据处理的方法,其特征在于,所述方法由终端执行,所述终端连接有通用串行总线USB设备,所述终端通过网络访问虚拟机,所述虚拟机运行在服务器中,所述方法包括:
接收所述USB设备发送的多个图像数据;
将所述多个图像数据拼成一帧图像;
将所述一帧图像发送至所述虚拟机所在的所述服务器。
2.如权利要求1所述的方法,其特征在于,在所述接收所述USB设备发送的多个图像数据之前,所述方法还包括;
生成多个数据请求包;
将所述多个数据请求包发送至所述USB设备;
所述接收所述USB设备发送的多个图像数据包括:
接收所述USB设备发送的所述多个数据请求包的响应消息,每个响应消息中携带一个图像数据。
3.如权利要求1或2所述的方法,其特征在于,在所述将所述一帧图像发送至所述虚拟机所在的所述服务器之前,所述方法还包括:
对所述一帧图像进行压缩。
4.如权利要求3所述的方法,其特征在于,在所述对所述一帧图像进行压缩之前,所述方法还包括:
确定所述一帧图像的格式不是压缩格式。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述服务器发送的图像数据的格式,所述图像数据的格式用于确定所述一帧图像的格式是否是压缩格式。
6.如权利要求2所述的方法,其特征在于,在所述生成多个数据请求包之前,所述方法还包括:
接收所述服务器发送的生成指令,所述生成指令用于指示所述终端生成所述多个数据请求包。
7.如权利要求6所述的方法,其特征在于,所述生成指令包括所述USB设备的访问地址;
所述生成多个数据请求包还包括:
将所述USB设备的访问地址添加至每个数据请求包中;
所述方法还包括:
根据每个数据请求包中的所述USB设备的访问地址查找所述USB设备。
8.如权利要求2所述的方法,其特征在于,所述每个响应消息还包括帧标识及子帧标识,所述帧标识用于标识所述一帧图像,所述子帧标识用于标识所述响应消息所携带的图像数据位于所述一帧图像中的位置;
所述将所述多个图像数据拼成一帧图像包括:
根据所述帧标识及所述子帧标识将将所述多个响应消息中携带的图像数据拼成所述一帧图像。
9.如权利要求1至8任意一项所述的方法,其特征在于,所述方法还包括:
接收所述服务器发送的分辨率;
在所述将所述多个图像数据拼成一帧图像后根据所述分辨率的大小判断所拼成的一帧图像是否出错。
10.一种数据处理的方法,其特征在于,所述方法应用于服务器中,所述服务器中运行有虚拟机,并且所述服务器通过网络与终端通信,所述方法包括:
通用串行总线USB设备驱动生成多个数据请求包;
服务端接收所述终端发送的图像帧,
将所述图像帧分割为多个子帧,及
生成每个数据请求包的响应信息,每个响应信息包括所述多个子帧中的其中一个子帧;
USB设备驱动获取每个响应信息中的子帧以将所述多个子帧拼成所述图像帧。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
所述服务端发送USB设备开启指令至所述终端;
接收所述终端发送的所述开启指令的响应信息;
当所述响应信息指示所述USB设备已开启时,发送生成指令至所述终端,所述生成指令用于指示所述终端生成多个数据请求包。
12.一种终端,其特征在于,所述终端连接有通用串行总线USB设备,所述终端通过网络访问服务器中的虚拟机,所述终端包括:
USB总线驱动,用于接收所述USB设备发送的多个图像数据,并将所接收到的多个图像数据发送至USB客户端;
USB客户端,用于将所述多个图像数据拼接成一帧图像,并将所述一帧图像发送至所述虚拟机所在的所述服务器。
13.如权利要求12所述终端,其特征在于,
所述客户端还用于生成多个数据请求包;
所述USB总线驱动还用于将所述多个数据请求包发送至所述USB设备,接收所述USB设备发送的所述多个数据请求包的响应消息,并将所述响应消息发送至所述客户端,其中,每个响应消息中携带一个图像数据。
14.如权利要求12或13所述的终端,其特征在于,所述USB客户端在将所述一帧图像发送至所述虚拟机所在的所述服务器之前,还用于:
对所述一帧图像进行压缩。
15.如权利要求14所述的终端,其特征在于,所述客户端对所述一帧图像进行压缩之前,还用于:
确定所述一帧图像的格式不是压缩格式。
16.如权利要求15所述的终端,其特征在于,所述USB客户端还用于:
接收所述服务器发送的图像数据的格式,所述图像数据的格式用于确定所述一帧图像的格式是否是压缩格式。
17.如权利要求13所述的终端,其特征在于,所述USB客户端还用于:
在生成多个数据请求包之前,接收所述服务器发送的生成指令,所述生成指令用于指示所述终端生成所述多个数据请求包。
18.如权利要求17所述的终端,其特征在于,所述生成指令包括所述USB设备的访问地址;
所述USB客户端在生成多个数据请求包时,还用于:
将所述USB设备的访问地址添加至每个数据请求包中;
所述USB总线驱动还用于:在将所述多个数据请求包发送至所述USB设备之前,根据每个数据请求包中的所述USB设备的访问地址查找所述USB设备。
19.如权利要求12所述的终端,其特征在于,所述每个响应消息还包括帧标识及子帧标识,所述帧标识用于标识所述一帧图像,所述子帧标识用于标识所述响应消息所携带的图像数据位于所述一帧图像的位置;
所述USB客户端在将所述多个图像数据拼成一帧图像时,具体用于:
根据所述帧标识及子帧标识将将所述多个响应消息中携带的图像数据拼成一帧图像。
20.如权利要求12至19任意一项所述的终端,其特征在于,所述USB客户端还用于:
接收所述服务器发送的分辨率;
在将所述多个图像数据拼成一帧图像后,根据所述分辨率的大小判断所拼成的一帧图像是否出错;
在所拼成的一帧图像没有出错时,发送所述一帧图像至虚拟机。
21.一种服务器,所述服务器通过网络与终端通信,包括:
通用串行总线USB设备驱动,用于生成多个数据请求包;
服务端,用于接收终端发送的图像帧,将所述图像帧分割为多个子帧,并将所分割的每个子帧携带在所述数据请求包的响应信息中;
所述USB设备驱动还用于获取每个响应信息中的子帧以将所述多个子帧拼成所述图像帧。
22.如权利要求21所述的服务器,其特征在于,
所述服务端还用于:
发送USB设备开启指令至所述终端;
接收所述终端发送的所述开启指令的响应信息;
当所述响应信息指示所述USB设备已开启时,发送生成指令至所述终端,所述生成指令用于指示所述终端生成多个数据请求包。
23.一种数据处理系统,包括权利要求21或22所述的虚拟机及权利要求12至20任意一项所述的终端。
CN201910472752.0A 2019-05-14 2019-05-31 一种虚拟机远程访问usb外设的数据的方法 Pending CN111949344A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021567928A JP2022532604A (ja) 2019-05-14 2020-05-10 仮想マシンによりusbデバイスのデータにリモートでアクセスするための方法
EP20804849.6A EP3958119B1 (en) 2019-05-14 2020-05-10 Method for virtual machine to remotely access data of usb peripheral device
PCT/CN2020/089502 WO2020228650A1 (zh) 2019-05-14 2020-05-10 一种虚拟机远程访问usb外设的数据的方法
US17/524,715 US12008393B2 (en) 2019-05-14 2021-11-11 Method for remotely accessing data of a USB device by a virtual machine

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910398086 2019-05-14
CN2019103980860 2019-05-14

Publications (1)

Publication Number Publication Date
CN111949344A true CN111949344A (zh) 2020-11-17

Family

ID=73335582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910472752.0A Pending CN111949344A (zh) 2019-05-14 2019-05-31 一种虚拟机远程访问usb外设的数据的方法

Country Status (1)

Country Link
CN (1) CN111949344A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114721988A (zh) * 2022-03-08 2022-07-08 江苏信息职业技术学院 实现usb外设驱动代理与监控审计的方法及系统
CN116405733A (zh) * 2023-06-08 2023-07-07 新华三技术有限公司 一种数据传输方法及电子设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436168A (zh) * 2008-12-17 2009-05-20 广东威创视讯科技股份有限公司 基于usb的图像采集方法及其装置
CN103533034A (zh) * 2013-09-28 2014-01-22 福建星网锐捷软件有限公司 Vdi虚拟桌面中无缝使用云终端本地摄像头的方法
US20140317418A1 (en) * 2013-04-23 2014-10-23 Hon Hai Precision Industry Co., Ltd. Server, client device, and usb redirection method
CN104301687A (zh) * 2014-10-27 2015-01-21 中国联合网络通信集团有限公司 应用于虚拟桌面环境的摄像头视频处理方法和相应设备
CN105100157A (zh) * 2014-05-15 2015-11-25 中兴通讯股份有限公司 一种usb 设备映射、交互方法、装置、云终端及云服务器
CN105207975A (zh) * 2014-06-20 2015-12-30 北京云端时代科技有限公司 一种vdi架构下的usb图像设备数据传输方法和系统
CN106161541A (zh) * 2015-04-10 2016-11-23 中兴通讯股份有限公司 数据传输方法、装置和系统
CN106851317A (zh) * 2017-02-15 2017-06-13 福建时迅信息科技有限公司 一种提高图像数据传输速度的方法和系统
CN107018442A (zh) * 2016-01-28 2017-08-04 浙江宇视科技有限公司 一种录像同步回放方法及装置
CN109005421A (zh) * 2018-08-17 2018-12-14 青岛海信电器股份有限公司 图像处理方法及装置、计算机可读存储介质
CN109246435A (zh) * 2017-07-10 2019-01-18 中兴通讯股份有限公司 一种usb设备重定向数据传输方法、数据传输装置、本地装置和远程服务器

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436168A (zh) * 2008-12-17 2009-05-20 广东威创视讯科技股份有限公司 基于usb的图像采集方法及其装置
US20140317418A1 (en) * 2013-04-23 2014-10-23 Hon Hai Precision Industry Co., Ltd. Server, client device, and usb redirection method
CN103533034A (zh) * 2013-09-28 2014-01-22 福建星网锐捷软件有限公司 Vdi虚拟桌面中无缝使用云终端本地摄像头的方法
CN105100157A (zh) * 2014-05-15 2015-11-25 中兴通讯股份有限公司 一种usb 设备映射、交互方法、装置、云终端及云服务器
CN105207975A (zh) * 2014-06-20 2015-12-30 北京云端时代科技有限公司 一种vdi架构下的usb图像设备数据传输方法和系统
CN104301687A (zh) * 2014-10-27 2015-01-21 中国联合网络通信集团有限公司 应用于虚拟桌面环境的摄像头视频处理方法和相应设备
CN106161541A (zh) * 2015-04-10 2016-11-23 中兴通讯股份有限公司 数据传输方法、装置和系统
CN107018442A (zh) * 2016-01-28 2017-08-04 浙江宇视科技有限公司 一种录像同步回放方法及装置
CN106851317A (zh) * 2017-02-15 2017-06-13 福建时迅信息科技有限公司 一种提高图像数据传输速度的方法和系统
CN109246435A (zh) * 2017-07-10 2019-01-18 中兴通讯股份有限公司 一种usb设备重定向数据传输方法、数据传输装置、本地装置和远程服务器
CN109005421A (zh) * 2018-08-17 2018-12-14 青岛海信电器股份有限公司 图像处理方法及装置、计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
全国大学生嵌入式系统专题邀请赛组委会编, 上海交通大学出版社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114721988A (zh) * 2022-03-08 2022-07-08 江苏信息职业技术学院 实现usb外设驱动代理与监控审计的方法及系统
CN116405733A (zh) * 2023-06-08 2023-07-07 新华三技术有限公司 一种数据传输方法及电子设备
CN116405733B (zh) * 2023-06-08 2023-09-19 新华三技术有限公司 一种数据传输方法及电子设备

Similar Documents

Publication Publication Date Title
WO2020228650A1 (zh) 一种虚拟机远程访问usb外设的数据的方法
US11151010B2 (en) Resource configuration method, mobile terminal and storage medium
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
EP2739073B1 (en) Wireless network, implementation method thereof, and terminal
CN109040786B (zh) 摄像头数据的传输方法、装置、系统及存储介质
CN110413418B (zh) 缓存同步装置及方法,缓存同步系统、电子设备
WO2022032984A1 (zh) 一种mqtt协议仿真方法及仿真设备
CN111949344A (zh) 一种虚拟机远程访问usb外设的数据的方法
CN114201317B (zh) 数据传输方法、装置、存储介质及电子设备
US20120166585A1 (en) Apparatus and method for accelerating virtual desktop
CN113242261B (zh) 共享数据网络的方法、装置、电子设备及存储介质
US20140297718A1 (en) Apparatus and method for transmitting image of multi-user
CN106959881B (zh) 发送数据的方法和装置
CN113422669A (zh) 数据传输方法、装置和系统、电子设备以及计算机可读存储介质
CN116450554A (zh) 中断处理方法、根复合体设备及电子设备
CN113626099B (zh) 应用程序的启动方法、装置及电子设备
CN115278301A (zh) 视频处理方法、系统及设备
CN112039801B (zh) 设置ip信息的方法、系统和代理服务器
CN114363427A (zh) 一种基于浏览器实时获取主机设备信息的方法
CN116723587B (zh) 一种会话管理方法及电子设备
CN115118719B (zh) 一种云桌面的摄像头设备连接的方法及系统
KR102431518B1 (ko) 네트워크 제어 서버 및 방법
CN114079675B (zh) 报文处理方法、装置、终端设备及移动宽带上网设备
KR100453724B1 (ko) 네트워크 시스템 및 그 제어방법
CN115866094A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20201117

RJ01 Rejection of invention patent application after publication