一种USB数据透传的方法、系统、装置及存储介质与流程

文档序号:26629409发布日期:2021-09-14 22:39阅读:681来源:国知局
一种USB数据透传的方法、系统、装置及存储介质与流程
一种usb数据透传的方法、系统、装置及存储介质
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种usb数据透传的方法、系统、装置及存储介质。


背景技术:

2.多计算机切换(kvm,keyboard video mouse)是一种利用一套键盘、显示器和鼠标等来控制多台主机的技术。为了利用kvm技术控制远程的主机,通常会实现usb数据透传,即:将一端的usb数据传输给远端的主机设备,从而达到对远端主机设备进行控制的目的。
3.现有的usb数据透传技术中,usb数据输出设备和usb数据输入设备都采用专用硬件芯片(比如aspeed芯片)处理usb数据,且利用二层交换机在局域网内进行传输。局域网内的传输可以采用符合cat-6标准的六类网线或者光纤传输,其中六类网线的传输距离大致为100米,光纤的传输距离大致为10千米。因此,现有技术不但受限于专用硬件芯片,应用范围比较窄,而且利用二层交换机的传输只能在局域网中传输,其传输距离也受到极大的限制。


技术实现要素:

4.针对上述现有技术,本发明实施例公开一种usb数据透传的系统,可以不依赖专用硬件芯片并克服传输距离受限的缺陷,从而增加实现的通用性和usb数据透传的传输距离。
5.本技术提供的一种usb数据透传的系统,该系统具体包括:
6.usb物理设备,作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备;
7.usb输出设备,作为第一usb主侧获取所述usb物理设备提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方;
8.usb输入设备,通过三层网络接收来自所述usb输出设备的ip包,从所述ip包中解析出所述usb数据包,并作为第二usb主侧获取所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方;
9.所述主机设备,作为所述第三usb主侧接收所述usb输入设备发送的所述usb数据包。
10.进一步地,
11.所述usb输出设备包括:
12.第一usb主设备驱动模块,作为第一usb主侧获取作为第一usb从侧的所述usb物理设备提供的usb数据包,并发送给第一usb-ip驱动模块,所述第一usb主侧和所述第一usb从
侧是对应的usb交互的主备方;
13.第一usb-ip驱动模块,接收所述第一usb主设备驱动模块发送的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去。
14.进一步地,
15.所述usb输入设备包括:
16.第二usb-ip驱动模块,通过三层网络接收所述第一usb-ip驱动模块发送的ip包,从所述ip包中解析出所述usb数据包并发送给usb主从驱动模块;所述第一usb-ip驱动模块和所述第二usb-ip驱动模块是对应的usb-ip交互的主备方;
17.所述usb主从驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,再作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的所述主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
18.进一步地,
19.所述usb主从驱动模块包括:
20.第二usb主设备驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,并将所述usb数据包发送给usb从设备驱动模块;所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;
21.所述usb从设备驱动模块,接收所述第二usb主设备驱动模块发送的usb数据包,作为第三usb从侧将所述usb数据包发送给作为所述第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
22.进一步地,
23.所述usb主从驱动模块包括:
24.第二usb主设备驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;从所述usb数据包中解析获得所述usb原始数据,将所述usb原始数据保存于创建的usb主设备结点中;
25.主从转换模块,将所述usb主设备结点中保存的所述usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块创建的;
26.所述usb从设备驱动模块,从所述usb从设备结点中获取所述usb原始数据,将所述usb原始数据重新封装为usb数据包,并作为所述第三usb从侧将重新封装的usb数据包发送给作为所述第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
27.本技术实施例还提供一种usb数据透传的装置,可以不依赖专用硬件芯片并克服传输距离受限的缺陷,从而增加实现的通用性和usb数据透传的传输距离。
28.一种usb数据透传的装置,该装置为usb输入设备,包括:
29.第二usb-ip驱动模块,通过三层网络接收来自usb输出设备的ip包,从所述ip包中解析出usb数据包并发送给usb主从驱动模块,所述usb数据包是所述usb输出设备接收usb物理设备发送的usb数据包而获取的,所述usb输出设备作为第一usb主侧,所述usb物理设
备作为第一usb从侧,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方;
30.usb主从驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,再作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
31.进一步地,
32.所述usb主从驱动模块包括:
33.第二usb主设备驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,并将所述usb数据包发送给usb从设备驱动模块;所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;
34.所述usb从设备驱动模块,接收所述第二usb主设备驱动模块发送的usb数据包,作为第三usb从侧将所述usb数据包发送给作为所述第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
35.进一步地,
36.所述usb主从驱动模块包括:
37.第二usb主设备驱动模块,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;从所述usb数据包中解析获得所述usb原始数据,将所述usb原始数据保存于创建的usb主设备结点中;
38.主从转换模块,将所述usb主设备结点中保存的所述usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块创建的;
39.所述usb从设备驱动模块,从所述usb从设备结点中获取所述usb原始数据,将所述usb原始数据重新封装为usb数据包,并作为所述第三usb从侧将重新封装的usb数据包发送给作为所述第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
40.本技术实施例还提供一种usb数据透传的方法,可以不依赖专用硬件芯片并克服传输距离受限的缺陷,从而增加实现的通用性和usb数据透传的传输距离。
41.一种usb数据透传的方法,该方法包括:
42.usb物理设备作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备;
43.所述usb输出设备作为第一usb主侧获取所述usb物理设备提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方;
44.所述usb输入设备通过三层网络接收来自所述usb输出设备的ip包,从所述ip包中解析出所述usb数据包;
45.所述usb输入设备作为第二usb主侧获取所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,作为所述第三usb从侧将所述usb数据包发送
给作为第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方;
46.所述主机设备作为所述第三usb主侧接收所述usb输入设备发送的所述usb数据包。
47.进一步地,
48.所述usb输出设备作为第一usb主侧获取所述usb物理设备提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去的步骤包括:
49.所述usb输出设备中的第一usb主设备驱动模块作为第一usb主侧,获取作为第一usb从侧的所述usb物理设备提供的usb数据包,将所述usb数据包发送给所述usb输出设备的第一usb-ip驱动模块;
50.所述第一usb-ip驱动模块接收所述第一usb主设备驱动模块发送的usb数据包,将所述usb数据包封装为ip包,并从三层网络发送出去。
51.进一步地,
52.所述usb输入设备通过三层网络接收来自所述usb输出设备的ip包,从所述ip包中解析出所述usb数据包的步骤包括:
53.第二usb-ip驱动模块通过三层网络接收所述第一usb-ip驱动模块发送的ip包,从所述ip包中解析出所述usb数据包并发送给usb主从驱动模块;所述第一usb-ip驱动模块和所述第二usb-ip驱动模块是对应的usb-ip交互的主备方;
54.所述usb输入设备作为第二usb主侧获取所述usb数据包,经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备的步骤包括:
55.所述usb输入设备的usb主从驱动模块作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包;所述usb主从驱动模块经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包;所述usb主从驱动模块作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的所述主机设备。
56.进一步地,
57.所述usb主从驱动模块经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包的步骤包括:
58.所述usb主从驱动模块中的第二usb主设备驱动模块接收到第二usb-ip驱动模块发送的所述usb数据包,并发送给usb从设备驱动模块;
59.所述usb从设备驱动模块作为第三usb从侧获取所述usb数据包。
60.进一步地,
61.所述usb主从驱动模块经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包的步骤包括:
62.所述usb主从驱动模块中的第二usb主设备驱动模块解析所述usb数据包获得所述usb原始数据,将所述usb原始数据保存于所述第二usb主设备驱动模块创建的usb主设备结点中;所述第二usb主设备驱动模块为所述第二usb主侧;
63.主从转换模块将所述usb主设备结点中保存的所述usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块创建的;
64.所述usb从设备驱动模块从所述usb从设备结点中获取所述usb原始数据,并重新封装为usb数据包。
65.本技术实施例还提供一种usb数据透传的方法,可以不依赖专用硬件芯片并克服传输距离受限的缺陷,从而增加实现的通用性和usb数据透传的传输距离。
66.一种usb数据透传的方法,该方法应用于usb输入设备中,包括:
67.通过三层网络接收来自所述usb输出设备的ip包,从所述ip包中解析出所述usb数据包,所述usb数据包是所述usb输出设备将usb物理设备提供的usb原始数据封装而成的,所述usb输出设备作为第一usb主侧,所述usb物理设备作为第一usb从侧,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方;
68.作为第二usb主侧获取所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;
69.经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包;
70.作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
71.进一步地,
72.所述usb主从驱动模块经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包的步骤包括:
73.所述usb主从驱动模块中的第二usb主设备驱动模块接收到第二usb-ip驱动模块发送的所述usb数据包,并发送给usb从设备驱动模块;
74.所述usb从设备驱动模块作为第三usb从侧获取所述usb数据包。
75.进一步地,
76.所述usb主从驱动模块经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包的步骤包括:
77.所述usb主从驱动模块中第二usb主设备驱动模块作为第二usb主侧获取所述usb数据包,从所述usb数据包中解析获得所述usb原始数据,并将所述usb原始数据保存于创建的usb主设备结点中;
78.主从转换模块将所述usb主设备结点中保存的所述usb原始数据传输给usb从设备结点中保存,所述usb从设备结点由usb从设备驱动模块创建;
79.所述usb从设备驱动模块从所述usb从设备结点中获取所述usb原始数据,并重新封装为usb数据包。
80.本技术实施例还提供一种计算机可读存储介质:
81.一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现上述任一项所述的usb数据透传的方法。
82.本技术实施例还提供一种实现usb数据透传的电子设备,可以不依赖专用硬件芯片并克服传输距离受限的缺陷,从而增加实现的通用性和usb数据透传的传输距离。
83.一种实现usb数据透传的电子设备,该电子设备至少包括如权利要求17所述的计算机可读存储介质,还包括存储器;
84.所述处理器,用于从所述计算机可读存储介质中读取所述可执行指令,并执行所
述指令以实现上述任一项所述的usb数据透传的方法。
85.综上所述,本技术实施例将usb物理设备和usb输出设备作为usb交互的主备方,将usb输入设备和主机设备作为usb交互的主备方,usb输出设备和usb输入设备之间通过三层网络连接,从而在usb物理设备和主机设备之间构建了完整的传输通道。本技术构建的传输通道无需依赖专用硬件芯片,而且可以利用三层网络进行传输,因此可以增加usb数据透传的通用性以及usb的传输距离。
附图说明
86.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
87.图1是本技术实现usb数据透传的系统实施例一的结构示意图。
88.图2是本技术实现usb数据透传的系统实施例二的结构示意图。
89.图3是usb主从驱动模块132的第一种内部结构示意图。
90.图4是usb主从驱动模块132的第二种内部结构示意图。
91.图5是本技术实现usb数据透传的系统实施例三的结构示意图。
92.图6是本技术实现usb数据透传的方法实施例一的流程图。
93.图7是本技术实现usb数据透传的方法实施例二的流程图。
94.图8是实现主从转换的第一种方法流程图。
95.图9是实现主从转换的第二种方法流程图。
96.图10是本技术实现usb数据透传的方法实施例三的流程图。
97.图11是本技术实现usb数据透传的电子设备。
具体实施方式
98.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
99.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
100.下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
101.本技术实施例提供一种usb数据透传方案。在这种usb数据透传方案中,usb输出设
备和usb输入设备并不像现有技术一样采用专用硬件芯片,两者之间的usb数据利用二层交换机在局域网内进行传输,而是采用支持usb交互的通用方式实现,且两者之间采用三层网络进行传输。由于usb交互的实现无需依赖专用硬件芯片,在支持usb协议的通用操作系统上即可实现,这增加了本技术usb数据透传实现的通用性。另外,由于usb输出设备和usb输入设备之间三层网络的传输没有距离的限制,还大大增加了usb数据透传的传输距离。
102.图1是本技术实现usb数据透传的系统实施例一的结构示意图。如图1所示,该系统包括:usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。其中,usb物理设备11是指可以提供usb原始数据的设备,比如键盘、鼠标或者u盘等设备。usb输出设备12和usb输入设备13是可以运行支持usb协议的通用操作系统的设备。usb主机设备14是指pc机、服务器等需要输入usb数据的设备。由于usb输出设备12是协助usb物理设备11将usb数据包输出的设备,因此在本实施例中称为usb输出设备;usb输入设备13是协助将usb数据包输入给主机设备的,因此在本实施例中称为usb输入设备。当然,实际应用中也可以有其他形式的命名,只要符合本技术实施例限定的精神,均在本技术保护的范围内。本领域技术人员知道,usb协议是一种支持在usb主机和usb设备之间进行串行数据传输的通信协议,usb主机即usb交互的主方,usb设备即usb交互的从方。本技术实施例中的usb物理设备11和主机设备14之间存在一定的物理距离,无法直接进行串行数据传输,是通过usb输出设备12和usb输入设备13之间的三层网络(ip网络)进行了usb数据透传,从而达到远程访问usb的目的。
103.在图1中还示出了:usb物理设备11和usb输出设备12之间通过usb协议进行交互,是一对对应的usb交互的主备方。其中,usb输出设备12作为usb交互的主侧,在本实施例中称为第一usb主侧;usb物理设备11作为usb协议交互的从侧,在本实施例中称为第一usb从侧。
104.usb输出设备12和usb输入设备13之间通过三层网络交互。
105.usb输入设备13和主机设备14之间也通过usb协议进行交互,也是一对对应的usb交互的主备方。其中,主机设备14作为usb交互的主侧,在本实施例中称为第三usb主侧;usb输入设备13作为usb协议交互的从侧,在本实施例中称为第三usb从侧。
106.另外,usb物理设备11和usb输入设备13之间也满足usb协议交互方式,usb物理设备11作为usb协议交互的从侧,即本实施例中的第一usb从侧;usb输入设备13作为usb协议交互的主侧,为了与usb输出设备12区别,在本实施例中称为第二usb主侧。也就是说,usb物理设备11作为usb协议交互的从侧,分别与usb输出设备12和usb输入设备13对应,usb输出设备12是usb物理设备11在本地的usb主侧,usb输入设备13是usb物理设备11在远程的usb主侧,而这两个usb主侧之间则通过三层网络连接。
107.还需要注意的是,usb输入设备13同时具备第二usb主侧和第三usb从侧两个角色。在针对usb物理设备11时,usb输入设备13是其作为远程的usb主侧的角色;在针对主机设备14时,usb输入设备13作为本地的usb从侧的角色。
108.在本技术实现usb数据透传的系统实施例一中,具体地:
109.usb物理设备11,作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备12。
110.usb输出设备12,作为第一usb主侧获取所述usb物理设备11提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去,所述第一usb主侧和所述第一usb从侧是
对应的usb交互的主备方。
111.usb输入设备13,通过三层网络接收来自所述usb输出设备12的ip包,从所述ip包中解析出所述usb数据包,并作为第二usb主侧获取所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备14,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
112.主机设备14,作为所述第三usb主侧接收所述usb输入设备13发送的所述usb数据包。
113.也就是说,usb物理设备11向usb输出设备提供usb数据包;usb输出设备12作为第一usb主侧获取所述usb物理设备11提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去;usb输入设备13通过三层网络接收来自所述usb输出设备12的ip包,从所述ip包中解析出所述usb数据包,并作为第二usb主侧获取所述usb数据包;usb输入设备13经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,并将所述usb数据包发送给作为第三usb主侧的主机设备14;主机设备14则作为所述第三usb主侧接收所述usb输入设备13发送的所述usb数据包。
114.应用本技术系统实施例一的方案,由于usb物理设备11和usb输出设备12之间可以进行符合usb协议的交互,usb输入设备13和主机设备14之间也可以进行符合usb协议的交互,因此usb输出设备12和usb输入设备13只要运行支持usb协议的通用操作系统即可,无需依赖专用硬件芯片。另外,usb输出设备12和usb输入设备13之间采用三层网络传输,没有usb数据透传距离的限制。因此,本技术实施例方案实际上在基于通用操作系统和三层网络的基础上,构建了访问远程usb物理设备的通道,usb物理设备以更通用的方式在更广的范围内提供共享。
115.图2是本技术实现usb数据透传的系统实施例二的结构示意图。如图2所示,与系统实施例一相同,本技术实施例的系统仍然包括usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。具体的,本实施例中的usb输出设备12包括第一usb主设备驱动模块121和第一usb-ip驱动模块122;usb输入设备13包括第二usb-ip驱动模块131和usb主从驱动模块132。
116.为了使usb输出设备12和usb物理设备11成为对应的usb交互的主备方,本实施例在usb输出设备12上安装usb驱动,即第一usb主设备驱动模块121,使得第一usb主设备驱动模块121成为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。
117.为了使usb输出设备12和usb输入设备13之间通过三层网络交互,本实施例分别在usb输出设备12和usb输入设备13上安装usb-ip驱动,即第一usb-ip驱动模块122和第二usb-ip驱动模块131,使得第一usb-ip驱动模块122成为通用操作系统支持的usb-ip交互的主侧,第二usb-ip驱动模块131是其对应的从侧。usb-ip技术是一种通过网络远程访问指定的usb物理设备的技术,本技术实施例在远程两端分别安装usb-ip驱动,使得远程的usb输入设备13可以通过ip三层网络访问usb输出设备12的usb数据。
118.为了使主机设备14和usb输入设备13成为对应的usb交互的主备方,本实施例在usb输入设备13上安装usb驱动,即usb主从驱动模块132,使得usb主从驱动模块132成为通
用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。同时,为了使usb输入设备13和usb物理设备11成为对应的usb交互的主备方,本实施例在还使得usb主从驱动模块132成为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。也就是说,本实施例usb主从驱动模块132既支持usb交互的主侧,也支持usb交互的从侧,两种角色可实现主从转换。具体地:
119.第一usb主设备驱动模块121,作为第一usb主侧获取作为第一usb从侧的所述usb物理设备11提供的usb数据包,并发送给第一usb-ip驱动模块122,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方。
120.第一usb-ip驱动模块122,接收所述第一usb主设备驱动模块121发送的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去。
121.第二usb-ip驱动模块131,通过三层网络接收所述第一usb-ip驱动模块122发送的ip包,从所述ip包中解析出所述usb数据包并发送给usb主从驱动模块132;所述第一usb-ip驱动模块122和所述第二usb-ip驱动模块131是对应的usb-ip交互的主备方。
122.usb主从驱动模块132,作为第二usb主侧获取所述第二usb-ip驱动模块131发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,再作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的所述主机设备14,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
123.也就是说,usb物理设备11将usb原始数据封装为usb数据包;第一usb主设备驱动模块121作为第一usb主侧获取usb物理设备11提供的usb数据包,并发送给第一usb-ip驱动模块122;第一usb-ip驱动模块122将所述usb数据包封装为ip包从三层网络发送出去;第二usb-ip驱动模块131通过三层网络接收ip包,从ip包中解析出usb数据包并发送给usb主从驱动模块132;usb主从驱动模块132作为第二usb主侧获取第二usb-ip驱动模块131发送的usb数据包,经过主从转换将usb数据包转换为第三usb从侧获取的usb数据包,再作为第三usb从侧将usb数据包发送给作为第三usb主侧的所述主机设备14。
124.应用本技术系统实施例二的方案,由于在usb输出设备12中安装了第一usb主设备驱动模块121和第一usb-ip驱动模块122,usb输出设备12可以作为usb交互的驱动主侧,也可以作为usb-ip交互的驱动主侧;同时,在usb输入设备13中安装了第二usb-ip驱动模块131和usb主从驱动模块132,usb输入设备13可以作为usb-ip交互的驱动从侧,也可以作为usb交互的驱动主侧和usb交互的驱动从侧。因此,本技术系统实施例二建立了一个具体的由通用操作系统支持的usb数据传输通道。这个usb数据传输通道不依赖于专用硬件芯片,而且适用于三层ip网络,增强了usb数据透传技术的通用性和传输距离。
125.从上述实施例可以知道,usb主从驱动模块132担任了两种角色,既是可以usb交互的驱动主侧(即:第二usb主侧),也可以是usb交互的驱动从侧(即:第三usb从侧)。图3和图4分别是usb主从驱动模块132的两种内部结构示意图。
126.图3是本技术实施例中usb主从驱动模块132的第一种内部结构示意图。如图3所示,usb主从驱动模块132包括第二usb主设备驱动模块1321和usb从设备驱动模块1322。为了使usb输入设备13和usb物理设备11成为对应的usb交互的主备方,本实施例在usb输入设备13上安装usb驱动,即第二usb主设备驱动模块1321,使得第二usb主设备驱动模块1321成
为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。同时,为了使主机设备14和usb输入设备13成为对应的usb交互的主备方,本实施例在usb输入设备13上安装usb驱动,即usb从设备驱动模块1322,使得usb从设备驱动模块1322成为通用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。具体的,usb主从驱动模块132包括:
127.第二usb主设备驱动模块1321,作为第二usb主侧获取所述第二usb-ip驱动模块131发送的usb数据包,并将usb数据包发送给usb从设备驱动模块1322;第二usb主侧和第一usb从侧是对应的usb交互的主备方;
128.usb从设备驱动模块1322,接收第二usb主设备驱动模块1321发送的usb数据包,作为第三usb从侧将usb数据包发送给作为第三usb主侧的主机设备14,第三usb主侧和第三usb从侧是对应的usb交互的主备方。
129.本技术实施例实现usb主从驱动模块132的方案是分别安装两个usb驱动,一个usb驱动(即:第二usb主设备驱动模块1321)作为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧;另一个usb驱动(即:usb从设备驱动模块1322)作为通用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。
130.也就是说,第二usb主设备驱动模块1321作为usb主侧获取第二usb-ip驱动模块131发送的usb数据包时,可以直接将usb数据包发送给usb从设备驱动模块1322,usb从设备驱动模块1322再作为usb从侧将usb数据包发送给主机设备14。实际应用中,如果在usb输出设备12和usb输入设备13上运行通用操作系统(如linux操作系统等),由于第二usb主设备驱动模块1321和usb从设备驱动模块1322为usb驱动,都属于通用操作系统中的驱动层,usb数据包可以直接在驱动层中传输,传输效率比较高。
131.图4是本技术实施例中usb主从驱动模块132的第二种内部结构示意图。如图4所示,usb主从驱动模块132包括第二usb主设备驱动模块1321

