CN105224483A - 数据传输方法、电子设备及通用串行总线设备 - Google Patents
数据传输方法、电子设备及通用串行总线设备 Download PDFInfo
- Publication number
- CN105224483A CN105224483A CN201410258390.2A CN201410258390A CN105224483A CN 105224483 A CN105224483 A CN 105224483A CN 201410258390 A CN201410258390 A CN 201410258390A CN 105224483 A CN105224483 A CN 105224483A
- Authority
- CN
- China
- Prior art keywords
- port
- electronic equipment
- usb device
- program
- usb
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据传输方法,应用于电子设备中,所述电子设备通过自身第一端口与第一USB设备进行数据传输,并执行第一程序;所述方法包括:当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;将所述第一程序中的第一符号链接名替换为第二符号链接名,通过第二符号链接名打开所述第一USB设备,继续执行第一程序。本发明还公开了一种电子设备及USB设备。
Description
技术领域
本发明涉及通用串行总线(UniversalSerialBus,USB)设备应用技术,尤其涉及一种数据传输方法、电子设备及USB设备。
背景技术
USB是一种外部总线标准,由Intel、IBM、Microsoft等多家公司在1994年底联合提出,主要用于规范电脑和外部设备的连接和通讯。USB规范经历了多年的发展,现已成为当前电子设备中的标准扩展端口规范;当前主板的端口规范主要采用USB1.1和USB2.0版本,高版本可以很好的兼容低版本。目前,所述USB1.1和USB2.0版本对应端口的最高传输速率分别为12Mbps和480Mbps;而正在普及中的USB3.0规范,其对应端口的最高速率高达5Gbps。除了高速传输的优点外,USB端口还支持设备的即插即用和热插拔功能,正是因为这些独特的优点使得USB规范被广泛应用于各个方面,例如:移动终端、存储设备、扫描仪及打印机等几乎所有的外部设备。
USB系统由硬件和软件两部分组成;这里,所述USB系统为USB设备、及与所述USB设备连接的电子设备组成的系统。USB系统的硬件部分采用的是级联星型拓扑结构,包括主机控制器(HostController)、集线器(Hub)和USB设备三部分。每个计算机的主板上都有一个或者多个主机控制器,主机控制器挂载在外设部件互连(PeripheralComponentInterconnect,PCI)总线上,并且自带一个根集线器(RootHub)。根集线器下可以接多级子集线器;每个集线器最多可以提供127个彼此不会互相干扰的端口(Port),这些端口将USB设备连接到主机控制器上,并为所述USB设备提供电源管理。当USB设备连接到端口上时,主机控制器会发送标准的USB请求枚举设备的所有信息,其中最重要的是USB设备描述符中的厂商标识(VendorID,VID),产品标识(ProductID,PID)和设备序列号(SerialNumber)信息,上述三项属性中如有一项发生变化,主机控制器就认为有不同的USB设备接入。
USB系统的软件部分主要指驱动程序,它采用的是Windows驱动模式(WindowsDriverMode,WDM);完成一个USB设备的操作,至少需要两个设备对象,一个是物理设备对象(PhysicalDeviceObject,PDO),一个是功能设备对象(FunctionalDeviceObject,FDO);其中,所述物理设备对象由操作系统提供的USB总线驱动生成,用以实现繁琐的底层通信;所述功能设备对象由开发者编写的驱动程序生成,功能驱动不操作实际的USB设备,只需要与USB总线驱动交互。开发者需要在驱动程序中为生成的功能设备对象创建一个符号链接名,上层应用程序可以通过所述符号链接名对实际的USB设备进行相应的读写操作。
为了满足用户日益增长的需求,一个USB设备同时会具备多种功能,例如一个智能移动终端既可以作为存储设备保存数据,也可以当作网卡连接因特网,即同一个物理硬件的设备信息可随时变化。当两个或两个以上的此种可变信息USB设备同时进行数据传输时,USB设备在多种功能之间会发生切换,某种功能对应的执行程序在对应切换前后的USB设备时会发生混乱,导致数据传输流程中断。引起该问题的根本原因是各功能模式下USB设备信息不一致,因为功能切换后计算机会重新为USB设备加载新驱动程序,生成新符号链接名。为了避免这个问题,目前最简单也最常用的方法是在各功能模式下创建一个相同信息的USB设备,通过所述相同信息的USB设备将各功能模式进行衔接。但由于每个模式下都要创建信息相同的USB设备,所以会造成资源浪费,也使得各功能模式具有紧耦合性,即若一个模块发生变动其它模块也要跟随变动,如此,增大了维护成本。
发明内容
为解决现有存在的技术问题,本发明实施例提供了一种数据传输方法、电子设备及USB设备,能在USB设备的功能切换后精确确定USB设备,以继续执行功能切换前的程序。
本发明的技术方案是这样实现的:本发明提供了一种数据传输方法,应用于电子设备中,所述电子设备通过自身第一端口与第一USB设备进行数据传输,并执行第一程序;所述方法包括:
当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
将所述第一程序中的第一符号链接名替换为第二符号链接名,通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
上述方案中,所述电子设备与两个以上的USB设备分别通过自身的端口进行数据传输;
所述方法还包括:根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
上述方案中,所述当所述电子设备中执行的所述第一程序切换至第二程序时之前,所述方法还包括:
确定第一端口对应的第一端口标识号;
获取所述第一USB设备的第一符号链接名;
在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
上述方案中,所述方法还包括:
确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
本发明实施例还提供了一种数据传输方法,应用于第一USB设备中,所述第一USB设备通过电子设备中的第一端口与所述电子设备进行数据传输;所述方法包括:
获取第一端口对应的第一端口标识号;
存储所述第一端口标识号。
本发明实施例还提供了一种电子设备,设置有第一端口,所述电子设备能够通过第一端口与第一USB设备进行数据传输,执行第一程序;所述电子设备包括:
第一获取单元,用于当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
第二获取单元,用于确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
替换单元,用于将所述第一程序中的第一符号链接名替换为第二符号链接名;
执行单元,用于通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
上述方案中,所述电子设备设置有两个以上端口;且所述电子设备能够通过自身的端口与两个以上的USB设备进行数据传输;所述电子设备还包括:
第一确定单元,用于根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
上述方案中,所述电子设备还包括:
第二确定单元,用于确定第一端口对应的第一端口标识号;
第三获取单元,用于获取所述第一USB设备的第一符号链接名;
存储单元,用于在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
上述方案中,所述电子设备还包括:
第三确定单元,用于确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
提示单元,用于在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
本发明实施例还提供了一种第一USB设备,能够通过电子设备中的第一端口与所述电子设备进行数据传输;所述第一USB设备包括:
获取单元,用于获取第一端口对应的第一端口标识号;
存储单元,用于存储所述第一端口标识号。
本发明实施例数据传输方法、电子设备及通用串行总线设备,通过在USB设备中存储与所述USB设备连接的USB端口的端口标识号,在通过所述USB端口与所述USB设备连接的电子设备的执行第一程序中存储所述端口标识号、以及所述第一程序对应的第一符号链接名,如此,当所述USB设备的应用功能发生变化时,即与所述USB设备连接的电子设备中执行程序由第一程序切换至第二程序,此时,将所述第一程序对应的第一符号链接名替换成执行程序变化后形成的第二符号链接名,通过第一程序中存储的端口标识号确定所述USB设备,通过第二符号链接名打开所述USB设备,继续执行第一程序,因此,采用本发明实施例能够保证数据传输过程正确对应变化前的USB设备以继续完成数据传输,实现USB设备的高效使用。
附图说明
图1为本发明实施例数据传输方法的实现流程示意图一;
图2为本发明实施例确定电子设备中各端口的端口编号和端口标识号的实现流程示意图;
图3为本发明实施例数据传输方法的具体实现的流程示意图一;
图4为本发明实施例电子设备的结构示意图;
图5为本发明实施例数据传输方法的实现流程示意图二;
图6为本发明实施例第一USB设备的结构示意图;
图7为本发明实施例USB端口标定的实现流程示意图;
图8为本发明实施例确定端口标识号的实现流程示意图;
图9为本发明实施例数据传输方法的具体实现的流程示意图二。
具体实施方式
为了能够更加详尽地了解本发明的特点与技术内容,下面结合附图对本发明的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
电子设备中的每个USB端口所在的主机控制器和集线器是固定的,因此,可以将主机控制器、集线器及USB端口的索引值按照一定规则组成端口标识号,即使用端口标识号代表USB端口。在USB设备数据传输过程中、且多种功能之间进行切换时,虽然USB设备的信息发生了变化,但是所述USB设备所在端口是固定不变的,如此,所述电子设备能够根据端口标识号重新找到USB设备。
基于此,本发明实施例在不改变USB设备信息的前提下,将执行程序、USB设备及USB端口进行绑定,当USB设备信息发生变化时,通过USB端口对应的端口标识号查询到对应的USB设备,从而实现多路可变信息USB设备同时进行数据传输;结合下述实施例对本发明做进一步解释。
实施例一
图1为本发明实施例数据传输方法的实现流程示意图一;所述方法应用于电子设备中,所述电子设备通过自身第一端口与第一USB设备进行数据传输,并执行第一程序;如图1所示,所述方法包括:
步骤101:当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
这里,所述电子设备采用枚举的方法,根据各USB端口对应的主机控制器、集线器及USB端口的索引值生成端口标识号。
步骤102:确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
这里,所述电子设备采用设备扫描程序,获取所述第一USB设备功能切换后对应的第二符号链接名。
步骤103:将所述第一程序中的第一符号链接名替换为第二符号链接名,通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
上述方案中,所述电子设备与两个以上的USB设备分别通过自身的端口进行数据传输;所述方法还包括:根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
上述方案中,所述当所述电子设备中执行的所述第一程序切换至第二程序时之前,所述方法还包括:
确定第一端口对应的第一端口标识号;
获取所述第一USB设备的第一符号链接名;
在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
上述方案中,所述方法还包括:
确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
具体地,在开始多路USB设备数据传输前,即同一个USB设备执行不同任务时,电子设备需要先获取自身每个USB端口的端口标识号并记录在所述电子设备的配置文件中;如图2所示,步骤如下:
步骤201:在所述电子设备的第一USB端口上连接第一USB设备,并确定所述第一USB端口的端口编号;
步骤202:所述电子设备采用枚举的方式在自身的主机控制器、集线器及各USB端口进行查询,当查询到所述第一USB设备后停止枚举,将查询到的第一USB设备对应的主机控制器、集线器及第一USB端口的索引值按照一定规则生成第一端口标识号;
这里所述规则如下:主机控制器,子集线器,端口的索引值分别是x,y,z,则USB端口标识号为100*x+10*y+z。例如在第5个主机控制器,第1个子集线器,第6个端口下发现了USB设备,此时的端口标识号为516。
步骤203:将第一USB端口的端口编号及第一端口标识号存储于所述电子设备的配置文件。
这里,当所述电子设备具有多个USB端口,且所述电子设备通过多个USB端口同时与多个USB设备进行连接时,按照上述方法确定各USB端口的端口标识号及端口编号,并存储于配置文件中。
所述电子设备将存储的配置文件放入数据传输过程对应的程序中开始多路可变信息USB设备数据传输流程,如图3所示,步骤如下:
步骤301:当所述电子设备中的第一USB端口与第一USB设备连接后,所述电子设备启动设备扫描程序,得到所述第一USB设备执行当前程序(下述将当前程序称为第一程序)对应的符号链接名;随后,将得到的所述符号链接名、及与所述第一USB端口对应的第一端口标识号存储于所述第一程序中;
步骤302:将与所述第一USB设备连接的第一USB端口对应的第一端口标识号存储于所述第一USB设备的固定存储区中;
同理,在所述电子设备的其他USB端口与其他USB设备进行连接时,将其他USB设备对应的端口标识号存储于自身固定存储区中;
此时,所述电子设备的配置文件中存储有与所述第一USB设备连接的第一USB端口的第一端口标识号及端口编号;所述电子设备正在执行的第一程序中存储有所述第一USB设备执行当前程序时的符号链接名、及所述第一USB端口的第一端口标识号;所述第一USB设备中也存储有与自身连接的第一USB端口的第一端口标识号;如此,当第一程序执行过程中所述USB设备发生功能切换,即与所述USB设备连接的电子设备中的执行程序从第一程序切换至第二程序时,由于功能切换后第一USB设备信息发生变化,第一程序对应的数据传输发生中断,随后执行步骤303;
步骤303:当第一程序执行过程中所述USB设备发生功能切换时,所述电子设备重新启动设备扫描程序获取各USB设备的符号链接名,同时获取各USB设备的固定存储区中记录的端口标识号;当确定的端口标识号为第一端口标识号时,确定所述第一端口标识号对应的第一USB设备;所述第一USB设备即为第一程序中对应的设备;
具体地,当所述电子设备确定端口标识号为第一端口标识号,即与第一程序中存储的端口标识号一致时,通过第一端口标识号确定第一USB设备,此时,所确定的第一USB设备即为功能切换前的设备;
进一步地,当确定的端口标识号为第一端口标识号,通过第一端口标识号确定第一USB设备,此确定过程在电子设备中执行;为进一步验证所述第一端口标识号对应的USB设备是否为第一USB设备,调用第一USB设备中存储的端口标识号,比较第一USB设备中存储的端口标识号与确定的端口标识号是否相同,若相同,则说明所述第一端口标识号对应的USB设备为第一USB设备,如此,先确定端口标识号对应的USB设备,再验证所确定USB设备是否正确,提高了确定的准确度。
步骤304:所述电子设备获取功能切换后重新启动设备扫描程序时对应所述第一USB设备的新符号链接名,并将新符号链接名替换第一程序中存储的符号链接名;
步骤305:所述电子设备使用新符号链接名重新打开步骤303中确定的第一USB设备,继续执行第一程序对应的数据传输过程,直至完成数据传输过程为止;
步骤306:数据传输过程完成后,所述电子设备在自身的配置文件中通过第一端口标识号查询端口编号,根据端口编号确定与第一USB设备连接的第一USB端口,并提示所述第一USB端口的数据传输过程结束;
此时,可以移除对应端口编号的第一USB端口上第一USB设备。
本发明实施例数据传输方法、电子设备及通用串行总线设备,通过在USB设备中存储与所述USB设备连接的USB端口的端口标识号,在通过所述USB端口与所述USB设备连接的电子设备的执行第一程序中存储所述端口标识号、以及所述第一程序对应的第一符号链接名,如此,当所述USB设备的应用功能发生变化时,即与所述USB设备连接的电子设备中执行程序由第一程序切换至第二程序,此时,将所述第一程序对应的第一符号链接名替换成执行程序变化后形成的第二符号链接名,通过第一程序中存储的端口标识号确定所述USB设备,通过第二符号链接名打开所述USB设备,继续执行第一程序,因此,采用本发明实施例能够保证数据传输过程正确对应变化前的USB设备以继续完成数据传输,实现USB设备的高效使用。
本发明实施例通过将USB设备、电子设备中的USB端口及执行程序中的符号链接名绑定的方法,实现同一USB设备的多路可变信息的数据传输过程,避免了传统方法在各功能模式间创建衔接设备造成的各模式紧耦合性的弊端,使得USB设备的各功能模式都可以作为独立模块存在,便于维护。
为实现图1所述的方法,本发明实施例还提供了一种电子设备,设置有第一端口,所述电子设备能够通过第一端口与第一USB设备进行数据传输,执行第一程序;如图4所示,所述电子设备包括:
第一获取单元41,用于当当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
第二获取单元42,用于确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
替换单元43,用于将所述第一程序中的第一符号链接名替换为第二符号链接名;
执行单元44,用于通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
上述方案中,所述电子设备设置有两个以上端口;且所述电子设备能够通过自身的端口与两个以上的USB设备进行数据传输;所述电子设备还包括:
第一确定单元,用于根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
上述方案中,所述电子设备还包括:
第二确定单元,用于确定第一端口对应的第一端口标识号;
第三获取单元,用于获取所述第一USB设备的第一符号链接名;
存储单元,用于在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
上述方案中,所述电子设备还包括:
第三确定单元,用于确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
提示单元,用于在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
实施例二
图5为本发明实施例数据传输方法的实现流程示意图二;所述方法应用于第一USB设备中;所述第一USB设备通过电子设备中的第一端口与所述电子设备进行数据传输;如图5所示,所述方法包括:
步骤501:获取第一端口对应的第一端口标识号;
步骤502:存储所述第一端口标识号。
为实现图5所述的方法,本发明实施例还提供了一种第一USB设备,所述第一USB设备能够通过与电子设备中的第一端口与所述电子设备进行数据传输;如图6所示,所述第一USB设备包括:
获取单元61,用于获取第一端口对应的第一端口标识号;
存储单元62,用于存储所述第一端口标识号。
在USB设备数据传输过程中、且多种功能之间进行切换时,虽然USB设备的信息发生了变化,但是所述USB设备所在端口是固定不变的,而且,由于USB设备中存储了所连接端口的端口标识号,如此,能够为与所述USB设备连接的电子设备根据端口标识号重新找到USB设备奠定基础。
实施例三
电子设备在为USB设备传输数据前,需要先标定所述电子设备中的各USB端口,即获取各USB端口的端口标识号和端口编号,并将各USB端口的端口标识号和端口编号储存于所述电子设备的配置文件中;图7为本发明实施例标定USB端口的实现流程示意图;如图7所示,所述USB端口标定的过程包括;
步骤701:所述电子设备采用标定程序对自身的各USB端口进行端口编号;
例如,将所述电子设备中的第一USB端口的端口编号设置为Port1;
步骤702:获取各USB端口的端口标识号;
步骤703:将端口编号与端口标识号存储于所述电子设备的配置文件中;
例如,Port1.200.2=516;其中,Port1表示USB端口的端口编号;所述200表示USB2.0规范;所述2表示高速USB设备;所述516表示第5个主机控制器、第一个子集线器、第6个端口下发现了USB设备。
这里,当USB的规范版本为USB1.0时,用100表示USB1.0规范;当USB的规范版本为USB1.1时,用110表示USB1.1规范。
步骤704:判断所述电子设备中的同一规范的所有USB端口是否全部被标定;若是,执行步骤705;否则,执行步骤701;
步骤705:判断所述电子设备中的不同规范的所有USB端口是否都已被标定;若是,执行步骤706;否则,执行步骤701。
步骤706;完成标定过程。
图8为本发明实施例确定端口标识号的实现流程示意图;如图8所示,所述获取过程包括:
步骤801:当所述电子设备中的各USB端口均标定完成后,在端口编号为Port1的USB端口,即第一USB端口上连接第一USB设备;
例如连接USB2.0设备;
步骤802:所述电子设备采用枚举的方法,从索引0开始枚举自身的主机控制器,通过主机控制器获取主机控制器句柄,并通过所述主机控制器句柄获得所述主机控制器句柄对应的根集线器名;
步骤803:通过所述根集线器名打开集线器,使用DeviceIoControl函数获得集线器的节点信息;
步骤804:所述集线器的节点信息中包含USB端口个数,采用枚举各USB端口的方法,获取集线器对应的USB端口的节点连接信息;
步骤805:根据节点连接信息判断USB端口是否为子集线器;
若是,返回步骤803,获取子集线器的节点信息;否则,执行步骤806;
步骤806:判断USB端口是否与USB设备进行连接;若是,执行步骤807;否则,执行步骤808;
步骤807:确定编号为Port1的USB端口上连接有第一USB设备,此时停止枚举过程,并将主机控制器,集线器,USB端口的索引值按照一定规则组成端口标识号。
步骤808:判断集线器对应的所有的USB端口是否均被枚举;若是,执行步骤802;否则,执行步骤804。
具体地,首先获取USB端口的索引值为0的节点连接信息,若节点连接信息标明USB端口是子集线器,则返回步骤803获得子集线器的节点信息;若USB端口不是子集线器,则判断USB端口是否与USB设备进行连接;若USB端口中未有连接的USB设备,则将索引值加1获得下一个USB端口的节点连接信息;当集线器对应的所有的USB端口都枚举完成后仍没有发现与USB端口连接的USB设备,则返回步骤802获得下一个主机控制器的节点信息;
若枚举到的USB端口与USB设备进行连接时,则停止枚举过程,并将主机控制器,集线器,USB端口的索引值按照一定规则组成端口标识号;所述规则如下:主机控制器,子集线器,端口的索引值分别是x,y,z,则USB端口标识号为100*x+10*y+z。例如在第5个主机控制器,第1个子集线器,第6个端口下发现了USB设备,此时的端口标识号为516。
由于USB设备端口有不同的规范版本,例如当版本为USB1.1的USB设备与版本为USB2.0的USB设备连接在同一个USB端口上时,枚举设备信息的主机控制器是不一样的,所以还需要记录USB设备的规范版本和速度,本发明中将USB设备的规范版本、速度与端口编号组合在一块,例如USB2.0全速设备连接在USB端口1上,可将USB端口的端口编号定义为Port1.200.1,USB2.0高速设备连接在端口1上,可将端口编号定义为Port1.200.2;
这里,所述200.1中的1表示全速USB设备,所述200.2中的2表示高速USB设备。
这里,只要所述电子设备不重新安装操作系统或者禁用主机控制器,上述步骤获得配置文件在所述电子设备中一直有效。将所述配置文件储存入程序中进行多路可变信息的USB设备的数据传输过程;如图9所示,所述数据传输方法包括:
步骤901:按照图7和图8所述的步骤标定电子设备中的所有USB端口,并确定各USB端口的端口编号和端口标识号,并将各USB端口的端口编号和端口标识号存储于所述电子设备中的配置文件中;
步骤902:在所述电子设备的一个USB端口、例如第一USB端口上连接预进行数据传输的第一USB设备;
步骤903:当所述第一USB设备与所述电子设备连接、且预执行第一程序时,所述电子设备的操作系统向所述第一程序发送WM_DEVICECHANGE的系统消息,所述第一程序通过所述系统消息启动设备枚举流程(即设备扫描程序)获得所述第一USB设备针对于第一程序时的第一符号链接名,并将所述第一符号链接名和所述配置文件中存储的所述第一USB端口对应的第一端口标识号作为一整体保存至第一程序中;
这里,在本步骤执行的同时,可以在其他USB端口依次插入其他预进行数据传输的USB设备;
步骤904:所述电子设备通过所述第一符号链接名使用CreateFile()函数打开所述第一USB设备;并使用定义的指令将与所述第一USB设备连接的第一USB端口的第一端口标识号写入所述第一USB设备的固定存储区域中,例如采用Diag指令将第一端口标识号写入所述第一USB设备的固定存储区域中;
这里,当所述第一USB设备功能发生切换时,执行步骤905;
步骤905:所述电子设备的第一程序向所述第一USB设备发送一个切换指令,将所述第一USB设备执行的任务由第一功能模式切换至第二功能模式;
这里,当第一USB设备发生功能切换时,所述第一USB设备上报给所述电子设备的主机控制器的厂商标识VID、产品标识PID和设备串号中某一项发生了变化或均发生了变化,此时,所述电子设备中的操作系统会为第一USB设备重新加载功能驱动,由于不同的功能驱动创建的符号链接名不同,因此第一程序对应的数据传输过程发生中断;
步骤906:当第一USB设备发生功能切换时,所述电子设备的第一程序重新枚举各USB设备的符号链接名,同时获取各USB设备的端口标识号;即采用Diag指令获取各USB设备的固定储存区域中存储的端口标识号;当所述电子设备的确定的端口标识号与所述第一程序中存储的端口标识号相同时,即确定的端口标识号为第一端口标识号时,停止枚举过程,确定所述第一端口标识号对应的第一USB设备,此时所述第一USB设备即为执行第一程序时对应的设备;
具体地,所述电子设备的第一程序重新枚举USB设备;若此时电子设备上与多个USB设备同时执行数据传输任务,枚举的过程中会得到一个USB设备群。此时使用Diag指令获取USB设备固定存储区域中存储的端口标识号,将获取的端口标识号与第一程序中存储的端口标识号进行比较,如果一致则停止枚举,否则继续枚举与所述电子设备连接的各USB设备。
这里,在所述电子设备的第一程序重新枚举USB设备,获取到第一电子设备的第二符号链接名;
步骤907:将步骤906重新枚举过程中获得的第二符号链接名替换第一程序中的第一符号链接名;
步骤908:通过第二符号链接名使用CreateFile()函数重新打开步骤906中确定的第一USB设备,继续执行第一程序对应的数据传输过程,直至完成数据传输过程为止;
这里,由于第一程序中存储了第一USB端口对应的第一USB设备的第一端口标识号,且符号链接名也更新为功能切换后的第二符号链接名,因此,通过第一程序中存储的第一端口标识号确定第一USB设备,并通过第二符号链接名打开所确定的第一USB设备,使所述第一USB设备继续执行第一程序。
步骤909:当所述第一程序执行完成后,所述电子设备在配置文件中查询第一端口标识号对应的端口编号,提示所述端口标号对应的第一USB端口上的第一USB设备已成功完成数据传输过程。
此时可将对应端口编号的第一USB端口上的第一USB设备移除并连接新的USB设备,返回步骤901按照同样流程重新下载数据。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种数据传输方法,应用于电子设备中,所述电子设备通过自身第一端口与第一USB设备进行数据传输,并执行第一程序;其特征在于,所述方法包括:
当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
将所述第一程序中的第一符号链接名替换为第二符号链接名,通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
2.根据权利要求1所述的方法,其特征在于,所述电子设备与两个以上的USB设备分别通过自身的端口进行数据传输;
所述方法还包括:根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
3.根据权利要求1或2所述的方法,其特征在于,所述当所述电子设备中执行的所述第一程序切换至第二程序时之前,所述方法还包括:
确定第一端口对应的第一端口标识号;
获取所述第一USB设备的第一符号链接名;
在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
5.一种数据传输方法,应用于第一USB设备中,所述第一USB设备通过电子设备中的第一端口与所述电子设备进行数据传输;其特征在于,所述方法包括:
获取第一端口对应的第一端口标识号;
存储所述第一端口标识号。
6.一种电子设备,设置有第一端口,所述电子设备能够通过第一端口与第一USB设备进行数据传输,执行第一程序;其特征在于,所述电子设备包括:
第一获取单元,用于当所述电子设备中执行的所述第一程序切换至第二程序时,获取与所述电子设备链接的各USB设备的端口标识号;
第二获取单元,用于确定端口标识号为第一端口对应的第一端口标识号时,获取所述第一端口标识号对应的第一USB设备的第二符号链接名;
替换单元,用于将所述第一程序中的第一符号链接名替换为第二符号链接名;
执行单元,用于通过第二符号链接名打开所述第一USB设备,继续执行第一程序。
7.根据权利要求6所述的电子设备,其特征在于,所述电子设备设置有两个以上端口;且所述电子设备能够通过自身的端口与两个以上的USB设备进行数据传输;所述电子设备还包括:
第一确定单元,用于根据各端口对应的主机控制器、集线器及端口的索引值确定各端口对应的端口标识号。
8.根据权利要求6或7所述的电子设备,其特征在于,所述电子设备还包括:
第二确定单元,用于确定第一端口对应的第一端口标识号;
第三获取单元,用于获取所述第一USB设备的第一符号链接名;
存储单元,用于在所述第一程序中存储所述第一符号链接名和所述第一端口标识号。
9.根据权利要求7所述的电子设备,其特征在于,所述电子设备还包括:
第三确定单元,用于确定各端口的端口编号;所述各端口的端口标号与端口标识号一一对应;
提示单元,用于在第一程序执行完成后,根据端口编号提示与端口编号对应的端口连接的USB设备完成数据传输。
10.一种第一USB设备,能够通过电子设备中的第一端口与所述电子设备进行数据传输;其特征在于,所述第一USB设备包括:
获取单元,用于获取第一端口对应的第一端口标识号;
存储单元,用于存储所述第一端口标识号。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410258390.2A CN105224483B (zh) | 2014-06-11 | 2014-06-11 | 数据传输方法、电子设备及通用串行总线设备 |
PCT/CN2014/091319 WO2015188586A1 (zh) | 2014-06-11 | 2014-11-17 | 数据传输方法及电子设备、usb设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410258390.2A CN105224483B (zh) | 2014-06-11 | 2014-06-11 | 数据传输方法、电子设备及通用串行总线设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224483A true CN105224483A (zh) | 2016-01-06 |
CN105224483B CN105224483B (zh) | 2019-11-12 |
Family
ID=54832845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410258390.2A Active CN105224483B (zh) | 2014-06-11 | 2014-06-11 | 数据传输方法、电子设备及通用串行总线设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105224483B (zh) |
WO (1) | WO2015188586A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108833309A (zh) * | 2018-07-25 | 2018-11-16 | 清华大学 | 集线服务器 |
CN108959153A (zh) * | 2018-08-01 | 2018-12-07 | 广州视源电子科技股份有限公司 | 一种一体机、数据续传的方法、装置、设备和存储介质 |
CN114372017A (zh) * | 2022-01-04 | 2022-04-19 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种不影响cxp设备正常工作的枚举方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930243A (zh) * | 2016-04-18 | 2016-09-07 | 深圳市德名利电子有限公司 | 一种测试usb设备的端口确定方法及系统 |
CN109947482B (zh) * | 2017-12-21 | 2022-07-29 | 深圳Tcl新技术有限公司 | 一种usb设备的加载方法、存储介质及智能电视 |
CN112650702B (zh) * | 2020-12-22 | 2024-05-28 | 北京华大智宝电子系统有限公司 | 一种多口usb设备的端口绑定方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255877A1 (en) * | 2006-04-28 | 2007-11-01 | Qualcomm Incorporated | USB Interrupt Endpoint Sharing |
EP1682539B1 (en) * | 2003-10-28 | 2010-02-24 | Sandoz AG | Process for preparing thiazolidinediones |
CN101751349A (zh) * | 2008-12-01 | 2010-06-23 | 海华科技股份有限公司 | 虚拟usb接口编号的方法及其电脑可读取媒体 |
CN101452435B (zh) * | 2008-12-12 | 2010-09-08 | 华为终端有限公司 | 一种usb端口模式切换方法及终端 |
CN102156830A (zh) * | 2011-03-15 | 2011-08-17 | 北京思创银联科技股份有限公司 | 逻辑设备名到盘符的映射方法 |
-
2014
- 2014-06-11 CN CN201410258390.2A patent/CN105224483B/zh active Active
- 2014-11-17 WO PCT/CN2014/091319 patent/WO2015188586A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1682539B1 (en) * | 2003-10-28 | 2010-02-24 | Sandoz AG | Process for preparing thiazolidinediones |
US20070255877A1 (en) * | 2006-04-28 | 2007-11-01 | Qualcomm Incorporated | USB Interrupt Endpoint Sharing |
CN101751349A (zh) * | 2008-12-01 | 2010-06-23 | 海华科技股份有限公司 | 虚拟usb接口编号的方法及其电脑可读取媒体 |
CN101452435B (zh) * | 2008-12-12 | 2010-09-08 | 华为终端有限公司 | 一种usb端口模式切换方法及终端 |
CN102156830A (zh) * | 2011-03-15 | 2011-08-17 | 北京思创银联科技股份有限公司 | 逻辑设备名到盘符的映射方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108833309A (zh) * | 2018-07-25 | 2018-11-16 | 清华大学 | 集线服务器 |
CN108833309B (zh) * | 2018-07-25 | 2020-04-07 | 清华大学 | 集线服务器 |
CN108959153A (zh) * | 2018-08-01 | 2018-12-07 | 广州视源电子科技股份有限公司 | 一种一体机、数据续传的方法、装置、设备和存储介质 |
CN114372017A (zh) * | 2022-01-04 | 2022-04-19 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种不影响cxp设备正常工作的枚举方法 |
CN114372017B (zh) * | 2022-01-04 | 2023-12-12 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种不影响cxp设备正常工作的枚举方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105224483B (zh) | 2019-11-12 |
WO2015188586A1 (zh) | 2015-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224483A (zh) | 数据传输方法、电子设备及通用串行总线设备 | |
Ryzhyk et al. | Automatic device driver synthesis with Termite | |
US20130198730A1 (en) | Update systems responsive to ongoing processing at a storage system | |
US20110145815A1 (en) | Virtual hot plugging of devices and virtual devices | |
CN103412769A (zh) | 外接卡参数配置方法、设备以及系统 | |
US9645911B2 (en) | System and method for debugging firmware/software by generating trace data | |
CN109783340B (zh) | SoC的测试代码烧写方法、IP测试方法及装置 | |
CN110515641A (zh) | 服务器固件的更新方法、装置及系统 | |
CN104050080A (zh) | 用户态调试linux内核的方法及系统 | |
CN109426613A (zh) | 在uefi中检索调试数据的方法及其电脑系统 | |
CN100487683C (zh) | 一种对数据卡进行初始化的系统和方法 | |
CN107844305A (zh) | 嵌入式设备的软件升级方法及嵌入式设备 | |
CN102236618B (zh) | 一种usb设备的量产方法及系统 | |
CN100489777C (zh) | 智能平台管理接口韧体架构及其建立方法 | |
CN107770299A (zh) | 一种mac地址刷写方法、系统、装置及存储介质 | |
CN113760667A (zh) | 一种硬盘管理方法、装置、可读存储介质及电子设备 | |
CN103390007A (zh) | 数据获取方法和装置 | |
CN118051277A (zh) | 服务器的启动方法、装置、存储介质和电子设备 | |
CN107678984A (zh) | Usb端口映射方法及计算机可读存储介质 | |
CN111352641B (zh) | 借助批处理的自动打包方法、装置、计算机设备及存储介质 | |
CN113612671A (zh) | 总线适配器与通道绑定配置方法、映射管理器及连接系统 | |
CN107885527A (zh) | 一种测试系统的代码修改方法及装置 | |
CN112567375A (zh) | 形式验证方法、信息识别方法、设备和存储介质 | |
CN109582225A (zh) | 一种ssd多颗粒兼容启动、升级方法及装置 | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |