一种多协议USB设备协议类型与应用动态匹配的方法及设备与流程

文档序号:16134482发布日期:2018-12-01 00:45阅读:386来源:国知局

本发明涉及信息安全领域,特别涉及一种多协议usb设备协议类型与应用动态匹配的方法及设备。

背景技术

随着互联网技术的飞速发展,usb设备的种类也逐渐增多,按照设备支持的协议类型分类,usb设备可以分为支持hid(hunmaninterfacedevice,人机交互设备)协议的usb设备、支持ccid(usbchip/smartcardinterfacedevices-usb,芯片智能卡接口设备)协议的usb设备、支持scsi(smallcomputersysteminterface,小型计算机系统接口)协议的usb设备以及支持其他usb协议的设备类型,以及支持多个协议的usb设备;按照设备支持的应用的分类,usb设备可以分为单应用usb设备和多应用usb设备,现有技术中,大多usb设备在工作时,设备协议类型和应用之间是预先关联好的,即设备仅能通过一种设备协议访问设备中与之预先关联的应用,限制了设备的应用性,用户体验差。



技术实现要素:

本发明提供了一种多协议usb设备协议类型与应用动态匹配的方法及设备,解决了上述技术问题。

本发明提供了一种多协议usb设备协议类型与应用动态匹配的方法,所述应用安装在所述设备上;所述应用包括:通讯应用;所述设备插入在上位机上;所述方法包括:

步骤s1:所述设备向上位机报告自身的设备协议类型中的一种或者多种;

步骤s2:所述设备通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到指令的通道作为当前协议通道,判断通过当前协议通道接收到的指令的类型,若所述通过当前协议通道接收到的指令为绑定协议指令,则执行步骤s3;若所述通过当前协议通道接收到的指令为解绑协议指令,则执行步骤s6;若所述通过当前协议通道接收到的指令为usb通讯指令,则执行步骤s8;

步骤s3:所述设备从所述绑定协议指令中获取协议标识和应用标识;

步骤s4:所述设备选择与所述应用标识对应的通讯应用;

步骤s5:所述设备将与所述协议标识对应的设备协议类型和与所述应用标识对应的通讯应用进行绑定,通过当前协议通道向上位机返回绑定成功应答,并根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤s2;

步骤s6:所述设备从所述解绑协议指令中获取协议标识和应用标识;

步骤s7:所述设备将与所述协议标识对应的设备协议类型和与所述应用标识对应的通讯应用进行解绑,通过当前协议通道向上位机返回解绑成功应答;并根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤s2;

步骤s8:所述设备从所述usb通讯指令得到通讯指令,将所述通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将所述usb通讯应答返回给上位机,返回步骤s2。

本发明还提供了一种多协议usb设备协议类型与应用动态匹配的方法,所述应用安装在设备上;所述应用包括:通讯应用;所述设备插入在上位机上;所述方法包括:

步骤r1:所述设备向上位机报告设备自身的设备协议类型;

步骤r2:所述设备通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到指令的通道作为当前协议通道,判断通过当前协议通道接收到的指令的类型,若所述通过当前协议通道接收到的指令为协议切换指令,则执行步骤r3;若通过当前协议通道接收到的指令为usb通讯指令,则执行步骤r6;若通过当前协议通道接收到的指令为usb选择应用指令,则执行步骤r7;

步骤r3:所述设备根据所述协议切换指令中的协议标识设置自身的设备协议类型;根据与当前协议通道对应的设备协议类型组织协议切换应答,通过当前协议通道向上位机返回协议切换应答;返回步骤r2;

步骤r6:所述设备从所述usb通讯指令中得到通讯指令,将所述通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将所述usb通讯应答返回给上位机;返回步骤r2;

步骤r7:所述设备从所述usb选择应用指令中得到选择应用指令,将所述选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答,通过当前协议通道将所述usb选择应用应答返回给上位机,返回步骤r2。

本发明还提供了一种设备协议类型与应用动态匹配的多协议usb设备,所述应用安装在设备上;所述应用包括:通讯应用;所述设备插入在上位机上;所述设备包括:报告协议类型模块、第一接收模块、第一判断模块、第一获取模块、第一选择应用模块、第一绑定模块、第一返回模块、第一设置模块、第二获取模块、第一解绑模块、第二设置模块、第三获取模块、第一发送模块、第二接收模块和第一封装模块;

所述报告协议类型模块,用于当所述设备插入到上位机后,向上位机报告设备的设备协议类型中的一种或者多种;

所述第一接收模块,用于通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令;

所述第一判断模块,用于当所述第一接收模块接收到指令后,将接收到指令的通道作为当前协议通道,判断通过当前协议通道接收到的指令的类型;

所述第一获取模块,用于当所述第一判断模块判断出所述通过当前协议通道接收到的指令为绑定协议指令时,从所述绑定协议指令中获取协议标识和应用标识;

所述第一选择应用模块,用于选择与所述第一获取模块获取到的所述应用标识对应的通讯应用;

所述第一绑定模块,用于当所述第一选择应用模块选择与所述第一获取模块获取到的所述应用标识对应的通讯应用后,将与所述第一获取模块获取到的所述协议标识对应的设备协议类型和与所述第一获取模块获取到的所述应用标识对应的通讯应用进行绑定;

所述第一返回模块,用于通过当前协议通道向上位机返回绑定成功应答;通过当前协议通道向上位机返回解绑成功应答;通过当前协议通道将所述第一封装模块得到的usb通讯应答返回给上位机;

所述第一设置模块,用于当所述第一绑定模块将与所述第一获取模块获取到的所述协议标识对应的设备协议类型和与所述第一获取模块获取到的所述应用标识对应的通讯应用进行绑定后,根据已绑定通讯应用的设备协议类型设置设备的设备协议类型;

所述第二获取模块,用于当所述第一判断模块判断出所述通过当前协议通道接收到的指令为解绑协议指令时,从所述解绑协议指令中获取协议标识和应用标识;

所述第一解绑模块,用于将与所述第二获取模块获取到的所述协议标识对应的设备协议类型和与所述第二获取模块获取到的所述应用标识对应的通讯应用进行解绑;

所述第二设置模块,用于当所述第一解绑模块将与所述第二获取模块获取到的所述协议标识对应的设备协议类型和与所述第二获取模块获取到的所述应用标识对应的通讯应用进行解绑后,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置设备的设备协议类型;

第三获取模块,用于当所述第一判断模块判断出所述通过当前协议通道接收到的指令为usb通讯指令时,从所述usb通讯指令得到通讯指令;

所述第一发送模块,用于将所述第三获取模块获取到的所述通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;

所述第二接收模块,用于接收与当前协议通道对应的设备协议类型绑定的通讯应用返回的通讯应答;

所述第一封装模块,用于根据与当前协议通道对应的设备协议类型封装所述第二接收模块接收到的通讯应答得到usb通讯应答。

本发明又提了一种设备协议类型与应用动态匹配的多协议usb设备,所述应用安装在设备上;所述应用包括:通讯应用;所述设备插入在上位机上;所述设备包括:报告协议类型模块、第一接收模块、第一判断模块、第一设置模块、第一返回模块、第一获取模块和第二获取模块;

所述报告协议类型模块,用于当所述设备插入到上位机后,向上位机报告设备的设备协议类型;

所述第一接收模块,用于通过与已上报的设备协议类型对应的通道接收来自上位机的指令;

所述第一判断模块,用于当所述第一接收模块接收到指令后,将接收到指令的通道作为当前协议通道,判断通过当前协议通道接收到的指令的类型;

所述第一设置模块,用于当所述第一判断模块判断出通过当前协议通道接收到的指令为协议切换指令时,根据所述协议切换指令中的协议标识设置自身的设备协议类型;

所述第一返回模块,用于根据与当前协议通道对应的设备协议类型组织协议切换应答,通过当前协议通道向上位机返回协议切换应答;通过当前协议通道将所述usb通讯应答返回给上位机;以及通过当前协议通道将所述usb选择应用应答返回给上位机;

所述第一获取模块,用于当所述第一判断模块判断出通过当前协议通道接收到的指令为usb通讯指令时,从所述usb通讯指令中得到通讯指令,将所述通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答;

所述第二获取模块,用于当所述第一判断模块判断出通过当前协议通道接收到的指令为usb选择应用指令时,从所述usb选择应用指令中得到选择应用指令,将所述选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答。

本发明的有益效果:本发明提供了一种多协议usb设备协议类型与应用动态匹配的方法及设备,本发明提供的设备支持多种设备协议类型并且支持多个应用,各个协议和应用之间可以动态匹配,增强了设备的应用性,并且用户体验好。

附图说明

图1分别为本发明实施例1提供的一种多协议usb设备协议类型与应用动态匹配的方法的流程图;

图2分别为本发明实施例2提供的一种多协议usb设备协议类型与应用动态匹配的方法的流程图;

图3分别为本发明实施例3提供的一种多协议usb设备协议类型与应用动态匹配的方法的流程图;

图4为本发明实施例3和实施例4提供的通讯应用的操作流程图;

图5为本发明实施例3提供的一种多协议usb设备协议类型与应用动态匹配的方法的中的步骤315的操作流程图;

图6为本发明实施例4提供的一种多协议usb设备协议类型与应用动态匹配的方法的流程图;

图7为本发明实施例5提供的一种设备协议类型与应用动态匹配的多协议usb设备的方框图;

图8为本发明实施例6提供的一种设备协议类型与应用动态匹配的多协议usb设备的方框图。

具体实施方法

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,如图1所示,包括:

步骤101:设备向上位机报告自身的设备协议类型;

本实施例中设备具体为usb设备,设备向上位机报告的自身的设备协议类型为设备支持的usb协议类型的一种或者多种(两种以上)。

具体地,设备根据自身的设备协议类型参数获取设备协议类型,根据获取到的设备协议类型向上位机报告自身的设备协议类型的一种或者多种(两种以上)。

设备协议类型参数的初始值与默认设备协议类型匹配,默认设备协议类型可以为一种或者多种,当设备首次插入到计算机上时,设备向上位机报告默认设备协议类型。

例如:当设备首次插入到计算机上时,设备向上位机报告默认设备协议类型为hid协议类型;或者当设备首次插入到计算机上时,设备向上位机报告默认设备协议类型为hid协议类型和ccid协议类型。

步骤102:设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,判断指令的类型,若指令为绑定协议指令,则执行步骤103;若指令为解绑协议指令,则执行步骤108;若指令为usb通讯指令,则执行步骤111;若指令为usb选择应用指令,则执行步骤114;

本实施例中,设备通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到上位机的指令的通道作为当前协议通道。

本实施例中,判断指令的类型具体为:根据指令的有效数据判断通过当前协议通道接收到的指令的类型,指令中的有效数据具体为指令中的apdu(applicationprotocoldataunit--应用协议数据单元)。

具体地,设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令获取指令中的有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为绑定协议指令则执行步骤103;若有效数据的前三个字节上的数据为第二预设字符串,则指令为解绑协议指令则执行步骤108;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤114;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤111。

本实施例中,第一预设字符串,可以为:80e100;第二预设字符可以为:80e101;第三预设字符串可以为00a404。

更加具体地:设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令,根据与当前协议通道对应的设备协议类型解析指令,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为绑定协议指令则执行步骤103;若有效数据的前三个字节上的数据为第二预设字符串,则指令为解绑协议指令则执行步骤108;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤114;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤111。

本实施例中,若当前协议通道为与hid协议对应的hid协议通道,第一预设位置可以但不限于为指令中的第七字节,第二预设位置可以但不限于为指令中的第八字节;若当前协议通道为与ccid协议对应的ccid协议通道,第一预设位置可以但不限于为指令中的第二字节,第二预设位置可以但不限于为指令中的第十一字节;若当前协议通道为与scsi协议对应的scsi协议通道,第一预设位置可以但不限于为指令中的第九字节,第二预设位置可以但不限于为指令中的第三十二字节。

例如:设备等待接收来自上位机的指令,当通过hid协议通道接收到来自上位机的指令0000000183000d80e1000008a0000006472f0001cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,根据与hid协议通道对应的hid协议解析指令,获取指令中的第七字节上的数据“0d”并请将作为有效数据长度,从指令中的第八字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000008a0000006472f0001作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为绑定协议指令则执行步骤102。

又例如:设备等待接收来自上位机的指令,当通过ccid协议通道接收到来自上位机的指令6f0d000000003e00000080e1010008a0000006472f0001,根据与ccid协议通道对应的ccid协议解析指令,获取指令中的第二字节上的数据“0d”并请将作为有效数据长度,从指令中的第十一字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1010008a0

000006472f0001作为有效数据,有效数据的前三个字节上的数据为第二预设字符串80e101则指令为解绑协议指令则执行步骤108。

还例如:设备等待接收来自上位机的指令,当通过scsi协议通道接收到来自上位机的指令55534243c80945870d00000000000aff45504153530000005500000000000000a4040008a0000006472f0001,根据与scsi协议通道对应的scsi协议解析指令,获取指令中的第九字节上的数据“0d”并请将作为有效数据长度,从指令中的第三十二字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据00a4040008a0000006472f0001作为有效数据,有效数据的前三个字节上的数据为第三预设字符串00a404则指令为usb选择应用指令,则执行步骤114。

还需说明的是,若当前协议通道为与scsi协议对应的scsi协议通道,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令,判断指令的类型是否为上位机向设备发送数据的指令,如果是,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上个数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,否则,执行相应操作。

步骤103:设备从绑定协议指令中获取协议标识和应用标识;

具体的,设备获取绑定协议指令的有效数据中的第四节上的数据,并将其作为协议标识;将绑定协议指令的有效数据中的第五字节上的数据作为应用标识的数据长度,根据应用标识的数据长度从绑定协议指令的有效数据的数据域中获取应用标识。

例如:设备获取绑定协议指令的有效数据80e1000008a0000006472f0001中的第四节上的数据00,并将其作为协议标识;将绑定协议指令的有效数据中的第五字节上的数据08作为应用标识的数据长度,从绑定协议指令的有效数据的数据域a000000006472f0001中获取数据长度为8个字节长度的数据“a0000006472f0001”,并请其作为应用标识。

本实施例中,00为hid协议对应的协议标识;01为ccid协议对应的协议标识;02为scsi协议对应的协议标识。

步骤104:设备判断与协议标识对应的设备协议类型是否已绑定通讯应用,如果是,则通过当前协议通道向上位机报错,返回步骤102;否则,执行步骤105;

具体地,设备检查与协议标识对应的绑定标识是否被置位,如果是,则判断与协议标识对应的设备协议类型已绑定通讯应用,通过当前协议通道向上位机报错,返回步骤102;否则,判断与协议标识对应的设备协议类型没有绑定通讯应用,执行步骤105。

本实施例中,设备中安装有管理应用和多个通讯应用,且设备支持的各个设备协议类型均可以访问管理应用。设备通过管理应用可以安装各个通讯应用,管理应用为管理各个通讯应用的应用,各个通讯应用为实现设备的功能性的应用:例如otp应用、pki应用、fido应用。

步骤105:设备组织包括应用标识的选择应用指令,将选择应用指令发送给与应用标识对应的应用;

具体地,设备将应用标识作为选择应用指令的数据域中的数据,在数据域之前添加选择应用指令的指令头,得到包括应用标识的选择应用指令,将选择应用指令发送给与应用标识对应的应用。

例如:设备将应用标识“a0000006472f0001”作为选择应用指令的数据域中的数据,在数据域之前添加选择应用指令的指令头“00a4040008”,得到包括应用标识的选择应用指令“00a4040008a0000006472f0001”,将选择应用指令发送给与应用标识对应的应用。

步骤106:设备接收选择应用应答,根据选择应用应答判断选择应用是否成功,如果是,则将与协议标识对应的绑定标识置位,根据与当前协议通道对应的设备协议类型组织绑定成功应答,通过当前协议通道向上位机返回绑定成功应答,执行步骤107;否则,通过当前协议通道向上位机报错,返回步骤102;

其中,根据与当前协议通道对应的设备协议类型组织绑定成功应答,具体为:根据与当前协议通道对应的设备协议类型组织报告第一成功标识的绑定成功应答。

例如:根据与hid协议通道对应的hid协议类型组织报告第一成功标识9000的绑定成功应答00000001830002900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。

本步骤中,将与协议标识对应的绑定标识置位后,还包括:将绑定协议指令中的应用标识与协议标识对应保存。

步骤107:设备根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,设备复位,返回步骤101;

具体地,设备根据已绑定通讯应用的设备协议类型更新自身的设备类型参数;设备复位,返回步骤101。

步骤107可以具体为:设备根据当前已绑定通讯应用的设备协议类型设置自身的设备协议类型,设备复位,返回步骤101;

例如:设备将自身的设备协议类型设置为当前已绑定与应用标识“a0000006472f0001”对应的第一通讯应用的hid协议类型,复位usb总线,向上位机报告自身的设备协议类型,返回步骤102。

步骤107还可以具体为:设备根据所有已绑定通讯应用的设备协议类型设置自身的设备协议类型,设备复位,返回步骤101;

例如:设备将自身的设备协议类型设置为当前已绑定第一通讯应用的hid协议类型和已绑定第二通讯应用的ccid协议类型,设备复位。

本实施例中,步骤107又可以替换为步骤b1:设备判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型是否匹配,如果是,则返回步骤102;否则,根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,设备复位,返回步骤101。

步骤b1具体为:设备判断当前已绑定通讯应用的设备协议类型是否为当前已上报设备协议类型之一,如果是,则当前判断已绑定通讯应用的设备协议类型和当前已上报设备协议类型匹配,则返回步骤102;否则,判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为所有已绑定通讯应用的设备协议类型的设备协议类型,设备复位,返回步骤101。

例如:设备判断当前已绑定第一通讯应用的hid协议类型是为当前已上报设备协议类型(ccid协议类型和hid协议类型)之一,则判断当前已绑定第一应用的设备协议类型和当前已上报设备协议类型匹配,则返回步骤102。

步骤b1还可以具体为:设备判断当前已绑定通讯应用的设备协议类型是否和当前已上报的设备协议类型完全一致,如果是,则判断已绑定通讯应用的设备协议类型和已上报的设备协议类型匹配,则返回步骤102;否则,判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为所有已绑定通讯应用的设备协议类型的设备协议类型,设备复位,返回步骤101。

例如:设备判断已绑定第一通讯应用的hid协议类型和当前已上报设备协议类型(hid协议类型和ccid协议类型)不完全一致,判断当前已绑定第一通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为已绑定第一通讯应用的设备协议类型的hid协议类型,设备复位,返回步骤101。

本实施例中,步骤b1中设备根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,具体为:设备根据当前已绑定通讯应用的设备协议类型设置自身的设备协议类型或者设备根据所有已绑定通讯应用的设备协议类型设置自身的设备协议类型。

步骤108:设备从解绑协议指令中获取协议标识和应用标识;

具体的,设备获取解绑协议指令的有效数据中的第四节上的数据,并将其作为协议标识;将有效数据中的第五字节上的数据作为应用标识的数据长度,根据应用标识的数据长度从解绑协议指令的有效数据的数据域中获取应用标识。

例如:设备获取解绑协议指令的有效数据“80e1010008a0000006472f0001”中的第四节上的数据“00”,并将其作为协议标识;将有效数据的第五字节上的数据“08”作为应用标识的数据长度,从有效数据的数据域中获取数据长度为8个字节长度的数据“a0000006472f0001”,并请其作为应用标识。

步骤109:设备判断与协议标识对应的设备协议类型是否已绑定通讯应用,如果是,则执行步骤110;否则,通道当前协议通道向上位机报错,返回步骤102;

具体地,设备检查与协议标识对应的绑定标识是否被置位,如果是,则判断与协议标识对应的设备协议类型已绑定通讯应用,则执行步骤110;否则,判断与协议标识对应的设备协议类型没有绑定通讯应用,通道当前协议通道向上位机报错,返回步骤102。

步骤110:设备将与协议标识对应的绑定标识复位,通过当前协议通道向上位机返回解绑成功应答;根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,设备复位,返回步骤101;

本步骤中,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型具体为:设备判断是否存在已绑定通讯应用的设备协议类型,如果是,则根据已绑定通讯应用的设备协议类型设置自身的设备协议类型;否则,将自身的设备协议类型设置为默认设备协议类型。

本步骤中,根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,具体为:将自身的设备协议类型设置为已绑定通讯应用的设备协议类型中的一个或者多个。

本步骤中,设备将与协议标识对应的绑定标识复位后,还包括:删除与协议标识对应保存的应用标识。

步骤111:设备判断与当前协议通道对应的设备协议类型是否已绑定通讯应用,如果是,则执行步骤112;否则,通过当前协议通道向上位机报错;返回步骤102;

具体地,设备判断与当前协议通道对应的设备协议类型对应的协议标识对应的绑定标识是否被置位,如果是,则判断当前协议通道对应的设备协议类型已绑定通讯应用,执行步骤112;否则,通过当前协议通道向上位机报错,返回步骤102;

步骤111中判断为否后,通过当前协议通道向上位机报错之前,还包括:判断是否已选择管理应用,如果是,则从usb通讯指令得到通讯指令,将通讯指令发送给被选择的管理应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤102;否则,通过当前协议通道向上位机报错,返回步骤102。

步骤112:设备根据usb通讯指令得到通讯指令,将通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;接收该应用返回的通讯应答。

具体地,设备将usb通讯指令中的有效数据作为通讯指令,将通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;接收该应用返回的通讯应答。

步骤111判断为是之后和步骤112之前还包括:

步骤c1:设备获取与当前协议通道对应的设备协议类型绑定的通讯应用的应用标识,根据应用标识组织选择应用指令;

步骤c2:设备将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤c3:设备根据选择应用应答判断选择应用是否成功,如果是,则执行步骤112;否则,向上位机报错,返回步骤102。

本实施例中,每个通讯应用如下的操作;

步骤a1:通讯应用等待接收来自设备的指令,接收到来自设备的指令后,解析指令判断指令的类型,当接收到来自设备的通讯指令后,执行步骤a2;当接收到来自设备的选择应用指令之后,返回选择应用应答,返回步骤a1;

步骤a2:通讯应用根据通讯指令判断是否需要获取用户按键信息,如果是,则执行步骤a3;否则,组织通讯应答,将包括第一返回码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用根据读版本指令“000300000000000000”判断出不需要获取用户按键信息,组织包括第一返回码“9000”的读版本应用5532465f56329000,将包括第一返回码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用根据认证指令“000203000000813726f4e76a7c657b37b806dd84bb8319fc1088365722290fdcac825e24729a1a0102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f1040fbf261f599616de16606033381ba762451e5b0f48b44c58daf9439a10fa2ac2513d08a46f269e98fa386481659b4bc5ee8df8ee5a499b2caa44be23ee88442420000”判断出需要获取用户按键信息,则执行步骤a3;

步骤a3:通讯应用判断用户是否已按键,如果是,则执行步骤a4;否则,将包括错误码的通讯应答返回给设备,返回步骤a1;

具体地,通讯应用检测按键io是否为低,如果是则判断用户是否已按键,如果是,则执行步骤a4;否则,判断用户未按键,将包括错误码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用检测按键io不为低,则判断用户未按键,将包括错误码6985的通讯应答6985返回给设备,返回步骤a1。

步骤a4:通讯应用根据用户按键信息组织通讯应答,将通讯应答返回给设备,返回步骤a1。

例如,通讯应用检测到用户按键信息为确认信息后,组织包括第一返回码9000的通讯应答,将通讯应答返回给设备,返回步骤a1。

本实施例中,管理应用等待来自设备的指令,接收到来自设备的指令后,解析指令判断指令的类型,当接收到选择应用指令后,返回选择应用应答,继续等待接收来自设备的指令;当接收到的来自设备的指令为安装应用的通讯指令,则安装多个通讯应用,并将安装应答作为通讯应答返回给设备;继续等待接收来自设备的指令。

例如:当管理应用接收到的来自设备的指令为安装应用的通讯指令后,安装第一通讯应用、第二通讯应用和第三通讯应用,并将安装应答作为通讯应答返回给设备;继续等待接收来自设备的指令。

步骤113:设备根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤102。

若当前协议通道为hid协议通道,则本步骤具体为:根据hid协议类型封装通讯应答得到包括hid协议头和通讯应答的usb通讯应答;

例如:根据hid协议类型封装通讯应答6985到包括hid协议头00000001830002和通讯应答6985的usb通讯应答00000001830002698500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000其中,hid协议头中的最后一个字节上的数据02为通讯应答的数据长度,即通讯应答的数据长度为2个字节。

若当前协议通道为ccid协议通道,则本步骤具体为:根据ccid协议类型封装通讯应答得到包括ccid协议头和通讯应答的usb通讯应答;

例如:根据ccid协议类型封装通讯应答6985到包括ccid协议头80020000000040000000和通讯应答6985的usb通讯应答800200000000400000006985,其中,ccid协议头中的第二字节上的数据02为通讯应答的数据长度,即通讯应答的数据长度为2个字节。

若当前协议通道为scsi协议通道,则本步骤具体为:根据scsi协议类型封装通讯应答得到通讯应答和响应控制字的usb通讯应答;

例如:根据scsi协议类型封装通讯应答6985到包括通讯应答6985和响应控制字5553425358444e8a0000000000的usb通讯应答69855553425358444e8a0000000000。

步骤114:设备从usb选择应用指令中获取应用标识,判断与应用标识对应的应用是否已与当前设备协议通道对应的设备协议类型绑定,如果是,则执行步骤115;否则,通过当前协议通道向上位机报错,返回步骤101;

具体地,设备从usb选择应用指令的有效数据中获取应用标识的数据长度,根据应用标识的数据长度从有效数据的数据域中获取应用标识,判断与应用标识对应的应用是否已与当前设备协议通道对应的当前设备协议类型绑定,如果是,则执行步骤115;否则,通过当前协议通道向上位机报错,返回步骤102;

本步骤具体为:设备从usb选择应用指令中获取应用标识后,若与应用标识对应的应用为管理应用,则执行步骤115;若与应用标识对应的应用为通讯应用,则检查与协议标识对应的绑定标识是否被置位,如果是,则判断与协议标识对应的设备协议类型已绑定通讯应用,执行步骤115;否则,判断与协议标识对应的设备协议类型未绑定通讯应用,通过当前协议通道向上位机报错,返回步骤102。

例如:设备从usb选择应用指令0000000183000d00a4040008a000000151000000cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

的有效数据00a4040008a000000151000000中获取应用标识的数据长度08,根据应用标识的数据长度从有效数据的数据域“a000000151000000”中获取数据长度为8个字节的数据“a000000151000000”,并将其作为应用标识“a000000151000000”,判断应用标识为与管理应用对应的标识,则执行步骤115;

步骤115:设备根据usb选择应用指令得到选择应用指令,将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

具体地,设备将usb选择应用指令中的有效数据作为选择应用指令,将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤115之前还包括,设备判断是否存在与选择应用指令中的应用标识对应的应用,如果是,则执行步骤115;否则,通过当前协议通道向上位机报错,返回步骤102;

步骤116:设备根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答,通过当前协议通道将usb选择应用应答返回给上位机,返回步骤102。

本实施例中,步骤107还可以被替换为:设备根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤102;步骤110还可以被替换为:设备将与协议标识对应的绑定标识复位,向上位机返回解绑成功,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤102。

相应地,当设备执行完步骤107中根据已绑定通讯应用的设备协议类型设置自身的设备协议类型的操作后,或者执行完步骤110中的根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型的操作后,若设备再次插入到所述上位机上,设备执行步骤101。

本实施例中,当设备复位或者重新插入到上位机后,上位机会检测到d+与d-之间有电压差,上位机认为设备已插入。

或者当步骤107中设备根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤102后;上位机接收到绑定成功应答,上位机复位设备,设备执行步骤101;当步骤110中设备将与协议标识对应的绑定标识复位,向上位机返回解绑成功,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤102后,上位机接收到解绑成功应答,上位机复位所述设备,设备执行步骤101。

其中,上位机复位设备,具体为:上位机通过自身的集线器向设备发送复位命令,设备接收到复位命令后,进行复位。

本实施例中,若指令为usb选择应用指令,执行步骤114之前还可以包括:设备判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配,如果是,则执行步骤117;否则,执行步骤114;步骤109中判断为否后,向上位机报错之前还包括:判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配,如果是,则从usb通讯指令得到通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤102;否则,通过当前协议通道向上位机报错,返回步骤102。

步骤117:设备从usb选择应用指令中获取应用标识和选择应用指令,将选择应用指令发送给与usb选择应用指令中的应用标识对应的通讯应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型封装选择应用应答得到usb选择应用应答,将usb选择应用应答返回给上位机,返回步骤102;

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,本方法提供的usb设备支持多种设备协议类型并且支持多个应用,各个协议和应用之间可以动态匹配,增强了设备的应用性,并且用户体验好。

实施例2

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,如图2所示,包括:

步骤201:设备向上位机报告自身的设备协议类型;

具体地,设备根据自身的设备协议类型参数获取设备协议类型,根据获取到的设备协议类型向上位机报告自身的设备协议类型。

设备协议类型参数的初始值与设备支持的全部设备协议类型匹配,当设备首次插入到计算机上时,设备向上位机报告支持的全部设备协议类型。

本实施例中,设备具体为usb设备,设备支持的全部设备协议类型为多个(两个以上)。例如,设备向上位机报告设备支持的全部设备协议类型分别为hid协议类型、ccid协议类型和scsi协议类型。

步骤202:设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,判断指令的类型,若指令类型为协议切换指令,则执行步骤203;若指令类型为usb通讯指令,则执行步骤206;若指令类型为usb选择应用指令,则执行步骤208;

本实施例中,设备通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到上位机的指令的通道作为当前协议通道。

本实施例中,判断指令的类型具体为:根据指令的有效数据判断通过当前协议通道接收到的指令的类型,指令中的有效数据具体为指令中的apdu(applicationprotocoldataunit--应用协议数据单元)。

具体地,设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令获取指令中的有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为协议切换指令则执行步骤203;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤208;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤206。

本实施例中,第一预设字符串,可以为:80e100;第三预设字符串可以为00a404。

更加具体地:设备等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令,根据与当前协议通道对应的设备协议类型解析指令,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为协议切换指令则执行步骤203;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤208;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤206。

本实施例中,若当前协议通道为与hid协议对应的hid协议通道,第一预设位置可以但不限于为指令中的第七字节,第二预设位置可以但不限于为指令中的第八字节;若当前协议通道为与ccid协议对应的ccid协议通道,第一预设位置可以但不限于为指令中的第二字节,第二预设位置可以但不限于为指令中的第十一字节;若当前协议通道为与scsi协议对应的scsi协议通道,第一预设位置可以但不限于为指令中的第九字节,第二预设位置可以但不限于为指令中的第三十二字节。

例如:设备等待接收来自上位机的指令,当通过hid协议通道接收到来自上位机的指令0000000183000580e1000100cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,根据与hid协议通道对应的hid协议解析指令,获取指令中的第七字节上的数据“05”并请将作为有效数据长度,从指令中的第八字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000100作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为协议切换指令,则执行步骤203。

又例如:设备等待接收来自上位机的指令,当通过ccid协议通道接收到来自上位机的指令6f05000000003e00000080e1000000,根据与ccid协议通道对应的ccid协议解析指令,获取指令中的第二字节上的数据“05”并请将作为有效数据长度,从指令中的第十一字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000000作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为协议切换指令,则执行步骤203。

还例如:设备等待接收来自上位机的指令,当通过scsi协议通道接收到来自上位机的指令55534243c80945870500000000000aff45504153530000005500000000000080e1000000,根据与scsi协议通道对应的scsi协议解析指令,获取指令中的第九字节上的数据“05”并请将作为有效数据长度,从指令中的第三十二字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000000作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为协议切换指令,则执行步骤203。

还需说明的是,若当前协议通道为与scsi协议对应的scsi协议通道,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令,判断指令的类型是否为上位机向设备发送数据的指令,如果是,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上个数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,否则,执行相应操作。

步骤203:设备根据协议切换指令中的协议标识设置自身的设备协议类型;

本实施例中,设备根据协议切换指令中的协议标识设置自身的设备协议类型;具体为,设备根据协议转换指令中的协议标识更新设备类型参数。

具体地,设备获取协议切换指令中的有效数据中的第四节上的数据,并将其作为协议标识;将自身的设备协议类型设置为与协议标识对应的设备协议类型。

本实施例中,00为hid协议对应的协议标识;01为ccid协议对应的协议标识;02为scsi协议对应的协议标识。

例如:设备获取协议切换指令0000000183000580e1000100cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc中的有效数据80e1000100中的第四节上的数据01,并将其作为协议标识;将自身的设备协议类型设置为与协议标识01对应的ccid协议类型。

步骤204:设备根据与当前协议通道对应的设备协议类型组织协议切换应答,通过当前协议通道向上位机返回协议切换应答;

若当前协议通道为hid协议通道,则本步骤具体为:根据hid协议类型组织包括hid协议头和有效应答数据的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据hid协议类型组织包括hid协议头00000001830002和有效应答数据9000的协议切换应答000000018300029000;通过当前协议通道向上位机返回协议切换应答;,其中,hid协议头中的最后一个字节上的数据02为有效应答数据的数据长度,即有效应答数据的数据长度为2个字节。

若当前协议通道为ccid协议通道,则本步骤具体为:根据ccid协议类型组织包括ccid协议头和有效应答数据的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据ccid协议类型组织包括ccid协议头80020000000040000000和有效应答数据9000的协议切换应答800200000000400000009000;通过当前协议通道向上位机返回协议切换应答;,其中,ccid协议头中的第二字节上的数据02为有效应答数据的数据长度,即有效应答数据的数据长度为2个字节。

若当前协议通道为scsi协议通道,则本步骤具体为:根据scsi协议类型封装有组织包括有效应答数据和响应控制字的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据scsi协议类型封装有组织包括有效应答数据9000和响应控制字5553425358444e8a0000000000的协议切换应答90005553425358444e8a0000000000;通过当前协议通道向上位机返回协议切换应答。

步骤205:设备复位,返回步骤201;

本实施例中,步骤204之后,还可以直接返回步骤202;

相应地,当上位机接收到协议切换应答后,上位机复位设备,设备执行步骤201。或者当设备执行完步骤204之后,若设备再次插入到所述上位机上,设备执行步骤201。

步骤206:设备根据usb通讯指令得到通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答。

具体地,设备将usb通讯指令中的有效数据作为通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答。

本实施例中,应用包括管理应用和通讯应用。设备中预先安装有管理应用,且设备支持的各个设备协议类型均可以访问管理利用。设备通过管理应用可以安装通讯应用。

本实施例中,管理应用等待来自设备的指令,接收到来自设备的指令后,解析指令判断指令的类型,当接收到选择应用指令后,返回选择应用应答,继续等待接收来自设备的指令;当接收到的来自设备的指令为安装应用的通讯指令,则安装多个通讯应用,并将安装应答作为通讯应答返回给设备;继续等待接收来自设备的指令。

例如:当管理应用接收到的来自设备的指令为应用安装的通讯指令后,安装第一通讯应用、第二通讯应用和第三通讯应用,并将安装应答返回给设备;继续等待接收来自设备的通讯指令。

本实施例中,每个通讯应用执行如下操作;

步骤a1:通讯应用等待接收来自设备的指令,接收到来自设备的指令后,解析指令判断指令的类型,当接收到来自设备的通讯指令后,执行步骤a2;当接收到来自设备的选择应用指令之后,返回选择应用应答,返回步骤a1;

步骤a2:通讯应用根据通讯指令判断是否需要获取用户按键信息,如果是,则执行步骤a3;否则,组织通讯应答,将包括第一返回码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用根据读版本指令“000300000000000000”判断出不需要获取用户按键信息,组织包括第一返回码“9000”的读版本应用5532465f56329000,将包括第一返回码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用根据认证指令“000203000000813726f4e76a7c657b37b806dd84bb8319fc1088365722290fdcac825e24729a1a0102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f1040fbf261f599616de16606033381ba762451e5b0f48b44c58daf9439a10fa2ac2513d08a46f269e98fa386481659b4bc5ee8df8ee5a499b2caa44be23ee88442420000”判断出需要获取用户按键信息,则执行步骤a3;

步骤a3:通讯应用判断用户是否已按键,如果是,则执行步骤a4;否则,将包括错误码的通讯应答返回给设备,返回步骤a1;

具体地,通讯应用检测按键io是否为低,如果是则判断用户是否已按键,如果是,则执行步骤a4;否则,判断用户未按键,将包括错误码的通讯应答返回给设备,返回步骤a1;

例如:通讯应用检测按键io不为低,则判断用户未按键,将包括错误码6985的通讯应答6985返回给设备,返回步骤a1。

步骤a4:通讯应用根据用户按键信息组织通讯应答,将通讯应答返回给设备,返回步骤a1。

例如,通讯应用检测到用户按键信息为确认信息后,组织包括第一返回码9000的通讯应答,将通讯应答返回给设备,返回步骤a1。

步骤207:设备根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤202。

若当前协议通道为hid协议通道,则本步骤具体为:根据hid协议类型封装通讯应答得到包括hid协议头和通讯应答的usb通讯应答;

例如:根据hid协议类型封装通讯应答6985到包括hid协议头00000001830002和通讯应答6985的usb通讯应答

00000001830002698500000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000,其中,hid协议头中的最后一个字节上的数据02为通讯应答的数据长度,即通讯应答的数据长度为2个字节。

若当前协议通道为ccid协议通道,则本步骤具体为:根据ccid协议类型封装通讯应答得到包括ccid协议头和通讯应答的usb通讯应答;

例如:根据ccid协议类型封装通讯应答6985到包括ccid协议头80020000000040000000和通讯应答6985的usb通讯应答800200000000400000006985,其中,ccid协议头中的第二字节上的数据02为通讯应答的数据长度,即通讯应答的数据长度为2个字节。

若当前协议通道为scsi协议通道,则本步骤具体为:根据scsi协议类型封装通讯应答得到通讯应答和响应控制字的usb通讯应答;

例如:根据scsi协议类型封装通讯应答6985到包括通讯应答6985和响应控制字5553425358444e8a0000000000的usb通讯应答69855553425358444e8a0000000000。

步骤208:设备根据usb选择应用指令得到选择应用指令,将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

具体地,设备将usb选择应用指令中的有效数据作为选择应用指令,从选择应用指令中获取应用标识的数据长度,根据应用标识的数据长度从选择应用指令中的数据域中获取应用标识,将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤209:设备根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答,通过当前协议通道将usb选择应用应答返回给上位机,返回步骤202。

实施例3

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,如图3所示,包括:

本实施例中,设备具体为usb设备,设备中包括第一芯片和第二芯片;

优选地,第一芯片为usb芯片;第二芯片为java卡芯片。

步骤300:第一芯片向上位机报告自身的设备协议类型;

本实施例中第一芯片向上位机报告自身的设备协议类型为第一芯片支持的usb协议类型的一种或者多种(两种以上)。

具体地,第一芯片根据自身的第一芯片协议类型参数获取第一芯片协议类型,根据获取到的第一芯片协议类型向上位机报告自身的第一芯片协议类型。

第一芯片协议类型参数的初始值与默认第一芯片协议类型匹配,默认第一芯片协议类型可以为一种或者多种,当第一芯片首次插入到计算机上时,第一芯片向上位机报告默认第一芯片协议类型。

例如:当设备首次插入到计算机上时,第一芯片向上位机报告默认设备协议类型为hid协议类型;或者当设备首次插入到计算机上时,第一芯片向上位机报告默认设备协议类型为hid协议类型和ccid协议类型。

步骤301:第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,判断指令的类型,若指令为绑定协议指令,则执行步骤302;若指令为解绑协议指令,则执行步骤308;若指令为usb通讯指令,则执行步骤311;若指令为usb选择应用指令,则执行步骤316;

本实施例中,第一芯片通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到上位机的指令的通道作为当前协议通道。

其中,判断指令的类型具体为:根据指令的有效数据判断通过当前协议通道接收到的指令的类型,指令中的有效数据具体为指令中的apdu(applicationprotocoldataunit--应用协议数据单元)。

具体地,第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令获取指令中的有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为绑定协议指令则执行步骤302;若有效数据的前三个字节上的数据为第二预设字符串,则指令为解绑协议指令则执行步骤308;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤316;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤311。

本实施例中,第一预设字符串,可以为:80e100;第二预设字符可以为:80e101;第三预设字符串可以为00a404。

更加具体地:第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令,根据与当前协议通道对应的设备协议类型解析指令,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为绑定协议指令则执行步骤302;若有效数据的前三个字节上的数据为第二预设字符串,则指令为解绑协议指令则执行步骤308;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤316;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤311。

本实施例中,若当前协议通道为与hid协议对应的hid协议通道,第一预设位置可以但不限于为指令中的第七字节,第二预设位置可以但不限于为指令中的第八字节;若当前协议通道为与ccid协议对应的ccid协议通道,第一预设位置可以但不限于为指令中的第二字节,第二预设位置可以但不限于为指令中的第十一字节;若当前协议通道为与scsi协议对应的scsi协议通道,第一预设位置可以但不限于为指令中的第九字节,第二预设位置可以但不限于为指令中的第三十二字节。

例如:第一芯片等待接收来自上位机的指令,当通过hid协议通道接收到来自上位机的指令0000000183000d80e1000008a0000006472f0001cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,根据与hid协议通道对应的hid协议解析指令,获取指令中的第七字节上的数据“0d”并请将作为有效数据长度,从指令中的第八字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000008a0000006472f0001作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为绑定协议指令则执行步骤302。

又例如:第一芯片等待接收来自上位机的指令,当通过ccid协议通道接收到来自上位机的指令6f0d000000003e00000080e1010008a0000006472f0001,根据与ccid协议通道对应的ccid协议解析指令,获取指令中的第二字节上的数据“0d”并请将作为有效数据长度,从指令中的第十一字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1010008a0

000006472f0001作为有效数据,有效数据的前三个字节上的数据为第二预设字符串80e101则指令为解绑协议指令则执行步骤308。

还例如:第一芯片等待接收来自上位机的指令,当通过scsi协议通道接收到来自上位机的指令55534243c80945870d00000000000aff45504153530000005500000000000000a4040008a0000006472f0001,根据与scsi协议通道对应的scsi协议解析指令,获取指令中的第九字节上的数据“0d”并请将作为有效数据长度,从指令中的第三十二字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据00a4040008a0000006472f0001作为有效数据,有效数据的前三个字节上的数据为第三预设字符串00a404则指令为usb选择应用指令,则执行步骤316。

还需说明的是,若当前协议通道为与scsi协议对应的scsi协议通道,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令,判断指令的类型是否为上位机向第一芯片发送数据的指令,如果是,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上个数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,否则,执行相应操作。

步骤302:第一芯片从绑定协议指令中获取协议标识和应用标识;

具体的,第一芯片获取绑定协议指令的有效数据中的第四节上的数据,并将其作为协议标识;将绑定协议指令的有效数据中的第五字节上的数据作为应用标识的数据长度,根据应用标识的数据长度从绑定协议指令的有效数据的数据域中获取应用标识。

例如:第一芯片获取绑定协议指令的有效数据80e1000008a0000006472f0001中的第四节上的数据00,并将其作为协议标识;将绑定协议指令的有效数据中的第五字节上的数据08作为应用标识的数据长度,从绑定协议指令的有效数据的数据域a000000006472f0001中获取数据长度为8个字节长度的数据“a0000006472f0001”,并请其作为应用标识。

本实施例中,00为hid协议对应的协议标识;01为ccid协议对应的协议标识;02为scsi协议对应的协议标识。

步骤303:第一芯片判断与协议标识对应的设备协议类型是否已绑定通讯应用,如果是,则通过当前协议通道向上位机报错,返回步骤301;否则,执行步骤304;

具体地,第一芯片检查与协议标识对应的绑定标识是否被置位,如果是,则判断与协议标识对应的设备协议类型已绑定通讯应用,通过当前协议通道向上位机报错,返回步骤301;否则,判断与协议标识对应的设备协议类型没有绑定通讯应用,执行步骤304。

本实施例中,设备中安装有管理应用和多个通讯应用,且设备支持的各个设备协议类型均可以访问管理利用。设备通过管理应用可以安装各个通讯应用,管理应用为管理各个通讯应用的应用,各个通讯应用为实现设备的功能性的应用:例如otp应用、pki应用、fido应用。

步骤304:第一芯片组织包括应用标识的选择应用指令,通过i2c/7816接口将选择应用指令发送给第二芯片;

具体地,第一芯片将应用标识作为选择应用指令的数据域中的数据,在数据域之前添加选择应用指令的指令头,得到包括应用标识的选择应用指令,通过i2c/7816接口将选择应用指令发送给第二芯片。

例如:第一芯片将应用标识“a0000006472f0001”作为选择应用指令的数据域中的数据,在数据域之前添加选择应用指令的指令头“00a4040008”,得到包括应用标识的选择应用指令“00a4040008a0000006472f0001”,通过i2c/7816接口将选择应用指令发送给第二芯片。