、usb从设备驱动模块1322

和主从转换模块1323


132.为了使usb输入设备13和usb物理设备11成为对应的usb交互的主备方,本实施例在usb输入设备13上安装usb驱动,即第二usb主设备驱动模块1321

,使得第二usb主设备驱动模块1321

成为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。同时,为了使主机设备14和usb输入设备13成为对应的usb交互的主备方,本实施例在usb输入设备13上安装usb驱动,即usb从设备驱动模块1322

,使得usb从设备驱动模块1322

成为通用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。具体的,usb主从驱动模块132包括:
133.第二usb主设备驱动模块1321

,作为第二usb主侧获取所述第二usb-ip驱动模块发送的所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方;从所述usb数据包中解析获得所述usb原始数据,将所述usb原始数据保存于创建的usb主设备结点中。
134.主从转换模块1323

,将所述usb主设备结点中保存的所述usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块创建的。
135.usb从设备驱动模块1322

,从所述usb从设备结点中获取所述usb原始数据,将所述usb原始数据重新封装为usb包,并作为所述第三usb从侧将重新封装的usb数据包发送给作为所述第三usb主侧的主机设备,所述第三usb主侧和所述第三usb从侧是对应的usb交互
的主备方。
136.与图3不同的是,本技术实施例中第二usb主设备驱动模块1321

并不是直接将获取的usb数据包传输给usb从设备驱动模块1322

,而是由主从转换模块1323

将usb原始数据从usb主设备结点传输到usb从设备结点中保存,usb从设备驱动模块1322

再将usb原始数据重新封装为usb数据包。本领域技术人员知道,通用操作系统分为驱动层和应用层。usb驱动位于操作系统的驱动层,可以在应用层创建设备结点对usb数据进行处理。这里所述的设备结点不是一种物理结点,是一种虚拟结点,比如用一种结构体的数据结构表示创建的设备结点。作为usb驱动主侧的第二usb主设备驱动模块1321

可以在应用层创建usb主设备结点,用于保存usb原始数据,因此第二usb主设备驱动模块1321

需要将usb数据包进行解析获取usb原始数据。作为usb驱动从侧的usb从设备驱动模块1322

可以在应用层创建usb从设备结点,从usb从设备结点中获取usb原始数据,将usb原始数据封装为usb数据包发送给主机设备14,模拟一个真正的usb物理设备向主机设备14提供usb数据。本技术实施例利用应用层的主从转换模块1323

将usb驱动主侧和usb驱动从侧结合起来,将usb原始数据从usb主设备结点传输到usb从设备结点,从而达到主从转换的目的。
137.由于本技术实施例直接利用了usb驱动在应用层创建设备结点的功能,第二usb主设备驱动模块1321

