《一种线程可控装置及其工作方法.pdf》由会员分享,可在线阅读,更多相关《一种线程可控装置及其工作方法.pdf(22页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103365712 A(43)申请公布日 2013.10.23CN103365712A*CN103365712A*(21)申请号 201310338544.4(22)申请日 2013.08.06G06F 9/46(2006.01)(71)申请人飞天诚信科技股份有限公司地址 100085 北京市海淀区学清路9号汇智大厦B楼17层(72)发明人陆舟 于华章(54) 发明名称一种线程可控装置及其工作方法(57) 摘要本发明公开了一种线程可控装置及其工作方法,属于计算机技术领域。该装置包括初始化模块、选择模块、定位模块、判断模块、更新模块、创建子线程模块和操作模块,其工作方法。
2、是根据当前HUB编号选定一个当前HUB;根据当前端口编号选定当前HUB的一个当前端口;对当前HUB的当前端口进行操作,直至当前HUB的所有端口完成操作后选定下一个当前HUB,若是单线程工作方式则直至完成对所有枚举到的HUB的操作,若是多线程工作方式则直至完成对一个线程中的所有HUB的操作。本发明提出的该装置及其工作方法可以同时支持单线程、多线程的分组方式和并行方式,提高了HUB设备的通用性、灵活性,提高了生产效率,且能够准确的进行差错控制。(51)Int.Cl.权利要求书4页 说明书13页 附图4页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书4页 说明书13页 附图4页(。
3、10)申请公布号 CN 103365712 ACN 103365712 A1/4页21.一种线程可控装置,其特征是,所述装置包括:初始化模块:用于初始化当前HUB编号和当前端口编号;选择模块:用于选择工作线程;定位模块:用于根据当前HUB编号选定一个当前HUB,根据当前端口编号选定当前HUB的一个当前端口;判断模块:用于判断是否对当前HUB的所有端口完成操作,用于判断是否对枚举到的所有HUB完成操作;更新模块:用于当判断模块判断是否对当前HUB的所有端口完成操作的判断结果为否时更新当前端口编号,当判断模块判断是否对枚举到的所有HUB完成操作的判断结果为是时更新当前HUB编号;创建子线程模块:用。
4、于根据枚举到的HUB个数创建子线程;操作模块:用于枚举HUB并记录枚举到的HUB个数,用于对当前HUB的当前端口进行操作。2.如权利要求1所述的装置,其特征是,当所述选择模块选择的工作线程为单线程时,所述装置还包括计算模块;所述初始化模块还用于初始化第一变量和第二变量;所述计算模块,用于将第一变量与枚举到的HUB个数做取模运算;所述根据当前HUB编号选定一个当前HUB具体为根据所述取模运算结果确定当前HUB,所述根据当前端口编号选定当前HUB的一个当前端口具体为根据第二变量的取值选定当前HUB的一个当前端口;所述判断模块还用于判断第二变量是否等于预设值;所述更新模块,还用于当所述判断模块判断第。
5、二变量是否等于预设值的判断结果为是时更新第一变量,当判断结果为否时更新第二变量。3.如权利要求2所述的装置,其特征是,所述初始化第一变量具体为将第一变量的初值设为第一数值,所述初始化第二变量具体为将第二变量的初值设为第二数值。4.如权利要求1所述的装置,其特征是,当所述选择模块选择的工作线程为多线程时,所述装置还包括计算模块;所述初始化模块还用于初始化第一变量;所述创建子线程模块还用于为创建的所有子线程编号;计算模块:用于根据第一预设公式对子线程编号计算得到第一初值,并将第一初值赋值给第一变量;用于对第一变量和HUB的端口数作整除运算,用于根据第二预设公式对第一变量计算得到第二初值,对第二初值。
6、和HUB的端口数做取模计算;所述根据当前HUB编号选定一个当前HUB具体为根据所述整除运算结果确定当前HUB,所述根据当前端口编号选定当前HUB的一个当前端口具体为所述取模计算结果确定当前端口;用于根据第三预设公式对第一变量计算得到取模运算结果;所述判断模块还用于判断计算模块根据第三预设公式对第一变量计算得到取模运算结果是否等于0;所述更新模块还用于,在根据第三预设公式对第一变量计算得到取模运算结果之前更新所述第一变量,或者在判断模块判断所述取模运算结果是否等于0的判断结果为否时更新所述第一变量。权 利 要 求 书CN 103365712 A2/4页35.如权利要求2或4所述的装置,其特征是,。
7、所述预设值等于第二变量的最大取值或最小取值。6.如权利要求4所述的装置,其特征是,所述初始化第一变量具体为将第一变量的初值设为第一数值。7.如权利要求4所述的装置,其特征是,所述第一预设公式为:第一初值=子线程编号*子线程中HUB个数*HUB的端口数;所述第二预设公式为:第二初值=第一变量%HUB的端口数,所述第三预设公式为:取模运算结果=第一变量%(子线程中HUB个数*HUB的端口数),所述子线程中HUB个数等于所述枚举到的HUB个数对创建的子线程的个数的整除运算结果,其中“%”表示取模运算,“*”表示乘法运算。8.如权利要求1所述的装置,其特征是,所述操作模块包括:收发单元:用于向当前HU。
8、B发送具体操作指令并接收当前HUB的返回数据;判断单元:用于判断收发单元接收到的返回数据是否正确;显示单元:用于当判断单元判断所述返回数据为错误时,提示出错;获取单元:用于从返回数据中获取关键信息。9.如权利要求1所述的装置的工作方法,其特征是,所述方法包括:所述装置与HUB设备连接,枚举HUB,记录枚举到的HUB个数,选择工作线程,当选择的工作线程是单线程时,直接执行步骤1至步骤6;当选择的工作线程是多线程时,先根据枚举到的HUB个数创建子线程,然后对创建的所有子线程同时开始执行步骤1至步骤6:步骤1:初始化当前HUB编号和当前端口编号;步骤2:根据当前HUB编号选定一个当前HUB;步骤3:。
9、根据当前端口编号选定当前HUB的一个当前端口;步骤4:对当前HUB的当前端口进行操作;步骤5:判断是否对当前HUB的所有端口完成操作,是则执行步骤6,否则更新当前端口编号返回执行步骤3;步骤6:判断是否对枚举到的所有HUB完成操作,是则返回执行步骤1,否则更新当前HUB编号返回执行步骤2。10.如权利要求9所述方法,其特征是:当选择的工作线程是单线程时,所述方法还包括定义第一变量和第二变量,所述当前HUB编号根据第一变量和枚举到的HUB个数的计算结果得到,所述当前端口编号根据第二变量计算得到,所述步骤1至所述步骤6具体为:步骤A1:初始化第一变量;步骤A2:根据第一变量和枚举到的HUB个数的计。
10、算结果选定一个当前HUB;步骤A3:初始化第二变量;步骤A4:根据第二变量的取值选定当前HUB的一个当前端口;步骤A5:对当前HUB的当前端口进行操作,操作完成后执行下一步;步骤A6:判断第二变量是否等于预设值,是则执行步骤A7,否则更新第二变量返回执行步骤A4;步骤A7:更新第一变量,返回执行步骤A2。11.如权利要求9所述方法,其特征是:当选择的工作线程是单线程时,所述方法还包括定义第一变量和第二变量,所述当前HUB编号根据第一变量和枚举到的HUB个数的计算权 利 要 求 书CN 103365712 A3/4页4结果得到,所述当前端口编号根据第二变量计算得到,所述步骤1至所述步骤6具体为:。
11、步骤A1:初始化第一变量;步骤A2:根据第一变量和枚举到的HUB个数的计算结果选定一个当前HUB;步骤A3:初始化第二变量;步骤A4:判断第二变量是否等于预设值,是则执行步骤A7,否则执行步骤A5;步骤A5:根据第二变量的取值选定当前HUB的一个当前端口;步骤A6:对当前HUB的当前端口进行操作,操作完成后更新第二变量返回步骤A5;步骤A7:更新第一变量,返回执行步骤A2。12.如权利要求10或11所述方法,其特征是:所述初始化第一变量具体为将第一变量的初值设为第一数值,所述初始化第二变量具体为将第二变量的初值设为第二数值。13.如权利要求10或11所述方法,其特征是:步骤A2所述根据第一变量。
12、和枚举到的HUB个数的计算结果选定一个当前HUB具体为:将第一变量与枚举到的HUB个数做取模运算,根据取模运算结果确定当前HUB。14.如权利要求10或11所述方法,其特征是:步骤A6所述预设值等于第二变量的最大取值或最小取值。15.如权利要求10或11所述方法,其特征是:步骤A6所述更新第二变量具体为将第二变量自加1或将第二变量自减1,步骤A7所述更新第一变量具体为将第一变量自加1或将第一变量自减1。16.如权利要求9所述方法,其特征是:当选择的工作线程是多线程时,所述方法还包括为创建的所有子线程编号,定义第一变量,所述当前HUB编号和所述当前端口编号根据第一变量和HUB的端口数的计算结果得。
13、到,所述步骤1至所述步骤6具体为:步骤B1:初始化第一变量;步骤B2:根据第一预设公式对子线程编号计算得到第一初值,并将第一初值赋值给第一变量;步骤B3:根据第一变量和HUB的端口数的计算结果选定一个当前HUB;步骤B4:根据第二预设公式对第一变量计算得到第二初值,根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当前端口;步骤B5:对当前HUB的当前端口进行操作;步骤B6:更新第一变量;步骤B7:根据第三预设公式对第一变量计算得到取模运算结果,判断所述取模运算结果是否等于0,是则返回执行步骤B2,否则返回执行步骤B3。17.如权利要求16所述方法,其特征是:所述步骤B6和步骤B7能具。
14、体为:根据第三预设公式对第一变量计算得到取模运算结果,判断取模运算结果是否等于0,当取模运算结果等于0且第一变量等于第一初值或者取模运算结果不等于0时更新第一变量返回执行步骤B2,当取模运算结果等于0且第一变量不等于第一初值时返回执行步骤B3。18.如权利要求9所述方法,其特征是:当选择的工作线程是多线程时,所述方法还包括为创建的所有子线程编号,定义第一变量,所述当前HUB编号和所述当前端口编号根据第一变量和HUB的端口数的计算结果得到,所述步骤1至所述步骤6具体为:步骤B1:初始化第一变量;权 利 要 求 书CN 103365712 A4/4页5步骤B2:根据第一预设公式对子线程编号计算得到。
15、第一初值,并将第一初值赋值给第一变量;步骤B3:根据第三预设公式对第一变量计算得到取模运算结果,判断所述取模运算结果是否等于0,当取模运算结果等于0且第一变量等于第一初值或者取模运算结果不等于0时执行步骤B4,当取模运算结果等于0且第一变量不等于第一初值时返回执行步骤B2;步骤B4:根据第一变量和HUB的端口数的计算结果选定一个当前HUB;步骤B5:根据第二预设公式对第一变量计算得到第二初值,根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当前端口;步骤B6:对当前HUB的当前端口进行操作;步骤B7:更新第一变量,返回步骤B3。19.如权利要求16或17或18所述方法,其特征是:所述。
16、第一预设公式为:第一初值=子线程编号*子线程中HUB个数*HUB的端口数;所述第二预设公式为:第二初值=第一变量%HUB的端口数,所述第三预设公式为:取模运算结果=第一变量%(子线程中HUB个数*HUB的端口数),所述子线程中HUB个数等于所述枚举到的HUB个数对创建的子线程的个数的整除运算结果,其中“%”表示取模运算,“*”表示乘法运算。20.如权利要求16或17或18所述方法,其特征是:步骤B3所述根据第一变量和HUB的端口数的计算结果选定一个当前HUB具体为:根据第一变量对HUB的端口数的整除运算结果确定当前HUB,步骤B4所述根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当。
17、前端口具体为:根据第二初值与HUB的端口数的取模计算结果确定当前端口。21.如权利要求16或17或18所述方法,其特征是:步骤B5所述更新第一变量具体为将第一变量自加1或将第一变量自减1。22.如权利要求16或17或18所述方法,其特征是:所述初始化第一变量具体为将第一变量的初值设为第一数值。23.如权利要求9所述方法,其特征是:所述根据枚举到的HUB个数创建子线程满足:所述枚举到的HUB个数是创建的所述子线程的个数的倍数。24.如权利要求9所述方法,其特征是:步骤4所述操作包括:获取HUB状态操作、上下电操作、获取端口电流操作、设置端口电流上限操作和烧写操作。权 利 要 求 书CN 1033。
18、65712 A1/13页6一种线程可控装置及其工作方法技术领域0001 本发明属于计算机技术领域,尤其涉及一种线程可控装置及其工作方法。背景技术0002 集线器控制设备(HUB设备)是一种可以将一个USB接口扩展成为多个独立工作的USB接口的装置。0003 现有技术中,HUB设备作为一种数据传输通道,被广泛应用于实现多个USB 设备与上位机进行交互,但是,这种数据交互过程多是HUB设备在单线程工作方式下进行的,即上位机只能同时与HUB设备上多个USB设备的其中之一进行通信,这样,在某些特定场合的应用将影响生产效率,如工装中上位机通过HUB设备对USB产品的批量烧写。发明内容0004 为解决现有。
19、技术中存在的问题,本发明提出了一种线程可控装置及其工作方法。0005 本发明采取的技术方案是:一种线程可控装置,包括:0006 初始化模块:用于初始化当前HUB编号和当前端口编号;0007 选择模块:用于选择工作线程;0008 定位模块:用于根据当前HUB编号选定一个当前HUB,根据当前端口编号选定当前HUB的一个当前端口;0009 判断模块:用于判断是否对当前HUB的所有端口完成操作,用于判断是否对枚举到的所有HUB完成操作;0010 更新模块:用于当判断模块判断是否对当前HUB的所有端口完成操作的判断结果为否时更新当前端口编号,当判断模块判断是否对枚举到的所有HUB完成操作的判断结果为是时。
20、更新当前HUB编号;0011 创建子线程模块:用于根据枚举到的HUB个数创建子线程;0012 操作模块:用于枚举HUB并记录枚举到的HUB个数,用于对当前HUB的当前端口进行操作。0013 当所述选择模块选择的工作线程为单线程时,所述装置还包括计算模块;所述初始化模块还用于初始化第一变量和第二变量;所述计算模块,用于将第一变量与枚举到的HUB个数做取模运算;所述根据当前HUB编号选定一个当前HUB具体为根据所述取模运算结果确定当前HUB,所述根据当前端口编号选定当前HUB的一个当前端口具体为根据第二变量的取值选定当前HUB的一个当前端口;所述判断模块还用于判断第二变量是否等于预设值;所述更新模。
21、块,还用于当所述判断模块判断第二变量是否等于预设值的判断结果为是时更新第一变量,当判断结果为否时更新第二变量。0014 所述初始化第一变量具体为将第一变量的初值设为第一数值,所述初始化第二变量具体为将第二变量的初值设为第二数值。0015 当所述选择模块选择的工作线程为多线程时,所述装置还包括计算模块;所述初说 明 书CN 103365712 A2/13页7始化模块还用于初始化第一变量;所述创建子线程模块还用于为创建的所有子线程编号;计算模块:用于根据第一预设公式对子线程编号计算得到第一初值,并将第一初值赋值给第一变量;用于对第一变量和HUB的端口数作整除运算,用于根据第二预设公式对第一变量计算。
22、得到第二初值,对第二初值和HUB的端口数做取模计算;所述根据当前HUB编号选定一个当前HUB具体为根据所述整除运算结果确定当前HUB,所述根据当前端口编号选定当前HUB的一个当前端口具体为所述取模计算结果确定当前端口;用于根据第三预设公式对第一变量计算得到取模运算结果;所述判断模块还用于判断计算模块根据第三预设公式对第一变量计算得到取模运算结果是否等于0;所述更新模块还用于,在根据第三预设公式对第一变量计算得到取模运算结果之前更新所述第一变量,或者在判断模块判断所述取模运算结果是否等于0的判断结果为否时更新所述第一变量。0016 所述预设值等于第二变量的最大取值或最小取值。0017 所述初始化。
23、第一变量具体为将第一变量的初值设为第一数值。0018 所述第一预设公式为:第一初值=子线程编号*子线程中HUB个数*HUB的端口数;所述第二预设公式为:第二初值=第一变量%HUB的端口数,所述第三预设公式为:取模运算结果=第一变量%(子线程中HUB个数*HUB的端口数),所述子线程中HUB个数等于所述枚举到的HUB个数对创建的子线程的个数的整除运算结果,其中“%”表示取模运算,“*”表示乘法运算。0019 所述操作模块包括:0020 收发单元:用于向当前HUB发送具体操作指令并接收当前HUB的返回数据;0021 判断单元:用于判断收发单元接收到的返回数据是否正确;0022 显示单元:用于当判断。
24、单元判断所述返回数据为错误时,提示出错;0023 获取单元:用于从返回数据中获取关键信息。0024 一种线程可控装置的工作方法,包括:所述装置与HUB设备连接,枚举HUB,记录枚举到的HUB个数,选择工作线程,当选择的工作线程是单线程时,直接执行步骤1至步骤6;当选择的工作线程是多线程时,先根据枚举到的HUB个数创建子线程,然后对创建的所有子线程同时开始执行步骤1至步骤6:0025 步骤1:初始化当前HUB编号和当前端口编号;0026 步骤2:根据当前HUB编号选定一个当前HUB;0027 步骤3:根据当前端口编号选定当前HUB的一个当前端口;0028 步骤4:对当前HUB的当前端口进行操作;。
25、0029 步骤5:判断是否对当前HUB的所有端口完成操作,是则执行步骤6,否则更新当前端口编号返回执行步骤3;0030 步骤6:判断是否对枚举到的所有HUB完成操作,是则返回执行步骤1,否则更新当前HUB编号返回执行步骤2。0031 当选择的工作线程是单线程时,所述方法还包括定义第一变量和第二变量,所述当前HUB编号根据第一变量和枚举到的HUB个数的计算结果得到,所述当前端口编号根据第二变量计算得到,所述步骤1至所述步骤6具体为:0032 步骤A1:初始化第一变量;0033 步骤A2:根据第一变量和枚举到的HUB个数的计算结果选定一个当前HUB;说 明 书CN 103365712 A3/13页。
26、80034 步骤A3:初始化第二变量;0035 步骤A4:根据第二变量的取值选定当前HUB的一个当前端口;0036 步骤A5:对当前HUB的当前端口进行操作,操作完成后执行下一步;0037 步骤A6:判断第二变量是否等于预设值,是则执行步骤A7,否则更新第二变量返回执行步骤A4;0038 步骤A7:更新第一变量,返回执行步骤A2。0039 当选择的工作线程是单线程时,所述方法还包括定义第一变量和第二变量,所述当前HUB编号根据第一变量和枚举到的HUB个数的计算结果得到,所述当前端口编号根据第二变量计算得到,所述步骤1至所述步骤6具体为:0040 步骤A1:初始化第一变量;0041 步骤A2:根。
27、据第一变量和枚举到的HUB个数的计算结果选定一个当前HUB;0042 步骤A3:初始化第二变量;0043 步骤A4:判断第二变量是否等于预设值,是则执行步骤A7,否则执行步骤A5;0044 步骤A5:根据第二变量的取值选定当前HUB的一个当前端口;0045 步骤A6:对当前HUB的当前端口进行操作,操作完成后更新第二变量返回步骤A5;0046 步骤A7:更新第一变量,返回执行步骤A2。0047 所述初始化第一变量具体为将第一变量的初值设为第一数值,所述初始化第二变量具体为将第二变量的初值设为第二数值。0048 步骤A2所述根据第一变量和枚举到的HUB个数的计算结果选定一个当前HUB具体为:将第。
28、一变量与枚举到的HUB个数做取模运算,根据取模运算结果确定当前HUB。0049 步骤A6所述预设值等于第二变量的最大取值或最小取值。0050 步骤A6所述更新第二变量具体为将第二变量自加1或将第二变量自减1,步骤A7所述更新第一变量具体为将第一变量自加1或将第一变量自减1。0051 当选择的工作线程是多线程时,所述方法还包括为创建的所有子线程编号,定义第一变量,所述当前HUB编号和所述当前端口编号根据第一变量和HUB的端口数的计算结果得到,所述步骤1至所述步骤6具体为:0052 步骤B1:初始化第一变量;0053 步骤B2:根据第一预设公式对子线程编号计算得到第一初值,并将第一初值赋值给第一变。
29、量;0054 步骤B3:根据第一变量和HUB的端口数的计算结果选定一个当前HUB;0055 步骤B4:根据第二预设公式对第一变量计算得到第二初值,根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当前端口;0056 步骤B5:对当前HUB的当前端口进行操作;0057 步骤B6:更新第一变量;0058 步骤B7:根据第三预设公式对第一变量计算得到取模运算结果,判断所述取模运算结果是否等于0,是则返回执行步骤B2,否则返回执行步骤B3。0059 所述步骤B6和步骤B7能具体为:根据第三预设公式对第一变量计算得到取模运算结果,判断取模运算结果是否等于0,当取模运算结果等于0且第一变量等于第一。
30、初值或说 明 书CN 103365712 A4/13页9者取模运算结果不等于0时更新第一变量返回执行步骤B2,当取模运算结果等于0且第一变量不等于第一初值时返回执行步骤B3。0060 当选择的工作线程是多线程时,所述方法还包括为创建的所有子线程编号,定义第一变量,所述当前HUB编号和所述当前端口编号根据第一变量和HUB的端口数的计算结果得到,所述步骤1至所述步骤6具体为:0061 步骤B1:初始化第一变量;0062 步骤B2:根据第一预设公式对子线程编号计算得到第一初值,并将第一初值赋值给第一变量;0063 步骤B3:根据第三预设公式对第一变量计算得到取模运算结果,判断所述取模运算结果是否等于。
31、0,当取模运算结果等于0且第一变量等于第一初值或者取模运算结果不等于0时执行步骤B4,当取模运算结果等于0且第一变量不等于第一初值时返回执行步骤B2;0064 步骤B4:根据第一变量和HUB的端口数的计算结果选定一个当前HUB;0065 步骤B5:根据第二预设公式对第一变量计算得到第二初值,根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当前端口;0066 步骤B6:对当前HUB的当前端口进行操作;0067 步骤B7:更新第一变量,返回步骤B3。0068 所述第一预设公式为:第一初值=子线程编号*子线程中HUB个数*HUB的端口数;所述第二预设公式为:第二初值=第一变量%HUB的端口。
32、数,所述第三预设公式为:取模运算结果=第一变量%(子线程中HUB个数*HUB的端口数),所述子线程中HUB个数等于所述枚举到的HUB个数对创建的子线程的个数的整除运算结果,其中“%”表示取模运算,“*”表示乘法运算。0069 步骤B3所述根据第一变量和HUB的端口数的计算结果选定一个当前HUB具体为:根据第一变量对HUB的端口数的整除运算结果确定当前HUB,步骤B4所述根据第二初值和HUB的端口数的计算结果选定当前HUB的一个当前端口具体为:根据第二初值与HUB的端口数的取模计算结果确定当前端口。0070 步骤B5所述更新第一变量具体为将第一变量自加1或将第一变量自减1。0071 所述初始化第。
33、一变量具体为将第一变量的初值设为第一数值。0072 所述根据枚举到的HUB个数创建子线程满足:所述枚举到的HUB个数是创建的所述子线程的个数的倍数。0073 步骤4所述操作包括:获取HUB状态操作、上下电操作、获取端口电流操作、设置端口电流上限操作和烧写操作。0074 本发明的有益效果是:通过本发明提供的方案,可以实现根据特定场合和特定需求,控制HUB设备选择单线程工作方式或选择多线程工作方式,如在对产品进行批量烧写时可以通过选择多线程工作方式提高生产效率,采用本发明提高了HUB设备的通用性、灵活性;并且在单线程和多线程工作方式下本发明的方案都可以精确定位到HUB设备上的某一端口的USB设备的。
34、操作状态,本发明不仅提高了生产效率,而且能够准确的进行差错控制。说 明 书CN 103365712 A5/13页10附图说明0075 图1是本发明实施例1提供的一种线程可控装置的结构图;0076 图2是本发明实施例2提供的一种线程可控装置的工作方法流程图;0077 图3是图2中步骤S3-步骤S9的具体实现方法流程图;0078 图4是图2中步骤S10-步骤S17的具体实现方法流程图。具体实施方式0079 下面结合附图和具体实施例对本发明的技术方案作进一步解释。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。在以下实施例中出现的公式中,其中“%”表示取模运算,“/”表示整。
35、除运算,“*”表示乘法运算,例如:a%b表示a与b做取模运算,模数为b,a/b表示a除以b并取整。0080 实施例10081 本发明实施例1提供了一种线程可控装置,以上位机为载体,能够控制与上位机连接的HUB设备在单线程和多线程方式下工作,提高了HUB设备的通用性、灵活性,并且可以精确定位到HUB设备上的某一端口的USB设备的操作状态。如图1所示,该装置包括:0082 初始化模块1:用于初始化当前HUB编号和当前端口编号;0083 选择模块2:用于选择工作线程;0084 定位模块3:用于根据当前HUB编号选定一个当前HUB,根据当前端口编号选定当前HUB的一个当前端口;0085 判断模块4:用。
36、于判断是否对当前HUB的所有端口完成操作,用于判断是否对枚举到的所有HUB完成操作;0086 更新模块5:用于当判断模块4判断是否对当前HUB的所有端口完成操作的判断结果为否时更新当前端口编号,当判断模块4判断是否对枚举到的所有HUB完成操作的判断结果为是时更新当前HUB编号;0087 创建子线程模块6:用于根据枚举到的HUB个数创建子线程;0088 操作模块7:用于枚举HUB并记录枚举到的HUB个数,用于对当前HUB的当前端口进行操作。0089 当所述选择模块2选择的工作线程为单线程时,所述装置还包括计算模块;0090 所述初始化模块1还用于初始化第一变量和第二变量;0091 所述计算模块,。
37、用于将第一变量与枚举到的HUB个数做取模运算;所述根据当前HUB编号选定一个当前HUB具体为根据所述取模运算结果确定当前HUB,所述根据当前端口编号选定当前HUB的一个当前端口具体为根据第二变量的取值选定当前HUB的一个当前端口;0092 所述判断模块4还用于判断第二变量是否等于预设值;所述预设值等于第二变量的最大取值或最小取值。0093 所述更新模块5,还用于当所述判断模块4判断第二变量是否等于预设值的判断结果为是时更新第一变量,当判断结果为否时更新第二变量。0094 当所述选择模块2选择的工作线程为多线程时,所述装置还包括计算模块;0095 所述初始化模块1还用于初始化第一变量;说 明 书CN 103365712 A10。