步骤305:第二芯片从选择应用指令中获取应用标识,判断与应用标识对应的应用是否存在;如果是,则将选择应用指令发送给与应用标识对应的应用,接收选择应用应答,并通过i2c/7816接口将选择应用应答返回给第一芯片,执行步骤306;否则,向第一芯片报错,第一芯片向上位机报错,返回步骤301;

步骤306:第一芯片根据选择应用应答判断选择应用是否成功,如果是,则将与协议标识对应的绑定标识置位,根据与当前协议通道对应的设备协议类型组织绑定成功应答,通过当前协议通道向上位机返回绑定成功应答,执行步骤307;否则,通过当前协议通道向上位机报错,返回步骤301;

其中,根据与当前协议通道对应的设备协议类型组织绑定成功应答,具体为:根据与当前协议通道对应的设备协议类型组织报告第一成功标识的绑定成功应答。

例如:根据与hid协议通道对应的hid协议类型组织报告第一成功标识9000的绑定成功应答00000001830002900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。

本步骤中,将与协议标识对应的绑定标识置位后,还包括:将绑定协议指令中的应用标识与协议标识对应保存。

步骤307:第一芯片根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,第一芯片复位,返回步骤300;

具体地,第一芯片根据已绑定通讯应用的设备协议类型更新自身的设备类型参数;第一芯片复位,返回步骤300。

步骤307可以具体为:第一芯片根据当前已绑定通讯应用的设备协议类型设置自身的设备协议类型,第一芯片复位,返回步骤300;

例如:第一芯片将自身的设备协议类型设置为当前已绑定与应用标识“a0000006472f0001”对应的第一通讯应用的hid协议类型,第一芯片复位,返回步骤300;

步骤307还可以具体为:第一芯片根据所有已绑定通讯应用的设备协议类型设置自身的设备协议类型,第一芯片复位,返回步骤300;

例如:第一芯片将自身的设备协议类型设置为当前已绑定第一通讯应用的hid协议类型和已绑定第二通讯应用的ccid协议类型,第一芯片复位,返回步骤300。

本实施例中,步骤307又可以替换为步骤b1:第一芯片判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型是否匹配,如果是,则返回步骤301;否则,根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,第一芯片复位,返回步骤300。步骤b1具体为:第一芯片判断当前已绑定通讯应用的设备协议类型是否为当前已上报设备协议类型之一,如果是,则当前判断已绑定通讯应用的设备协议类型和当前已上报设备协议类型匹配,则返回步骤301;否则,判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为所有已绑定通讯应用的设备协议类型的设备协议类型,第一芯片复位,返回步骤300。

例如:第一芯片判断当前已绑定第一通讯应用的hid协议类型是为当前已上报设备协议类型(ccid协议类型和hid协议类型)之一,则判断当前已绑定第一应用的设备协议类型和当前已上报设备协议类型匹配,则返回步骤301。

步骤b1还可以具体为:第一芯片判断当前已绑定通讯应用的设备协议类型是否和当前已上报的设备协议类型完全一致,如果是,则判断已绑定通讯应用的设备协议类型和已上报的设备协议类型匹配,则返回步骤301;否则,判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为所有已绑定通讯应用的设备协议类型的设备协议类型,第一芯片复位,返回步骤300。

例如:第一芯片判断已绑定第一通讯应用的hid协议类型和当前已上报设备协议类型(hid协议类型和ccid协议类型)不完全一致,判断当前已绑定第一通讯应用的设备协议类型和当前已上报设备协议类型不匹配,将自身的设备协议类型设置为已绑定第一通讯应用的设备协议类型的hid协议类型,第一芯片复位,返回步骤300。

本实施例中,步骤b1中第一芯片根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,具体为:第一芯片根据当前已绑定通讯应用的设备协议类型设置自身的设备协议类型或者第一芯片根据所有已绑定通讯应用的设备协议类型设置自身的设备协议类型。

步骤308:第一芯片从解绑协议指令中获取协议标识和应用标识;

具体的,第一芯片获取解绑协议指令的有效数据中的第四节上的数据,并将其作为协议标识;将有效数据中的第五字节上的数据作为应用标识的数据长度,根据应用标识的数据长度从解绑协议指令的有效数据的数据域中获取应用标识。

例如:第一芯片获取解绑协议指令“80e1010008a0000006472f0001”中的有效数据“80e1010008”中的第四节上的数据“00”,并将其作为协议标识;将有效数据的第五字节上的数据“08”作为应用标识的数据长度,从有效数据的数据域中获取数据长度为8个字节长度的数据“a0000006472f0001”,并请其作为应用标识。

步骤309:第一芯片判断与协议标识对应的设备协议类型是否已绑定通讯应用,如果是,则执行步骤310;否则,通过当前协议通道向上位机报错,返回步骤301;

具体地,第一芯片检查与协议标识对应的绑定标识是否被置位,如果是,则判断与协议标识对应的设备协议类型已绑定通讯应用,则执行步骤310;否则,判断与协议标识对应的设备协议类型没有绑定通讯应用,通过当前协议通道向上位机报错,返回步骤301。

步骤310:第一芯片将与协议标识对应的绑定标识复位,通过当前协议通道向上位机返回解绑成功应答,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,第一芯片复位,返回步骤300。

本步骤中,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型具体为:设备判断是否存在已绑定通讯应用的设备协议类型,如果是,则根据已绑定通讯应用的设备协议类型设置自身的设备协议类型;否则,将自身的设备协议类型设置为默认设备协议类型。

本步骤中,根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,具体为:将自身的设备协议类型设置为已绑定通讯应用的设备协议类型中的一个或者多个。

本步骤中,设备将与协议标识对应的绑定标识复位后,还包括:删除与协议标识对应保存的应用标识。

步骤311:第一芯片判断与当前协议通道对应的设备协议类型是否已绑定通讯应用,如果是,则执行步骤312;否则,通过当前协议通道向上位机报错;返回步骤301;

具体地,第一芯片判断与当前协议通道对应的设备协议类型对应的协议标识对应的绑定标识是否被置位,如果是,则判断当前协议通道对应的设备协议类型已绑定通讯应用,执行步骤312;否则,通过当前协议通道向上位机报错,返回步骤301;

步骤311中判断为否后,向上位机报错之前,还包括:判断是否已选择管理应用,如果是,则从usb通讯指令得到通讯指令,将通讯指令发送给被选择的管理应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301;否则,通过当前协议通道向上位机报错,返回步骤301。

步骤312:第一芯片根据usb通讯指令得到通讯指令,通过i2c/7816接口将通讯指令发送给第二芯片;

具体地,第一芯片将usb通讯指令中的有效数据作为通讯指令,通过i2c/7816接口将通讯指令发送给第二芯片;

步骤311判断为是之后和步骤312之前还包括:

步骤c1:第一芯片获取与当前协议通道对应的设备协议类型绑定的通讯应用的应用标识,根据应用标识组织选择应用指令;

步骤c2:第一芯片通过i2c/7816接口将选择应用指令发送给第二芯片;

步骤c3:第二芯片将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤c4:第二芯片通过i2c/7816接口将选择应用应答发送给第一芯片;

步骤c5:第一芯片根据选择应用应答判断选择应用是否成功,如果是,则执行步骤312;否则,向上位机报错,返回步骤301。

步骤313:第二芯片将通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;接收该应用返回的通讯应答。

本实施例中,第二芯片中预先安装有管理应用,且设备支持的各个设备协议类型均可以访问管理利用。第二芯片通过管理应用可以在第二芯片上安装通讯应用。

本实施例中,管理应用等待接收指令,接收到来自第一芯片的指令后,解析指令判断指令的类型,当接收到选择应用指令后,通过第二芯片向第一芯片返回选择应用应答,继续等待接收指令;当接收到的指令为通讯指令后,根据通讯指令安装多个通讯应用,并将安装应答作为通讯应答通过第二芯片返回给第一芯片;继续等待接收指令。

例如:当管理应用接收到的指令为安装通讯应用的通讯指令后,安装第一通讯应用、第二通讯应用和第三通讯应用,并将安装应答作为通讯应答通过第二芯片返回给第一芯片;继续等待接收指令。

本实施例中,通讯应用执行如图4所示的操作;

步骤a1:通讯应用等待接收指令,当接收到来自第一芯片的指令后,解析指令判断指令的类型,当接收到通讯指令后,执行步骤a2;当接收到选择应用指令之后,通过第二芯片向第一芯片返回选择应用应答,返回步骤a1;

步骤a2:通讯应用根据通讯指令判断是否需要获取用户按键信息,如果是,则执行步骤a3;否则,组织通讯应答,将通讯应答通过第二芯片返回给第一芯片,返回步骤a1;

例如:通讯应用根据读版本指令“000300000000000000”判断出不需要获取用户按键信息,组织包括第一返回码“9000”的通讯应答5532465f56329000,将包括第一返回码的通讯应答通过第二芯片返回给第一芯片,返回步骤a1;

又例如:通讯应用根据认证指令“000203000000813726f4e76a7c657b37b806dd84bb8319fc1088365722290fdcac825e24729a1a0102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f1040fbf261f599616de16606033381ba762451e5b0f48b44c58daf9439a10fa2ac2513d08a46f269e98fa386481659b4bc5ee8df8ee5a499b2caa44be23ee88442420000”判断出需要获取用户按键信息,则执行步骤a3;

步骤a3:通讯应用将第二芯片的按键io引脚设置为输入,检测第二芯片的按键io引脚的电平是否为低,如果是,则执行步骤a4;否则,将包括第二返回码的通讯应答通过第二芯片返回给第一芯片,返回步骤a1;

本实施例中,第二返回码可以为6ff1。

步骤a4:通讯应用将第二芯片的按键io引脚设置为输出,并控制第二芯片向第一芯片的按键io引脚输出低电平,组织包括第一返回码的通讯应答,将包括第一返回码的通讯应答通过第二芯片返回给第一芯片,返回步骤a1。

步骤314:第二芯片通过i2c/7816接口向第一芯片返回通讯应答;

步骤315:第一芯片根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301。

本步骤如图5所示,具体包括:

步骤3511:第一芯片判断接收到的通讯应答的类型,若为包括第一返回码的通讯应答,则执行步骤3512;若为包括第二返回码的通讯应答,则执行步骤3515;

步骤3512:第一芯片检测按键检测标识是否置位,如果是,则执行步骤3513;否则,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301;

步骤3513:第一芯片将自身的按键io引脚设置为输入;

步骤3514:第一芯片判断自身的按键io引脚的电平是否为低,如果是,复位按键检测标识,关闭第一定时器,关闭按键检测流程,将根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,拉高自身的按键io引脚电平,返回步骤301;否则,返回步骤3514;

步骤3515:第一芯片判断按键检测标识是否被置位,如果是,则根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301;否则,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301;并置位按键检测标识,开启第一定时器,开启按键检测流程;在第一定时器规定的第一预设时间内等待获取用户按键信息,当在第一预设时间内获取到用户按键信息后,向第二芯片的按键io引脚输出低电平;当在第一预设时间内没有获取到用户按键信息后,复位按键检测标识,关闭第一定时器,关闭按键检测流程。

步骤316:第一芯片从usb选择应用指令中获取应用标识,判断与应用标识对应的应用是否已与当前设备协议通道对应的当前设备协议类型绑定,如果是,则执行步骤317;否则,通过当前协议通道向上位机报错,返回步骤301;