和usb从设备驱动模块1322

无需考虑彼此之间的耦合性,从而降低了主从转换的复杂性。
138.图5是本技术实现usb数据透传的系统实施例三的结构示意图。在本实施例中,假设usb主从驱动模块132采用图4所示的方案实现。那么,如图5所示,本技术实施例仍然包括usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。usb输出设备12包括第一usb主设备驱动模块121和第一usb-ip驱动模块122。usb输入设备13包括第二usb-ip驱动模块131和usb主从驱动模块132。usb主从驱动模块132包括第二usb主设备驱动模块1321

、usb从设备驱动模块1322

和主从转换模块1323


139.本实施例中,假设usb物理设备11为鼠标或键盘等设备,是第一usb从侧;usb输出设备12和usb输入设备13采用soc芯片实现,且在soc芯片上运行的通用操作系统为linux操作系统;第一usb主设备驱动模块121为第一usb主侧,即linux操作系统支持的usb host驱动;第一usb-ip驱动模块122为usb-ip交互的主侧,即linux操作系统支持的usb-ip host驱动;第二usb-ip驱动模块131为usb-ip交互的从侧,即linux操作系统支持的usb-ip slave驱动;第二usb主设备驱动模块1321

为第二usb主侧,即linux操作系统支持的usb host驱动;usb从设备驱动模块1322

为第三usb从侧,即linux操作系统支持的usb device驱动(即gadget hid驱动);主机设备14为pc机,是第三usb主侧。
140.本技术实施例中,假设usb物理设备11为鼠标或键盘,其usb原始数据为hid数据包,鼠标或键盘将hid数据包封装为usb数据包,向第一usb主设备驱动模块121发送usb数据包;第一usb主设备驱动模块121将usb数据包发送给第一usb-ip驱动模块122;第一usb-ip驱动模块122将usb数据包封装为ip包,通过ip三层网络发送给远程的第二usb-ip驱动模块131;第二usb-ip驱动模块131将接收到的ip包解析得到usb数据包,发送给第二usb主设备驱动模块1321

;第二usb主设备驱动模块1321

将接收到的usb数据包解析得到hid数据包,并保存到应用层的usb主设备结点中;主从转换模块1323

将usb主设备结点中的hid数据包取出保存到usb从设备结点;usb从设备驱动模块1322

将usb从设备结点中的hid数据包重
新封装为usb数据包,作为第三usb从侧将usb数据包发送给主机设备14。
141.本实施例在基于linux操作系统和ip三层网络的基础上,从usb物理设备11到主机设备14建立了完整的传输usb数据的通道,可以实现usb数据的透传。由于usb输出设备12和usb输入设备13运行通用的操作系统linux,不必依赖于专用硬件芯片,增加usb数据透传的通用性。另外,由于usb输出设备12和usb输入设备13之间利用usb-ip驱动建立tcp/ip传输通道(即ip三层网络),可以大大增加传输距离。
142.本技术还提供实现usb数据透传的方法实施例。图6是本技术实现usb数据透传的方法实施例一的流程图,其应用场景可以参考图1所示的系统结构图,包括:usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。其中,usb物理设备11是指可以提供usb原始数据的设备,比如键盘、鼠标或者u盘等设备。usb输出设备12和usb输入设备13是可以运行支持usb协议的通用操作系统的设备。usb主机设备14是指pc机、服务器等需要输入usb数据的设备。usb物理设备11和usb输出设备12之间通过usb协议进行交互,是一对对应的usb交互的主备方。其中,usb输出设备12作为usb交互的主侧,在本实施例中称为第一usb主侧;usb物理设备11作为usb协议交互的从侧,在本实施例中称为第一usb从侧。usb输出设备12和usb输入设备13之间通过三层网络交互。usb输入设备13和主机设备14之间也通过usb协议进行交互,也是一对对应的usb交互的主备方。其中,主机设备14作为usb交互的主侧,在本实施例中称为第三usb主侧;usb输入设备13作为usb协议交互的从侧,在本实施例中称为第三usb从侧。另外,usb物理设备11和usb输入设备13之间也满足usb协议交互方式,usb物理设备11作为usb协议交互的从侧,usb输入设备13作为usb协议交互的主侧,在本实施例中称为第二usb主侧。
143.如图6所示,方法实施例一包括:
144.步骤601:usb物理设备11作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备12。
145.这里将usb物理设备11未经过处理的usb数据称为usb原始数据。由于usb物理设备11需要与第一usb主侧进行usb交互,还需要将usb原始数据封装成符合usb协议规定的usb数据包才能提供给usb输出设备。
146.步骤602:usb输出设备12作为第一usb主侧获取所述usb物理设备11提供的usb数据包,将所述usb数据包封装为ip包从三层网络发送出去,所述第一usb主侧和所述第一usb从侧是对应的usb交互的主备方。
147.由于usb物理设备11和usb输出设备12是对应的usb交互的主备方,usb物理设备11可以通过usb协议将usb数据包发送给usb输出设备12。而usb输出设备12为了将usb数据包发送给远程的usb输入设备13,还需要事先在两端建立三层网络通道(比如ip通道)。
148.步骤603:usb输入设备13通过三层网络接收来自所述usb输出设备12的ip包,从所述ip包中解析出所述usb数据包。
149.本步骤中usb输入设备13通过三层网络获得了远程的usb数据包。
150.步骤604:usb输入设备13作为第二usb主侧获取所述usb数据包,所述第二usb主侧和所述第一usb从侧是对应的usb交互的主备方。
151.这里,usb输入设备13与usb物理设备11的物理距离虽然比较远,但仍然是一对对应的usb交互主备方,可以作为第二usb主侧获取usb数据包。
152.步骤605:usb输入设备13经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包。
153.由于在步骤604中,usb输入设备13是作为第二usb主侧获取usb数据包,而主机设备14是第三usb主侧,两者不是对应的usb交互主备方,usb输入设备13无法直接将usb数据包发送给主机设备14。因此,本步骤中,usb输入设备13需要先进行主从转换,将第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包,即usb输入设备13由第二usb主侧转换为第三usb从侧。
154.步骤606:usb输入设备13作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的主机设备14,所述第三usb主侧和所述第三usb从侧是对应的usb交互的主备方。
155.经过步骤605的主从转换后,usb输入设备13和主机设备14是一对对应的usb交互的主备方,usb输入设备13可以直接将usb数据包发送给主机设备14。
156.步骤607:主机设备14作为所述第三usb主侧接收usb输入设备13发送的所述usb数据包。
157.应用本技术方法实施例,在通用操作系统和三层网络技术基础上,usb物理设备11将提供的usb数据包传输给了远程的主机设备14,不必依赖于专用硬件芯片,使得usb数据透传以更通用的方式且在更广的范围内提供了共享。
158.图7是本技术实现usb数据透传的方法实施例二的流程图,其应用场景可以参考图2所示的系统结构图。该系统包括usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。其中,usb输出设备12包括第一usb主设备驱动模块121和第一usb-ip驱动模块122;usb输入设备13包括第二usb-ip驱动模块131和usb主从驱动模块132。usb物理设备11是指可以提供usb原始数据的设备,比如键盘、鼠标或者u盘等设备。usb输出设备12和usb输入设备13是可以运行支持usb协议的通用操作系统的设备。usb主机设备14是指pc机、服务器等需要输入usb数据的设备。第一usb主设备驱动模块121是安装的usb驱动,为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。第一usb-ip驱动模块122和第二usb-ip驱动模块131是安装的usb-ip驱动,第一usb-ip驱动模块122为通用操作系统支持的usb-ip交互的主侧,第二usb-ip驱动模块131是其对应的从侧。usb主从驱动模块132是安装的usb驱动,是通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧;同时,usb主从驱动模块132也是usb交互的从侧,主机设备14是其对应的主侧。
159.如图所示,方法实施例二包括:
160.步骤701:usb物理设备11作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备12。
161.本步骤与方法实施例一的步骤601相同。
162.步骤702:usb输出设备12中的第一usb主设备驱动模块121作为第一usb主侧,获取作为第一usb从侧的usb物理设备11提供的usb数据包,将所述usb数据包发送给usb输出设备12的第一usb-ip驱动模块122。
163.usb物理设备11和第一usb主设备驱动模块121是对应的usb交互的主备方,usb物理设备11可以通过usb协议将usb数据包发送给第一usb主设备驱动模块121。为了进行远程传输,第一usb主设备驱动模块121还需要将usb数据包发送给第一usb-ip驱动模块122。
164.步骤703:第一usb-ip驱动模块122接收所述第一usb主设备驱动模块121发送的
usb数据包,将所述usb数据包封装为ip包,并从三层网络发送出去。
165.本实施例在第一usb-ip驱动模块122和第二usb-ip驱动模块131上运行usb-ip驱动,第一usb-ip驱动模块122作为usb-ip交互的主侧,第二usb-ip驱动模块131作为usb-ip交互的从侧,因此第一usb-ip驱动模块122和第二usb-ip驱动模块131之间建立了tcp/ip通道,作为传输usb数据包的通道。当然,在传输之前,第一usb-ip驱动模块122还需要将usb数据包封装成ip包才能发送给第二usb-ip驱动模块131。至于如何建立tcp/ip通道以及如何封装ip包则属于现有技术,此处不再赘述。
166.步骤704:第二usb-ip驱动模块131通过三层网络接收所述第一usb-ip驱动模块122发送的ip包,从ip包中解析出所述usb数据包并发送给usb主从驱动模块132;所述第一usb-ip驱动模块122和所述第二usb-ip驱动模块131是对应的usb-ip交互的主备方。
167.相应的,当远程对端的第二usb-ip驱动模块131从tcp/ip通道接收到ip包,可以解析出usb数据包。
168.步骤705:usb输入设备13的usb主从驱动模块132作为第二usb主侧获取所述第二usb-ip驱动模块131发送的所述usb数据包。
169.这里,即使第二usb-ip驱动模块131解析出usb数据包,但其并不是usb驱动,无法直接将usb数据包发送给主机设备14,而是需要转发给usb主从驱动模块132。
170.步骤706:usb主从驱动模块132经过主从转换将所述第二usb主侧获取的所述usb数据包转换为第三usb从侧获取的usb数据包。
171.如前所述,usb主从驱动模块132具备两种角色,既是与usb物理设备11对应的usb交互主侧,也是与主机设备14对应的usb交互从侧。由于从tcp/ip通道传输过来的usb数据包是usb物理设备11发送的,usb主从驱动模块132首先需要作为与其对应的usb交互主侧才能接收该usb数据包,其作用与第一usb主设备驱动模块121相同。其区别在于,第一usb主设备驱动模块121是与usb物理设备11近端的usb交互主侧,而usb主从驱动模块132是与usb物理设备11远程的usb交互主侧。
172.经过主从转换,usb主从驱动模块132其启动作为usb从侧的角色,那么其获取的usb数据包也将作为usb从侧的usb数据包。
173.步骤707:usb主从驱动模块132作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的所述主机设备14。
174.由于usb主从驱动模块132和主机设备14是对应的usb交互主备方,而且usb主从驱动模块132已经作为usb从侧,可以直接将usb数据包发送给主机设备14。
175.步骤708:主机设备14作为第三usb主侧接收usb主从驱动模块132发送的usb数据包。
176.本方法实施例二在从usb输出设备12和usb输入设备13中安装了usb驱动以及usb-ip驱动,建立了从usb物理设备11到主机设备14的完整的通道,从而达到远程共享usb数据的目的。由于usb驱动以及usb-ip驱动都可以被通用操作系统支持,无需依赖于专用硬件芯片,从而增加了usb数据透传的通用性。
177.上述方法实施例一的步骤605和方法实施例二的步骤706中都提出经过主从转换将第二usb主侧获取的usb数据包转换为第三usb从侧获取的usb数据包,其目的都是为了实现角色转换。实际应用中可能有多种实现角色转换的方法,以下提出如下两种。图8是实现
主从转换的第一种方法,图9是实现主从转换的第二种方法。
178.在第一种实现主从转换的方法中,假设usb主从驱动模块132内部结构如图3所示,包括第二usb主设备驱动模块1321和usb从设备驱动模块1322,都安装了usb驱动。其中,第二usb主设备驱动模块1321为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。usb从设备驱动模块1322为通用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。按照上述的结构模式,图8为实现主从转换的第一种方法,具体包括:
179.步骤801:usb主从驱动模块132中的第二usb主设备驱动模块1321接收到第二usb-ip驱动模块131发送的所述usb数据包,发送给usb从设备驱动模块1322。
180.步骤802:usb从设备驱动模块1322作为第三usb从侧获取所述usb数据包。
181.可见,在第一种主从转换方法中,第二usb主设备驱动模块1321作为usb主侧是直接将usb数据包发送给作为usb从侧的usb从设备驱动模块1322,以此实现主从转换。由于在usb输出设备12和usb输入设备13上都运行通用操作系统(如linux操作系统等),第二usb主设备驱动模块1321和usb从设备驱动模块1322安装的usb驱动都属于通用操作系统中的驱动层,不但可以实现主从转换,而且usb数据包直接在驱动层中传输,传输效率比较高。
182.在第二种实现主从转换的方法中,假设usb主从驱动模块132内部结构如图4所示,包括第二usb主设备驱动模块1321