具体地,第一芯片从usb选择应用指令的有效数据中获取应用标识的数据长度,根据应用标识的数据长度从选择应用指令的数据域中获取应用标识,若与应用标识对应的应用为管理应用,则执行步骤317;若与应用标识对应的应用为通讯应用,则判断与应用标识对应的通讯应用是否已与当前设备协议通道对应的当前设备协议类型绑定,如果是,则执行步骤317;否则,通过当前协议通道向上位机报错,返回步骤301;

例如:第一芯片从usb选择应用指令0000000183000d00a4040008a000000151000000cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc的有效数据00a4040008a000000151000000中获取应用标识的数据长度08,根据应用标识的数据长度从选择应用指令的数据域“a000000151000000”中获取应用标识“a000000151000000”,判断应用标识为与管理应用对应的标识,则执行步骤317;

步骤317:第一芯片从usb选择应用指令中得到选择应用指令,通过i2c/7816接口将选择应用指令发送给第二芯片;

步骤318:第二芯片将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤318之前还包括,第二芯片判断是否存在与选择应用指令中的应用标识对应的应用,如果是,则执行步骤318;否则,向第一芯片报错,第一芯片向上位机报错,返回步骤301;

步骤319:第二芯片通过i2c/7816接口将选择应用应答发送给第一芯片;

步骤320:第一芯片根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301。

本实施例中,步骤307还可以被替换为:第一芯片根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤301;步骤310还可以被替换为:第一芯片将与协议标识对应的绑定标识复位,向上位机返回解绑成功,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤301。

相应地,当第一芯片执行完步骤307中根据已绑定通讯应用的设备协议类型设置自身的设备协议类型的操作后,或者执行完步骤310中的根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型的操作后,若设备再次插入到所述上位机上,第一芯片执行步骤300。

或者当步骤307中第一芯片根据已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤301后;上位机接收到绑定成功应答,上位机复位第一芯片,第一芯片执行步骤300;当步骤310中第一芯片将与协议标识对应的绑定标识复位,向上位机返回解绑成功,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置自身的设备协议类型,返回步骤301后,上位机接收到解绑成功应答,上位机复位第一芯片,第一芯片执行步骤300。

本实施例中,若指令为usb选择应用指令,执行步骤316之前还可以包括:第一芯片判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配,如果是,则执行步骤321;否则,执行步骤316;步骤311中判断为否后,向上位机报错之前还包括:判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配,如果是,则从usb通讯指令得到通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤301;否则,通过当前协议通道向上位机报错,返回步骤301。

步骤321:第一芯片从usb选择应用指令中获取应用标识和选择应用指令,将选择应用指令发送给与usb选择应用指令中的应用标识对应的通讯应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型封装选择应用应答得到usb选择应用应答,将usb选择应用应答返回给上位机,返回步骤301;

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,本方法提供的usb设备支持多种设备协议类型并且支持多个应用,各个协议和应用之间可以动态匹配,增强了设备的应用性,并且用户体验好。

实施例4

本实施例提供了一种多协议usb设备协议类型与应用动态匹配的方法,如图6所示,包括:

步骤401:第一芯片向上位机报告设备的设备协议类型;

具体地,第一芯片根据自身的设备协议类型参数获取设备协议类型,根据获取到的设备协议类型向上位机报告设备的设备协议类型。

设备协议类型参数的初始值与设备支持的全部设备协议类型匹配,当设备首次插入到计算机上时,第一芯片向上位机报告设备支持的全部设备协议类型。

本实施例中,设备具体为usb设备,设备支持的全部设备协议类型为多个(两个以上)。例如,第一芯片向上位机报告设备支持的全部设备协议类型分别为hid协议类型、ccid协议类型和scsi协议类型。

步骤402:第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,判断指令的类型,若指令为协议切换指令,则执行步骤403;若指令为usb通讯指令,则执行步骤406;若指令为usb选择应用指令,则执行步骤410;

本实施例中,第一芯片通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令,当接收到指令后,将接收到上位机的指令的通道作为当前协议通道。

本实施例中,判断指令的类型具体为:根据指令的有效数据判断通过当前协议通道接收到的指令的类型,指令中的有效数据具体为指令中的apdu(applicationprotocoldataunit--应用协议数据单元)。

具体地,第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令获取指令中的有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为协议切换指令则执行步骤403;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤410;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤406。

本实施例中,第一预设字符串,可以为:80e100;第三预设字符串可以为00a404。

更加具体地:第一芯片等待接收来自上位机的指令,当通过当前协议通道接收到来自上位机的指令,根据与当前协议通道对应的设备协议类型解析指令,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,若有效数据的前三个字节上的数据为第一预设字符串则指令为协议切换指令则执行步骤403;若有效数据的前三个字节为第三预设字符串,则指令为usb选择应用指令,则执行步骤410;若指令的前三个字节上的数据为其他字符串,则指令为usb通讯指令,则执行步骤406。

本实施例中,若当前协议通道为与hid协议对应的hid协议通道,第一预设位置可以但不限于为指令中的第七字节,第二预设位置可以但不限于为指令中的第八字节;若当前协议通道为与ccid协议对应的ccid协议通道,第一预设位置可以但不限于为指令中的第二字节,第二预设位置可以但不限于为指令中的第十一字节;若当前协议通道为与scsi协议对应的scsi协议通道,第一预设位置可以但不限于为指令中的第九字节,第二预设位置可以但不限于为指令中的第三十二字节。

例如:第一芯片等待接收来自上位机的指令,当通过hid协议通道接收到来自上位机的指令0000000183000580e1000100cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,根据与hid协议通道对应的hid协议解析指令,获取指令中的第七字节上的数据“05”并请将作为有效数据长度,从指令中的第八字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000100作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为协议切换指令,则执行步骤403。

又例如:第一芯片等待接收来自上位机的指令,当通过ccid协议通道接收到来自上位机的指令6f05000000003e00000080e1000000,根据与ccid协议通道对应的ccid协议解析指令,获取指令中的第二字节上的数据“05”并请将作为有效数据长度,从指令中的第十一字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000000作为有效数据,有效数据的前三个字节上的数据为第一预设字符串80e100则指令为协议切换指令,则执行步骤403。

还例如:第一芯片等待接收来自上位机的指令,当通过scsi协议通道接收到来自上位机的指令55534243c80945870500000000000aff45504153530000005500000000000080e1000000,根据与scsi协议通道对应的scsi协议解析指令,获取指令中的第九字节上的数据“05”并请将作为有效数据长度,从指令中的第三十二字节上的数据开始获取数据长度为有效数据长度的数据,将获取到的数据80e1000000作为有效数据,有效数据的前三个字节上的数据为第一预设字符串00a404则指令为第一预设字符串80e100则指令为协议切换指令,则执行步骤403。

还需说明的是,若当前协议通道为与scsi协议对应的scsi协议通道,当通过当前协议通道接收到来自上位机的指令后,根据与当前协议通道对应的设备协议类型解析指令,判断指令的类型是否为上位机向设备发送数据的指令,如果是,获取指令中的第一预设位置上的数据并请将作为有效数据长度,从指令中的第二预设位置上个数据开始获取数据长度为有效数据长度的数据,将获取到的数据作为有效数据,否则,执行相应操作。

步骤403:第一芯片根据协议切换指令中的协议标识设置自身的设备协议类型;

本实施例中,第一芯片根据协议切换指令中的协议标识设置自身的设备协议类型;具体为,第一芯片根据协议转换指令中的协议标识更新设备类型参数。

具体地,第一芯片获取协议切换指令中的有效数据中的第四节上的数据,并将其作为协议标识;将自身的设备协议类型设置为与协议标识对应的设备协议类型。

本实施例中,00为hid协议对应的协议标识;01为ccid协议对应的协议标识;02为scsi协议对应的协议标识。

例如:第一芯片获取协议切换指令0000000183000580e1000100cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc中的有效数据80e1000100中的第四节上的数据01,并将其作为协议标识;将自身的设备协议类型设置为与协议标识01对应的ccid协议类型。

步骤404:第一芯片根据与当前协议通道对应的设备协议类型组织协议切换应答,通过当前协议通道向上位机返回协议切换应答;

若当前协议通道为hid协议通道,则本步骤具体为:根据hid协议类型组织包括hid协议头和有效应答数据的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据hid协议类型组织包括hid协议头00000001830002和有效应答数据9000的协议切换应答000000018300029000;通过当前协议通道向上位机返回协议切换应答;,其中,hid协议头中的最后一个字节上的数据02为有效应答数据的数据长度,即有效应答数据的数据长度为2个字节。

若当前协议通道为ccid协议通道,则本步骤具体为:根据ccid协议类型组织包括ccid协议头和有效应答数据的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据ccid协议类型组织包括ccid协议头80020000000040000000和有效应答数据9000的协议切换应答800200000000400000009000;通过当前协议通道向上位机返回协议切换应答;,其中,ccid协议头中的第二字节上的数据02为有效应答数据的数据长度,即有效应答数据的数据长度为2个字节。

若当前协议通道为scsi协议通道,则本步骤具体为:根据scsi协议类型封装有组织包括有效应答数据和响应控制字的协议切换应答;通过当前协议通道向上位机返回协议切换应答;

例如:根据scsi协议类型封装有组织包括有效应答数据9000和响应控制字5553425358444e8a0000000000的协议切换应答90005553425358444e8a0000000000;通过当前协议通道向上位机返回协议切换应答。

步骤405:第一芯片复位,返回步骤401;

本实施例中,步骤404之后,还可以直接返回步骤402;

相应地,当上位机接收到协议切换应答后,上位机复位设备,设备执行步骤401。或者当设备执行完步骤404之后,若设备再次插入到所述上位机上,设备执行步骤401。

步骤406:第一芯片根据usb通讯指令得到通讯指令,通过i2c/7816接口将通讯指令发送给第二芯片;

具体地,第一芯片将usb通讯指令中的有效数据作为通讯指令,通过i2c/7816接口将通讯指令发送给第二芯片;

步骤407:第二芯片将通讯指令发送给当前被选择的应用,获取该应用返回的通讯应答;

本实施例中,第二芯片中预先安装有管理应用,且设备支持的各个设备协议类型均可以访问管理利用。第二芯片通过管理应用可以安装通讯应用。

本实施例中,管理应用等待接收来自第二芯片的指令,接收到来自设备的指令后,解析指令判断指令的类型,当接收到来自第二芯片的选择应用指令后,返回选择应用应答,继续等待接收指令;当接收到的指令为应用安装的通讯指令后,安装多个通讯应用,并将安装应答作为通讯应答返回给第二芯片;继续等待接收指令。

例如:当管理应用接收到的指令为应用安装的通讯指令后,安装第一通讯应用、第二通讯应用和第三通讯应用,并将安装应答作为通讯应答返回给第二芯片;继续等待接收指令。

本实施例中,通讯应用执行如图4所示的操作。

步骤408:第二芯片通过i2c/7816接口将通讯应答返回给第一芯片;

步骤409:第一芯片根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤402。

步骤409具体包括:

步骤4091:第一芯片判断接收到的通讯应答的类型,若为包括第一返回码的通讯应答,则执行步骤4092;若为包括第二返回码的通讯应答,则执行步骤4094;

步骤4092:第一芯片检测按键检测标识是否被置位,如果是,则执行步骤4093;否则,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤402;

步骤4093:第一芯片将自身的按键io引脚设置为输入;

步骤4094:第一芯片判断自身的按键io引脚的电平是否为低,如果是,复位按键检测标识,关闭第一定时器,关闭按键检测流程,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤402;否则,返回步骤4094;