、usb从设备驱动模块1322

和主从转换模块1323

。其中,第二usb主设备驱动模块1321

为通用操作系统支持的usb交互的主侧,usb物理设备11是其对应的从侧。usb从设备驱动模块1322

为通用操作系统支持的usb交互的从侧,主机设备14是其对应的主侧。另外,第二usb主设备驱动模块1321

在应用层创建了主设备结点,usb从设备驱动模块1322

在应用层创建了从设备结点。
183.按照上述的结构模式,图9为实现主从转换的第二种方法,具体包括:
184.步骤901:usb主从驱动模块132中的第二usb主设备驱动模块1321

解析usb数据包获得usb原始数据,将所述usb原始数据保存于第二usb主设备驱动模块1321

创建的usb主设备结点中,所述第二usb主设备驱动模块1321

为所述第二usb主侧。
185.步骤902:主从转换模块1323

将usb主设备结点中保存的usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块1322

创建的。
186.步骤903:usb从设备驱动模块1322

从usb从设备结点中获取usb原始数据,并重新封装为usb数据包。
187.与第一种主从转换的方法不同,在第二种主从转换方法中的第二usb主设备驱动模块1321

并不是直接将usb数据包传输给usb从设备驱动模块1322

,而是由主从转换模块1323

将usb原始数据从usb主设备结点传输到usb从设备结点中保存,usb从设备驱动模块1322