步骤4095:第一芯片判断按键检测标识是否被置位,如果是,则,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤402;否则,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,通过当前协议通道将usb通讯应答返回给上位机,返回步骤402并开启第一定时器,置位按键检测标识,在第一预设时间内等待获取用户按键信息,当在第一预设时间内获取到用户按键信息后,向第二芯片的按键io引脚输出低电平;当在第一预设时间内没有获取到用户按键信息后,复位按键检测标识,关闭第一定时器,关闭按键检测流程。

步骤410:第一芯片根据usb选择应用指令得到选择应用指令,通过i2c/7816接口将选择应用指令发送给第二芯片;

步骤411:第二芯片将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;

步骤412:第二芯片通过i2c/7816接口将选择应用应答发送给第一芯片;

步骤413:第一芯片根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答,将usb选择应用应答返回给上位机,返回步骤402。

实施例5

本实施例提供了一种设备协议类型与应用动态匹配的多协议usb设备,如图7所示;包括:

本实施例中,应用安装在设备上;应用包括:通讯应用;

报告协议类型模块01、第一接收模块02、第一判断模块03、第一获取模块04、第一选择应用模块05、第一绑定模块06、第一返回模块07、第一设置模块08、第二获取模块09、第一解绑模块10、第二设置模块11、第三获取模块12、第一发送模块13、第二接收模块14和第一封装模块15;

报告协议类型模块01,用于当设备插入到上位机后,向上位机报告设备的设备协议类型中的一种或者多种;

第一接收模块02,用于通过与已上报的设备协议类型对应的通道等待接收来自上位机的指令;

第一判断模块03,用于当第一接收模块02通过当前协议通道接收到来自上位机的指令后,判断通过当前协议通道接收到的指令的类型;

第一获取模块04,用于当第一判断模块03判断出通过当前协议通道接收到的指令为绑定协议指令时,从绑定协议指令中获取协议标识和应用标识;

第一选择应用模块05,用于选择与第一获取模块04获取到的应用标识对应的通讯应用;

第一绑定模块06,用于当第一选择应用模块05选择与第一获取模块04获取到的应用标识对应的通讯应用后,将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定;

第一返回模块07,用于通过当前协议通道向上位机返回绑定成功应答;通过当前协议通道向上位机返回解绑成功应答;通过当前协议通道将第一封装模块15得到的usb通讯应答返回给上位机;

第一设置模块08,用于当第一绑定模块06将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定后,根据已绑定通讯应用的设备协议类型设置设备的设备协议类型;

第二获取模块09,用于当第一判断模块03判断出通过当前协议通道接收到的指令为解绑协议指令时,从解绑协议指令中获取协议标识和应用标识;

第一解绑模块10,用于将与第二获取模块09获取到的协议标识对应的设备协议类型和与第二获取模块09获取到的应用标识对应的通讯应用进行解绑;

第二设置模块11,用于当第一解绑模块10将与第二获取模块09获取到的协议标识对应的设备协议类型和与第二获取模块09获取到的应用标识对应的通讯应用进行解绑后,根据默认设备协议类型和已绑定通讯应用的设备协议类型设置设备的设备协议类型;

第三获取模块12,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb通讯指令时,从usb通讯指令得到通讯指令;

第一发送模块13,用于将第三获取模块12获取到的通讯指令发送给与当前协议通道对应的设备协议类型绑定的通讯应用;

第二接收模块14,用于接收与当前协议通道对应的设备协议类型绑定的通讯应用返回的通讯应答;

第一封装模块15,用于根据与当前协议通道对应的设备协议类型封装第二接收模块14接收到的通讯应答得到usb通讯应答。

本实施例中,设备还可以包括:复位模块;

复位模块,用于当第一设置模块08设置据已绑定通讯应用的设备协议类型设置设备的设备协议类型后,复位设备;当第二设置模块11根据默认设备协议类型和已绑定通讯应用的设备协议类型设置设备的设备协议类型,复位设备;

报告协议类型模块01,还用于当复位模块复位设备后,向上位机报告设备的设备协议类型。

本实施例中,设备中还可以包括:第二判断模块和第一报错模块;

第二判断模块,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb通讯指令后,判断与当前协议通道对应的设备协议类型是否已绑定通讯应用;

第三获取模块12,具体用于当第二判断模块判断为是后,从usb通讯指令得到通讯指令;

第一报错模块,用于当第二判断模块判断为否后,通过当前协议通道向上位机报错。

本实施例中,设备还可以包括:第四获取模块、第三判断模块、第二报错模块、第五获取模块、第二发送模块、第三接收模块和第二封装模块;

第四获取模块,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb选择应用指令时,从usb选择应用指令中获取应用标识;

第三判断模块,用于判断与第四获取模块获取到的应用标识对应的通讯应用是否已与当前设备协议通道对应的设备协议类型绑定;

第二报错模块,用于当第三判断模块判断为否后,通过当前协议通道向上位机报错;

第五获取模块,用于当第三判断模块判断为是后,从usb选择应用指令中得到选择应用指令;

第二发送模块,用于将第五获取模块获取到的选择应用指令发送给与usb选择应用指令中的应用标识对应的通讯应用;

第三接收模块,用于接收选择应用应答;

第二封装模块,用于根据与当前协议通道对应的设备协议类型封装第三接收模块接收到的选择应用应答得到usb选择应用应答;

第一返回模块07,还用于将usb选择应用应答返回给上位机。

进一步地,本实施例中,应用还可以包括:管理应用;相应地,设备还可以包括:第十判断模块、第十一判断模块、第四报错模块、第十获取模块、第十二判断模块和第十一获取模块;

第十判断模块,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb通讯指令后,判断与当前协议通道对应的设备协议类型是否已绑定通讯应用;

第三获取模块12,具体用于当第十判断模块判断为是后,从usb通讯指令得到通讯指令;

第十一判断模块,用于当第十判断模块判断为否后,判断是否已选择管理应用;

第十获取模块,用于当第十一判断模块判断为是后,从usb通讯指令得到通讯指令,将通讯指令发送给被选择的管理应用;接收管理应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答;

第四报错模块,用于当第十一判断模块判断为否后,通过当前协议通道向上位机报错;第十二判断模块,用于判断第四获取模块获取到的应用标识的类型;

第十一获取模块,用于当第十二判断模块判断出第四获取模块获取到的应用标识为与管理应用对应的应用标识时,从usb选择应用指令中得到选择应用指令,将选择应用指令发送给与usb选择应用指令中的应用标识对应的管理应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型封装选择应用应答得到usb选择应用应答;

第三判断模块,具体用于当第十二判断模块判断出第四获取模块获取到的应用标识为与通讯应用对应的应用标识时,判断与应用标识对应的通讯应用是否已与当前设备协议通道对应的设备协议类型绑定;

第一返回模块07,还用于通过当前协议通道将第十一获取模块获取的usb选择应用应答返回给上位机;通过当前协议通道将所述第十获取模块获取的usb通讯应答返回给上位机。

本实施例中,报告协议类型模块01,具体用于根据自身的设备类型参数获取设备协议类型,根据获取到的设备协议类型向上位机报告自身的设备协议类型中的一种或多种;

第一设置模块08,具体用于当第一绑定模块06将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定后,根据已绑定通讯应用的设备协议类型更新自身的设备类型参数;

第二设置模块11,具体用于当第一解绑模块10将与第二获取模块09获取到的协议标识对应的设备协议类型和与第二获取模块09获取到的应用标识对应的通讯应用进行解绑后,根据默认设备协议类型和已绑定通讯应用的设备协议类型更新自身的设备类型参数。

本实施例中,设备中还可以包括:第四判断模块、第六获取模块、第七获取模块、第五判断模块、第三报错模块、第八获取模块、第六判断模块、第七判断模块和第九获取模块;

第四判断模块,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb选择应用指令时,判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配;

第六获取模块,用于当第四判断模块判断为是后,从usb选择应用指令中获取应用标识和选择应用指令,将选择应用指令发送给与usb选择应用指令中的应用标识对应的通讯应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型封装选择应用应答得到usb选择应用应答;

第七获取模块,用于当第四判断模块判断为否后,usb选择应用指令中获取应用标识;

第五判断模块,用于判断与第七获取模块获取到的应用标识对应的通讯应用是否已与当前设备协议通道对应的设备协议类型绑定;

第八获取模块,用于当第五判断模块判断为是后,从usb选择应用指令中得到选择应用指令,将选择应用指令发送给与usb选择应用指令中的应用标识对应的通讯应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型封装选择应用应答得到usb选择应用应答;

第三报错模块,用于当第五判断模块判断为否后,通过当前协议通道向上位机报错;当第七判断模块判断为否后,通过当前协议通道向上位机报错;

第六判断模块,用于当第一判断模块03判断出通过当前协议通道接收到的指令为usb通讯指令后,判断与当前协议通道对应的设备协议类型是否已绑定通讯应用;

第三获取模块12,具体用于当第六判断模块判断为是后,从usb通讯指令得到通讯指令;

第七判断模块,用于当第六判断模块判断为否后,判断与当前协议通道对应的设备协议类型是否与默认设备协议类型匹配;

第九获取模块,用于当第七判断模块判断为是后,从usb通讯指令得到通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答;

第一返回模块07,还用于通过当前协议通道将第六获取模块得到的usb选择应用应答、第八获取模块得到的usb选择应用应答以及第九获取模块得到的usb通讯应答返回给上位机。

本实施例中,第一绑定模块06,具体用于将与第一获取模块04获取到的协议标识对应的绑定标识置位;并将第一获取模块04获取到的应用标识与第一获取模块04获取到的协议标识对应保存;

第一解绑模块10,具体用于将与第二获取模块09获取到的协议标识对应的绑定标识复位;并删除与第二获取模块09获取到的协议标识对应保存的应用标识。

本实施例中,第一选择应用模块05具体包括:第一组织单元、第一发送单元、第一接收单元、第一判断单元和第一报错单元;

第一组织单元,用于组织包括第一获取模块04获取到的应用标识的选择应用指令;

第一发送单元,用于将第一组织单元组织的选择应用指令发送给与第一获取模块04获取到的应用标识的对应的通讯应用;

第一接收单元,用于接收选择应用应答;

第一判断单元,用于根据第一接收单元接收到的选择应用应答判断选择应用是否成功;

第一绑定模块06,具体用于当第一判断单元判断为是后,将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定;

第一报错单元,用于当第一判断单元判断为否后,通过当前协议通道向上位机报错。

本实施例中,设备还可以包括:第八判断模块;

第八判断模块,用于当第一绑定模块06将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定后,判断当前已绑定通讯应用的设备协议类型和当前已上报设备协议类型是否匹配;

第一设置模块08,具体用于当第八判断模块判断为否后,根据已绑定通讯应用的设备协议类型设置设备的设备协议类型。

本实施例中,第一设置模块08,具体用于:当第一绑定模块06将与第一获取模块04获取到的协议标识对应的设备协议类型和与第一获取模块04获取到的应用标识对应的通讯应用进行绑定后,根据当前已绑定通讯应用的设备协议类型设置自身的设备协议类型或者设备根据所有已绑定通讯应用的设备协议类型设置自身的设备协议类型。

本实施例中,第二设置模块11具体包括:第二判断单元和第一设置单元;