再将usb原始数据重新封装为usb数据包。本领域技术人员知道,usb驱动位于通用操作系统(比如linux操作系统)的驱动层,可以在应用层创建设备结点对usb数据进行处理。这里所述的设备结点不是一种物理结点,是一种虚拟结点,比如可以用一种结构体的数据结构表示创建的设备结点。usb从设备驱动模块1322

获取usb原始数据后,将usb原始数据封装为usb数据包,模拟一个真正的usb物理设备向主机设备14提供usb数据。因此,第二种主从转换方法利用应用层的主从转换模块1323

将usb原始数据从usb主设备结点传输到usb从设备结点,从而达到主从转换的目的。
188.由于本技术实施例直接利用了usb驱动在应用层创建设备结点的功能,无需考虑
第二usb主设备驱动模块1321

和usb从设备驱动模块1322

之间的耦合性,从而降低了主从转换的复杂性。
189.图10是本技术实现usb数据透传的方法实施例三的流程图,其应用场景参考图5所示的系统结构图。在本实施例中,假设系统包括usb物理设备11、usb输出设备12、usb输入设备13、主机设备14。usb输出设备12包括第一usb主设备驱动模块121和第一usb-ip驱动模块122。usb输入设备13包括第二usb-ip驱动模块131和usb主从驱动模块132。usb主从驱动模块132包括第二usb主设备驱动模块1321

、usb从设备驱动模块1322

和主从转换模块1323


190.本实施例中,假设usb物理设备11为鼠标或键盘等设备,是第一usb从侧;usb输出设备12和usb输入设备13采用soc芯片实现,且在soc芯片上运行的通用操作系统为linux操作系统;第一usb主设备驱动模块121为第一usb主侧,即linux操作系统支持的usb host驱动;第一usb-ip驱动模块122为usb-ip交互的主侧,即linux操作系统支持的usb-ip host驱动;第二usb-ip驱动模块131为usb-ip交互的从侧,即linux操作系统支持的usb-ip slave驱动;第二usb主设备驱动模块1321

为第二usb主侧,即linux操作系统支持的usb host驱动;usb从设备驱动模块1322

为第三usb从侧,即linux操作系统支持的usb device驱动(即gadget hid驱动);主机设备14为pc机,是第三usb主侧。
191.如图10所示,本实施例实现usb数据透传的方法包括:
192.步骤1001:usb物理设备11作为第一usb从侧将usb原始数据封装为usb数据包提供给usb输出设备12。
193.本步骤中的usb物理设备11为鼠标或键盘等设备,其usb原始数据为hid数据包。实际应用中,如果usb物理设备为其他设备,则为其他相应的usb原始数据。
194.由于本技术实施例usb输出设备12中的第一usb主设备驱动模块121为事先安装的usb host驱动,与usb物理设备11为usb交互主备方,因此本步骤实际上是将usb数据包发送给usb输出设备12的usb host驱动。
195.步骤1002:usb输出设备12中的第一usb主设备驱动模块121作为第一usb主侧,获取作为第一usb从侧的usb物理设备11提供的usb数据包,将所述usb数据包发送给usb输出设备12的第一usb-ip驱动模块122。
196.本技术实施例usb输出设备12中的第一usb-ip驱动模块122为事先安装的usb-ip host驱动,因此本步骤实际上是将usb数据包发送给usb-ip host驱动。
197.步骤1003:第一usb-ip驱动模块122接收所述第一usb主设备驱动模块121发送的usb数据包,将所述usb数据包封装为ip包,并从三层网络发送出去。
198.步骤1004:第二usb-ip驱动模块131通过三层网络接收所述第一usb-ip驱动模块122发送的ip包,从ip包中解析出所述usb数据包并发送给usb主从驱动模块132;所述第一usb-ip驱动模块122和所述第二usb-ip驱动模块131是对应的usb-ip交互的主备方。
199.这里的步骤1003和步骤1004是将usb数据包进行tcp/ip三层网络传输。实际应用中,usb输出设备12可以事先获得usb输入设备13的ip地址(比如采用配置的方式),将usb输出设备12自身的ip地址以及usb物理设备11的设备号发送给usb输入设备13,从而建立传输usb数据包的tcp/ip通道,而usb-ip host驱动和usb-ip slave驱动就是通道两端的主备方。
200.另外,当usb输入设备13中的usb-ip slave驱动解析出usb数据包后,从usb数据包中携带的设备号可以确定是哪一个usb物理设备发送的usb数据包,由此利用usb输入设备13中的usb host驱动在应用层创建对应的主设备结点。
201.步骤1005:usb主从驱动模块132中的第二usb主设备驱动模块1321

解析usb数据包获得usb原始数据,将所述usb原始数据保存于第二usb主设备驱动模块1321

创建的usb主设备结点中,所述第二usb主设备驱动模块1321

为所述第二usb主侧。
202.本技术实施例中,这里是将解析出鼠标键盘的hid数据包,将hid数据包保存到应用层创建的usb主设备结点中。
203.步骤1006:主从转换模块1323

将usb主设备结点中保存的usb原始数据传输给usb从设备结点中保存,所述usb从设备结点是usb从设备驱动模块1322

创建的。
204.本技术实施例中,这里是将hid数据包传输到usb从设备结点中保存。
205.步骤1007:usb从设备驱动模块1322

从usb从设备结点中获取usb原始数据,并重新封装为usb数据包。
206.本技术实施例中,usb从设备驱动模块1322

为事先安装的gadget hid驱动,可以再次将hid数据包重新封装为usb数据包。
207.步骤1008:usb从设备驱动模块1322

作为所述第三usb从侧将所述usb数据包发送给作为第三usb主侧的所述主机设备14。
208.由于输入设备13中的gadget hid驱动和主机设备14是usb交互的主备方,gadget hid驱动可以将usb数据包直接发送给主机设备14
209.步骤1009:主机设备14作为第三usb主侧接收usb主从驱动模块132发送的usb数据包。
210.至此,作为usb物理设备11的鼠标或键盘将hid数据包经过如下通道:usb host驱动主侧—>usb-ip host驱动—>usb-ip slave驱动—>usb host驱动主侧—>主设备结点—>从设备结点—>usb host驱动从侧,从而到达主机设备14。
211.应用本技术实施例方案,由于usb输出设备12和usb输入设备13中的usb host驱动和usb-ip驱动可以由通用操作系统linux支持,无需专用硬件芯片,而且usb数据包可以通过tcp/ip通道进行三层网络传输,增加了usb传输距离。
212.另外,本技术实施例是以鼠标或键盘为例进行描述的。而实际应用中,usb物理设备11还可以为u盘、游戏杆等其他其他,其方法与上述实施例基本相同,其区别在于,usb原始数据不同,usb从设备驱动模块1322

可能为相应的其他驱动。比如:如果物理设备11为u盘,则usb从设备驱动模块1322

相应地为gadget storage驱动。不管是哪种usb物理设备,都可以利用通用操作系统支持的usb驱动模拟主机设备14的从设备,从而将远程的usb数据包提供给主机设备14。
213.本技术实施例还提供一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时可执行如上所述的usb数据透传的方法中的步骤。实际应用中,所述的计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,可以实现上述各实施例描述的usb数据透传的方法。根据本技术公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介
质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本技术保护的范围。在本技术公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
214.如图11所示,本发明实施例还提供一种实现usb数据透传的电子设备。如图11所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
215.该电子设备可以包括一个或一个以上处理核心的处理器1101、一个或一个以上计算机可读存储介质的存储器1102以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器1102的程序时,可以实现上述usb数据透传的方法。
216.具体的,实际应用中,该电子设备还可以包括电源1103、输入输出单元1104等部件。本领域技术人员可以理解,图11中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
217.处理器1101是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1102内的软件程序和/或模块,以及调用存储在存储器1102内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。
218.存储器1102可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器1101通过运行存储在存储器1102的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1102可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器1102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1102还可以包括存储器控制器,以提供处理器1101对存储器1102的访问。
219.该电子设备还包括给各个部件供电的电源1103,可以通过电源管理系统与处理器1101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1103还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
220.该电子设备还可包括输入输出单元1104,该输入单元输出1104可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该输入单元输出1104还可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
221.本技术附图中的流程图和框图,示出了按照本技术公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的
组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
222.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本技术中。特别地,在不脱离本技术精神和教导的情况下,本技术的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本技术公开的范围。
223.本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思路,并不用于限制本技术。对于本领域的技术人员来说,可以依据本发明的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1