第二判断单元,用于当第一解绑模块10将与第二获取模块09获取到的协议标识对应的设备协议类型和与第二获取模块09获取到的应用标识对应的通讯应用进行解绑后,判断是否存在已绑定通讯应用的设备协议类型;

第一设置单元,用于当第二判断单元判断为是后,根据已绑定通讯应用的设备协议类型设置自身的设备协议类型;当第二判断单元判断为否后,将自身的设备协议类型设置为默认设备协议类型。

进一步地,第一设置单元,具体用于当第二判断单元判断为是后,将自身的设备协议类型设置为已绑定通讯应用的设备协议类型中的一个或者多个;当第二判断单元判断为否后,将自身的设备协议类型设置为默认设备协议类型。

本实施例中,设备还可以包括:第十三判断模块、第十四判断模块和第五报错模块;

第十三判断模块,用于当第一获取模块04从绑定协议指令中获取协议标识和应用标识之后,判断判断与第一获取模块04获取到的协议标识对应的设备协议类型是否已绑定通讯应用;

第一选择应用模块05,具体用于当第十三判断模块判断为否后,选择与第一获取模块04获取到的应用标识对应的通讯应用;

第十四判断模块,用于当第二获取模块09从解绑协议指令中获取协议标识和应用标识后,判断与第二获取模块09获取到的协议标识对应的设备协议类型是否已绑定通讯应用;

第一解绑模块10,具体用于当第十四判断模块判断为是后,将与第二获取模块09获取到的协议标识对应的设备协议类型和与第二获取模块09获取到的应用标识对应的通讯应用进行解绑;

第五报错模块,用于当第十三判断模块判断为是后,通过当前协议通道向上位机报错;当第十四判断模块判断为否后,通过当前协议通道向上位机报错。

本实施例中,设备可以包括具体包括第一芯片和第二芯片;通讯应用安装在第二芯片上;

第一芯片包括:报告协议类型模块01、第一接收模块02、第一判断模块03、第一获取模块04、第一选择应用模块05、第一绑定模块06、第一返回模块07、第一设置模块08、第二获取模块09、第一解绑模块10、第二设置模块11、第三获取模块12、第一发送模块13、第二接收模块14和第一封装模块15;

第二芯片包括:第四接收模块、第十四判断模块、第十五判断模块、第一组织模块、第三发送模块、第三设置模块、第一检测模块、第四设置模块和第一控制模块;

第四接收模块,用于接收来自第一芯片的指令;

第十四判断模块,用于判断第四接收模块接收到的指令的类型;

第十五判断模块,用于当第十四判断模块判断出指令的类型为通讯指令后,根据通讯指令判断是否需要获取用户按键信息;

第一组织模块,用于当第十五判断模块判断为否后,组织包括第一返回码的通讯应答;当第一检测模块检测为是后,组织包括第一返回码的通讯应答;

第三发送模块,用于将第一组织模块组织的通讯应答通过返回给第一芯片;以及当第一检测模块检测为否后,将包括第二返回码的通讯应答返回给第一芯片;

第三设置模块,用于当第十五判断模块判断为是后,将第二芯片的按键io引脚设置为输入;当第一检测模块检测为是后,将第二芯片的按键io引脚设置为输出;

第一检测模块,用于检测第二芯片的按键io引脚的电平是否为低;

第一控制模块,用于当第一检测模块检测为是后,控制第二芯片向第一芯片的按键io引脚输出低电平;

第一封装模块15,具体包括:第三判断单元、第一检测单元、第一封装单元、第二设置单元、第四判断单元、第一复位单元、第一拉高单元、第二检测单元和按键检测单元;

第三判断单元,用于判断接收到的通讯应答的类型;

第一检测单元,用于当第三判断单元判断出接收到的通讯应答的类型为包括第一返回码的通讯应答时,检测按键检测标识是否被置位;

第一封装单元,用于当第一检测单元检测为否后,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答;当第四判断单元判断为是后,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,当第三判断单元判断出通讯指令为包括第二返回码的通讯应答时,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答;

第二设置单元,用于当第一检测单元检测为是后,将第一芯片的按键io引脚设置为输入;

第四判断单元,用于当第二设置单元将第一芯片的按键io引脚设置为输入后,判断自身的按键io引脚的电平是否为低;以及当自身判断为否后,判断自身的按键io引脚的电平是否为低;

第一复位单元,用于当第四判断单元判断为是后,复位按键检测标识,关闭第一定时器,关闭按键检测流程;

第一拉高单元,用于当第四判断单元判断为是后,拉高第一芯片的按键io引脚电平;

第二检测单元,用于当第三判断单元判断出接收到的通讯应答的类型为包括第二返回码的通讯应答时,判断按键检测标识是否被置位;

按键检测单元,用于当第二检测单元检测为否后,置位按键检测标识,开启第一定时器,开启按键检测流程;在第一定时器规定的第一预设时间内等待获取用户按键信息,当在第一预设时间内获取到用户按键信息后,向第二芯片的按键io引脚输出低电平;当在第一预设时间内没有获取到用户按键信息后,复位按键检测标识,关闭第一定时器,关闭按键检测流程。

本实施例中,提供了一种设备协议类型与应用动态匹配的多协议usb设备,本方法提供的设备支持多种设备协议类型并且支持多个应用,各个协议和应用之间可以动态匹配,增强了设备的应用性,并且用户体验好。

实施例6

本实施例提供了一种设备协议类型与应用动态匹配的多协议usb设备,如图8所示;

本实施例中,应用安装在设备上;应用包括:通讯应用;设备包括:报告协议类型模块21、第一接收模块22、第一判断模块23、第一设置模块24、第一返回模块25、第一获取模块26和第二获取模块27;

报告协议类型模块21,用于当设备插入到上位机后,向上位机报告设备的设备协议类型;

第一接收模块22,用于通过与已上报的设备协议类型对应的通道接收来自上位机的指令;

第一判断模块23,用于当第一接收模块22接收到指令后,将接收到指令的通道作为当前协议通道,判断通过当前协议通道接收到的指令的类型;

第一设置模块24,用于当第一判断模块23判断出通过当前协议通道接收到的指令为协议切换指令时,根据协议切换指令中的协议标识设置自身的设备协议类型;

第一返回模块25,用于根据与当前协议通道对应的设备协议类型组织协议切换应答,通过当前协议通道向上位机返回协议切换应答;通过当前协议通道将usb通讯应答返回给上位机;以及通过当前协议通道将usb选择应用应答返回给上位机;

第一获取模块26,用于当第一判断模块23判断出通过当前协议通道接收到的指令为usb通讯指令时,从usb通讯指令中得到通讯指令,将通讯指令发送给当前被选择的应用;接收该应用返回的通讯应答;根据与当前协议通道对应的设备协议类型封装通讯应答得到usb通讯应答;

第二获取模块27,用于当第一判断模块23判断出通过当前协议通道接收到的指令为usb选择应用指令时,从usb选择应用指令中得到选择应用指令,将选择应用指令发送给与选择应用指令中的应用标识对应的应用;接收选择应用应答;根据与当前协议通道对应的设备协议类型组织选择应用应答得到usb选择应用应答。

本实施例中,设备还可以包括:复位模块;

复位模块,用于当第一返回模块25通过当前协议通道向上位机返回协议切换应答后,复位设备;

报告协议类型模块21,还用于当复位模块复位设备后,向上位机报告设备的设备协议类型。

本实施例中,报告协议类型模块21,具体用于根据自身的设备类型参数获取设备协议类型,根据获取到的设备协议类型向上位机报告自身的设备协议类型;

第一设置模块24,具体用于当第一判断模块23判断出指令为协议切换指令时,根据协议转换指令中的协议标识更新设备类型参数。

本实施例中,设备具体包括第一芯片和第二芯片;通讯应用安装在第二芯片上;

第一芯片包括:报告协议类型模块21、第一接收模块22、第一判断模块23、第一设置模块24、第一返回模块25、第一获取模块26和第二获取模块27;

第二芯片包括:第二接收模块、第二判断模块、第三判断模块、第一组织模块、第一发送模块、第二设置模块、第一检测模块、第三设置模块和第一控制模块;

第二接收模块,用于接收来自第一芯片的指令;

第二判断模块,用于判断第二接收模块接收到的指令的类型;

第三判断模块,用于当第二判断模块判断出指令的类型为通讯指令后,根据通讯指令判断是否需要获取用户按键信息;

第一组织模块,用于当第三判断模块判断为否后,组织包括第一返回码的通讯应答;当第一检测模块检测为是后,组织包括第一返回码的通讯应答;

第一发送模块,用于将第一组织模块组织的通讯应答通过返回给第一芯片;以及当第一检测模块检测为否后,将包括第二返回码的通讯应答返回给第一芯片;

第二设置模块,用于当第三判断模块判断为是后,将第二芯片的按键io引脚设置为输入;当第一检测模块检测为是后,将第二芯片的按键io引脚设置为输出;

第一检测模块,用于检测第二芯片的按键io引脚的电平是否为低;

第一控制模块,用于当第一检测模块检测为是后,控制第二芯片向第一芯片的按键io引脚输出低电平;

第一获取模块26,具体包括:第一获取单元、第一发送单元、第一接收单元和第一封装单元;

第一获取单元,当第一判断模块23判断出指令为usb通讯指令时,从usb通讯指令中得到通讯指令;

第一发送单元,用于将通讯指令发送给当前被选择的应用;

第一接收单元,用于接收当前被选择的应用返回的通讯应答;

第一封装单元,具体包括:第一判断子单元、第一检测子单元、第一封装子单元、第一设置子单元、第二判断子单元、第一复位子单元、第一拉高子单元、第二检测子单元和按键检测子单元;

第一判断子单元,用于判断接收到的通讯应答的类型;

第一检测子单元,用于当第一判断子单元判断出接收到的通讯应答的类型为包括第一返回码的通讯应答时,检测按键检测标识是否被置位;

第一封装子单元,用于当第一检测子单元检测为否后,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答;当第二判断子单元判断为是后,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答,当第一判断子单元判断出通讯指令为包括第二返回码的通讯应答时,根据与当前协议通道对应的设备协议类型和通讯应答得到usb通讯应答;

第一设置子单元,用于当第一检测子单元检测为是后,将第一芯片的按键io引脚设置为输入;

第二判断子单元,用于当第一设置子单元将第一芯片的按键io引脚设置为输入后,判断自身的按键io引脚的电平是否为低;以及当自身判断为否后,判断自身的按键io引脚的电平是否为低;

第一复位子单元,用于当第二判断子单元判断为是后,复位按键检测标识,关闭第一定时器,关闭按键检测流程;

第一拉高子单元,用于当第二判断子单元判断为是后,拉高第一芯片的按键io引脚电平;

第二检测子单元,用于当第一判断子单元判断出接收到的通讯应答的类型为包括第二返回码的通讯应答时,判断按键检测标识是否被置位;

按键检测子单元,用于当第二检测子单元检测为否后,置位按键检测标识,开启第一定时器,开启按键检测流程;在第一定时器规定的第一预设时间内等待获取用户按键信息,当在第一预设时间内获取到用户按键信息后,向第二芯片的按键io引脚输出低电平;当在第一预设时间内没有获取到用户按键信息后,复位按键检测标识,关闭第一定时器,关闭按键检测流程。

本实施例中,提供了一种设备协议类型与应用动态匹配的多协议usb设备,本方法提供的设备支持多种设备协议类型并且支持多个应用,各个协议和应用之间可以动态匹配,增强了设备的应用性,并且用户体验好。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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