CN103631747B - 一种通讯模式的识别方法 - Google Patents

一种通讯模式的识别方法 Download PDF

Info

Publication number
CN103631747B
CN103631747B CN201310585970.8A CN201310585970A CN103631747B CN 103631747 B CN103631747 B CN 103631747B CN 201310585970 A CN201310585970 A CN 201310585970A CN 103631747 B CN103631747 B CN 103631747B
Authority
CN
China
Prior art keywords
buffer area
main frame
data
return
instruction
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.)
Active
Application number
CN201310585970.8A
Other languages
English (en)
Other versions
CN103631747A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201310585970.8A priority Critical patent/CN103631747B/zh
Publication of CN103631747A publication Critical patent/CN103631747A/zh
Priority to US14/913,888 priority patent/US10169276B2/en
Priority to PCT/CN2014/084968 priority patent/WO2015074448A1/zh
Application granted granted Critical
Publication of CN103631747B publication Critical patent/CN103631747B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]

Abstract

本发明公开一种通讯模式的识别方法,设备在时钟中断处理中将超时标识置位;当设备检测到其他中断信号时,给主机返回设备支持的USB接口通讯协议,并设置通讯模式;识别过程包括:检测通讯模式的类型,如为USB接口通讯,则关闭定时器,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,如未设置通讯模式则当超时标识置位时,设置通讯模式为串口通讯,关闭所述定时器,将超时标识复位,执行步骤S6,如为串口通讯,则关闭所述定时器,执行步骤S6;步骤S6:当接收到指令时根据串口协议进行相应操作。本发明的识别方法适应于同时具有串口和USB接口的设备中,使设备具有较好的兼容性。

Description

一种通讯模式的识别方法
技术领域
本发明涉及通讯领域,尤其涉及一种通讯模式的识别方法。
背景技术
随着USB接口的广泛使用,各个厂商生产了品种繁多的USB设备,使USB接口成为现在电子产品的必备接口之一。由于USB接口的物理机械特性设计很成功,所以许多厂商将其链路层用于非USB协议的通讯传输,也就是用USB接口传输非USB协议的数据流。由于串口通讯设计简单,使用方便,将USB链路层用于传输串口数据的产品也层出不穷。但是,如何使一个设备既能利用USB接口通讯又能利用串口通讯,如何知道当前的通讯模式是USB模式还是串口模式呢?是现有技术亟待解决的问题。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种通讯模式的识别方法。
本发明提供的技术方案如下:
一种通讯模式的识别方法,包括:
步骤S1:设备上电,进行初始化,打开中断和定时器,所述定时器开始计时;
当所述定时器计时到达预设值时,进入时钟中断处理,时钟中断处理包括:关闭所述定时器,将超时标识置位,打开所述定时器,退出时钟中断;
当检测到其他中断信号时,执行步骤B1-步骤B8;
步骤B1:判断中断类型,如为USB中断则执行步骤B2,如为串口中断则执行步骤B6;
步骤B2:关闭USB中断;
步骤B3:判断是否已设置通讯模式,是则执行步骤B5,否则执行步骤B4;
步骤B4:设置通讯模式为USB接口通讯,执行步骤B5;
步骤B5:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,枚举完成后退出USB中断;
步骤B6:关闭串口中断;
步骤B7:判断是否已设置通讯模式,是则打开串口中断,退出串口中断,否则执行步骤B8;
步骤B8:根据接收到的第一个数据包设置通讯模式为串口通讯,打开串口中断,退出串口中断;
步骤S2:检测通讯模式的类型,如为USB接口通讯,则关闭所述定时器,执行步骤S3,如为串口通讯,则关闭所述定时器,执行步骤S6,如未设置通讯模式则执行步骤S4;
步骤S3:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤S3;
步骤S4:判断所示超时标识是否置位,是则执行步骤S5,否则返回步骤S2;
步骤S5:设置通讯模式为串口通讯,关闭所述定时器,将超时标识复位,执行步骤S6;
步骤S6:等待主机下发指令,当接收到指令时根据串口协议进行相应操作,操作完成后返回步骤S6。
进一步地,上述方法还包括:所述设备预先定义设备支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议;
所述步骤B5中的给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
进一步地,所述IO通讯标识的值为第一预设值,所述步骤S3包括:
步骤S3-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤S3-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤S3-13,如为第二预设字符则执行步骤S3-14;如为其他则执行步骤S3-15;
步骤S3-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤S3-11;
步骤S3-14:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤S3-11;
步骤S3-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤S3-11。
进一步地,所述IO通讯标识的值为第二预设值,所述步骤S3包括:
步骤S3-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤S3-23,如为接收状态则执行步骤S3-22;
步骤S3-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-25,如为其他则返回步骤S3-21;
步骤S3-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-25,如为第二字符串则执行步骤S3-24,如为其他则返回步骤S3-21;
步骤S3-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤S3-21;
步骤S3-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤S3-26,否则执行步骤S3-27;
步骤S3-26:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤S3-21;
步骤S3-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤S3-21。
进一步地,所述IO通讯标识的值为第三预设值,所述步骤S3包括:
步骤S3-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤S3-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤S3-33,否则返回步骤S3-31;
步骤S3-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤S3-34,否则执行步骤S3-35;
步骤S3-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤S3-31;
步骤S3-35:判断数据传输方向,如是发送则执行步骤S3-36,如是接收则执行步骤S3-37;
步骤S3-36:将第二缓存区中的响应数据返回给主机,返回步骤S3-31;
步骤S3-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤S3-38,否则执行步骤S3-39;
步骤S3-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤S3-31;
步骤S3-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤S3-31。
进一步地,上述方法还包括:所述设备预先定义设备支持的USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤B5中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
进一步地,所述步骤S3包括:
步骤S3-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤S3-42,如为第二预设值则执行步骤S3-47,如为第三预设值则执行步骤S3-54;
步骤S3-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤S3-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤S3-44,如为第二预设字符则执行步骤S3-45;如为其他则执行步骤S3-46;
步骤S3-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤S3-42;
步骤S3-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤S3-42;
步骤S3-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤S3-42;
步骤S3-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤S3-49,如为接收状态则执行步骤S3-48;
步骤S3-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-51,如为其他则返回步骤S3-47;
步骤S3-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-51,如为第二字符串则执行步骤S3-50,如为其他则返回步骤S3-47;
步骤S3-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤S3-47;
步骤S3-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤S3-52,否则执行步骤S3-53;
步骤S3-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤S3-47;
步骤S3-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤S3-47;
步骤S3-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤S3-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤S3-56,否则返回步骤S3-54;
步骤S3-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤S3-57,否则执行步骤S3-58;
步骤S3-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤S3-54;
步骤S3-58:判断数据传输方向,如是发送则执行步骤S3-59,如是接收则执行步骤S3-60;
步骤S3-59:将第二缓存区中的响应数据返回给主机,返回步骤S3-54;
步骤S3-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤S3-61,否则执行步骤S3-62;
步骤S3-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤S3-54;
步骤S3-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤S3-54。
进一步地,所述步骤S6包括:
步骤S6-1:当通过串口接收到指令时将其存储到第一缓存区中,根据串口协议对所述第一缓存区中的指令进行解析并判断解析结果中第一字节上的数据是否为第一预设数据,是则执行步骤S6-2,否则返回步骤S6-1;
步骤S6-2:判断所述解析结果中第三字节上的数据是否为第二预设数据,是则执行步骤S6-3,否则执行步骤S6-4;
步骤S6-3:对所述解析结果进行处理并将处理结果返回给主机,返回步骤S6-1;
步骤S6-4:检测所述解析结果中第四字节上的数据,如为第三预设数据则执行步骤S6-5,如为第四预设数据则执行步骤S6-6,如为其他则返回步骤S6-1;
步骤S6-5:输出电量不足信息,进入死机状态,结束;
步骤S6-6:设置响应数据,并将其存储到第二缓存区中,返回步骤S6-1;所述响应数据包括设备与主机的通讯波特率和传输数据的长度。
进一步地,所述初始化包括:将通讯标识的值设为0;
所述检测通讯模式的类型,具体为:检查所述通讯标识的值,若所述通讯标识的值为1则当前通讯模式为USB接口通讯,若所述通讯标识的值为2则当前通讯模式为串口通讯,若所述通讯标识的值为0则未设置通讯模式;
所述设置通讯模式为串口通讯,具体为:将所述通讯标识的值设为2;
所述设置通讯模式为USB接口通讯,具体为:将所述通讯标识的值设为1。
一种通讯模式的识别方法,包括:
步骤P1:设备上电,进行初始化,打开中断;
当检测到中断信号时,进行中断处理,所述中断处理包括:
步骤A1:判断是否为USB中断,是则执行步骤A2,否则退出中断;
步骤A2:关闭USB中断;
步骤A3:判断是否已设置通讯模式,是则执行步骤A5,否则执行步骤A4;
步骤A4:将通讯模式设置为USB接口通讯,执行步骤A5;
步骤A5:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,枚举完成后退出USB中断;
步骤P2:判断通讯模式是否为USB接口通讯,是则执行步骤P13,否则执行步骤P3;
步骤P3:判断是否通过串口接收到数据,是则执行步骤P4,否则返回步骤P2;
步骤P4:将接收到的数据存储到第一缓存区中,判断存储在所述第一缓存区中的第一字节数据是否为第一预设值,是则执行步骤P6,否则执行步骤P5;
步骤P5:判断通讯模式是否为USB接口通讯,是则执行步骤P13,否则返回步骤P4;
步骤P6:当通过串口接收到主机下发的全部数据后将其存储到所述第一缓存区中,对所述第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤P7,否则返回步骤P3;
步骤P7:设置串口通讯波特率,设置通讯模式为第一串口通讯;
步骤P8:判断通讯模式是否为第一串口通讯,是则执行步骤P10,否则执行步骤P9;
步骤P9:设置通讯模式为第二串口通讯,执行步骤P12;
步骤P10:判断是否通过串口接收到数据,是则执行步骤P11,否则等待接收数据,返回步骤P10;
步骤P11:当接收到主机下发的全部数据后将其存储到所述第一缓存区中,对所述第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤P12,否则返回步骤P10;
步骤P12:根据串口协议对所述第一缓存区中的数据进行处理;
步骤P13:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤P13。
进一步地,所述初始化包括:将通讯标识的值设为0;
所述判断通讯模式是否为USB接口通讯,具体为:判断所述通讯标识的值是否为1,是则为USB接口通讯,否则不为USB接口通讯;
所述设置通讯模式为第一串口通讯,具体为:将所述通讯标识的值设为4;
所述判断通讯模式是否为第一串口通讯,具体为:判断所述通讯标识的值是否为4,是则为第一串口通讯,否则不为第一串口通讯;
所述设置通讯模式为第二串口通讯,具体为:将所述通讯标识的值设为2。
进一步地,所述步骤P12具体包括:
步骤P12-1:从第一缓存区中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤P12-2,否则给主机返回错误信息,返回步骤P9;
步骤P12-2:检测第四字节上低四位的数据,若为第一设定值则执行步骤P12-3,若为第二设定值则执行步骤P12-4,若为第三设定值则执行步骤P12-5,若为其他则给主机返回错误信息,返回步骤P9;
步骤P12-3:给主机返回包含所述串口通讯波特率的握手信息,返回步骤P9;
步骤P12-4:将第二缓存区中的响应数据返回给主机,返回步骤P9;
步骤P12-5:从第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度,判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤P12-6,否则给主机返回接收数据错误信息,返回步骤P9;
步骤P12-6:根据串口协议对APDU数据进行处理并将处理结果存储到所述第二缓存区中,返回步骤P9。
进一步地,上述方法还包括:所述设备预先定义设备支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议;
所述步骤A5中给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
进一步地,所述IO通讯标识的值为第一预设值,所述步骤P13包括:
步骤P13-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤P13-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤P13-13,如为第二预设字符则执行步骤P13-14;如为其他则执行步骤P13-15;
步骤P13-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤P13-11;
步骤P13-14:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤P13-11;
步骤P13-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤P13-11。
进一步地,所述IO通讯标识的值为第二预设值,所述步骤P13包括:
步骤P13-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤P13-23,如为接收状态则执行步骤P13-22;
步骤P13-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-25,如为其他则返回步骤P13-21;
步骤P13-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-25,如为第二字符串则执行步骤P13-24,如为其他则返回步骤P13-21;
步骤P13-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤P13-21;
步骤P13-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤P13-26,否则执行步骤P13-27;
步骤P13-26:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤P13-21;
步骤P13-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤P13-21。
进一步地,所述IO通讯标识的值为第三预设值,所述步骤P13包括:
步骤P13-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤P13-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤P13-33,否则返回步骤P13-31;
步骤P13-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤P13-34,否则执行步骤P13-35;
步骤P13-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤P13-31;
步骤P13-35:判断数据传输方向,如是发送则执行步骤P13-36,如是接收则执行步骤P13-37;
步骤P13-36:将第二缓存区中的响应数据返回给主机,返回步骤P13-31;
步骤P13-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤P13-38,否则执行步骤P13-39;
步骤P13-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤P13-31;
步骤P13-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤P13-31。
进一步地,上述方法还包括:所述设备预先定义的设备支持USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤B5中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
进一步地,所述步骤P13包括:
步骤P13-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤P13-42,如为第二预设值则执行步骤P13-47,如为第三预设值则执行步骤P13-54;
步骤P13-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤P13-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤P13-44,如为第二预设字符则执行步骤P13-45;如为其他则执行步骤P13-46;
步骤P13-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤P13-42;
步骤P13-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤P13-42;
步骤P13-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤P13-42;
步骤P13-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤P13-49,如为接收状态则执行步骤P13-48;
步骤P13-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-51,如为其他则返回步骤P13-47;
步骤P13-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-51,如为第二字符串则执行步骤P13-50,如为其他则返回步骤P13-47;
步骤P13-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤P13-47;
步骤P13-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤P13-52,否则执行步骤P13-53;
步骤P13-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤P13-47;
步骤P13-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤P13-47;
步骤P13-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤P13-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤P13-56,否则返回步骤P13-54;
步骤P13-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤P13-57,否则执行步骤P13-58;
步骤P13-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤P13-54;
步骤P13-58:判断数据传输方向,如是发送则执行步骤P13-59,如是接收则执行步骤P13-60;
步骤P13-59:将第二缓存区中的响应数据返回给主机,返回步骤P13-54;
步骤P13-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤P13-61,否则执行步骤P13-62;
步骤P13-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤P13-54;
步骤P13-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤P13-54。
一种通讯模式的识别方法,包括:
步骤L1:设备上电,进行初始化,打开中断;
步骤L2:判断是否触发串行中断,是则执行步骤L3,否则进入其他中断进行处理,退出中断后继续执行步骤L3;
步骤L3:判断通讯模式是否为USB接口通讯,是则执行步骤L4,否则执行步骤L5;
步骤L4:接收主机下发的指令,并根据设备支持的USB接口通讯协议对接收到的指令进行处理,处理完成后继续等待接收主机下发的指令,返回步骤L4;
步骤L5:判断通讯模式是否为第一串口通讯,是则执行步骤L6,否则执行步骤L7;
步骤L6:等待主机下发指令,当接收指令时根据串口协议进行相应操作,操作完成后返回步骤L6;
步骤L7:检测串口信号,等待主机下发握手数据包;
步骤L8:判断是否检测到串口信号,是则执行步骤L9,否则返回步骤L2;
步骤L9:接收主机下发的第一个字节数据并将其存储在第一缓存区中,判断第一字节数据是否为第一预设值,是则执行步骤L10,否则返回步骤L2;
步骤L10:当通过串口接收到主机下发的全部数据后将其存储到第一缓存区中,对第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤L11,否则返回步骤L2;
步骤L11:设置串口通讯波特率,设置通讯模式为第一串口通讯,返回步骤L2;
所述进入其他中断进行处理包括:
步骤D1:判断是否触发USB中断,是则执行步骤D2,否则退出中断;
步骤D2:关闭USB中断,判断是否通过端点0接收到Setup数据包,是则执行步骤D3,否则打开USB中断,执行步骤D4;
步骤D3:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,执行步骤D4;
步骤D4:设置通讯模式为USB接口通讯,退出USB中断。
进一步地,所述进行初始化包括:将通讯标识的值设为0;
所述判断通讯模式是否为USB接口通讯,具体为:判断所述通讯标识的值是否为1,是则为USB接口通讯,否则不为USB接口通讯;
所述设置通讯模式为第一串口通讯,具体为:将所述通讯标识的值设为4;
所述判断通讯模式是否为第一串口通讯,具体为:判断所述通讯标识的值是否为4,是则为第一串口通讯,否则不为第一串口通讯。
进一步地,所述步骤L6具体包括:
步骤L6-1:接收串口数据并将其存储到第一缓存区中;
步骤L6-2:从所述第一缓存区的串口数据中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤L6-3,否则清除通讯模式,给主机返回错误信息,返回步骤L2;
步骤L6-3:检测第四字节上低四位的数据,如为第一设定值则执行步骤L6-4,如为第二设定值则执行步骤L6-5,如为第三设定值则执行步骤L6-6;
步骤L6-4:给主机返回包含串口通讯波特率的握手信息,返回步骤L2;
步骤L6-5:将第二缓存区中的响应数据返回给主机,返回步骤L2;
步骤L6-6:从所述第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度;
步骤L6-7:判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤L6-8,否则给主机返回接收数据错误信息,返回步骤L2;
步骤L6-8:根据串口协议对APDU数据进行处理并将处理结果存储到所述第二缓存区中,返回步骤L2。
进一步地,上述方法还包括:所述设备预先定义设备支持支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议,所述步骤D3中的给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
进一步地,所述IO通讯标识的值为第一预设值,所述步骤L4包括:
步骤L4-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤L4-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤L4-13,如为第二预设字符则执行步骤L4-14;如为其他则执行步骤L4-15;
步骤L4-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤L4-11;
步骤L4-14:将解析结果中的ALDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤L4-11;
步骤L4-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤L4-11。
进一步地,所述IO通讯标识的值为第二预设值,所述步骤L4包括:
步骤L4-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤L4-23,如为接收状态则执行步骤L4-22;
步骤L4-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-25,如为其他则返回步骤L4-21;
步骤L4-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-25,如为第二字符串则执行步骤L4-24,如为其他则返回步骤L4-21;
步骤L4-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤L4-21;
步骤L4-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤L4-26,否则执行步骤L4-27;
步骤L4-26:设置包含复位参数的响应数据,并将其存储到所述第二缓存区中,将所述状态机的状态改为发送状态,返回步骤L4-21;
步骤L4-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤L4-21。
进一步地,所述IO通讯标识的值为第三预设值,所述步骤L4包括:
步骤L4-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤L4-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤L4-33,否则返回步骤L4-31;
步骤L4-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤L4-34,否则执行步骤L4-35;
步骤L4-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤L4-31;
步骤L4-35:判断数据传输方向,如是发送则执行步骤L4-36,如是接收则执行步骤L4-37;
步骤L4-36:将第二缓存区中的响应数据返回给主机,返回步骤L4-31;
步骤L4-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤L4-38,否则执行步骤L4-39;
步骤L4-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤L4-31;
步骤L4-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤L4-31。
进一步地,上述方法还包括:所述设备预先定义设备支持的USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤B5中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
进一步地,所述步骤L4包括:
步骤L4-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤L4-42,如为第二预设值则执行步骤L4-47,如为第三预设值则执行步骤L4-54;
步骤L4-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤L4-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤L4-44,如为第二预设字符则执行步骤L4-45;如为其他则执行步骤L4-46;
步骤L4-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤L4-42;
步骤L4-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤L4-42;
步骤L4-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤L4-42;
步骤L4-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤L4-49,如为接收状态则执行步骤L4-48;
步骤L4-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-51,如为其他则返回步骤L4-47;
步骤L4-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-51,如为第二字符串则执行步骤L4-50,如为其他则返回步骤L4-47;
步骤L4-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤L4-47;
步骤L4-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤L4-52,否则执行步骤L4-53;
步骤L4-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤L4-47;
步骤L4-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤L4-47;
步骤L4-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤L4-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤L4-56,否则返回步骤L4-54;
步骤L4-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤L4-57,否则执行步骤L4-58;
步骤L4-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤L4-54;
步骤L4-58:判断数据传输方向,如是发送则执行步骤L4-59,如是接收则执行步骤L4-60;
步骤L4-59:将第二缓存区中的响应数据返回给主机,返回步骤L4-54;
步骤L4-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤L4-61,否则执行步骤L4-62;
步骤L4-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤L4-54;
步骤L4-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤L4-54。
本发明与现有技术相比,具有以下优点:
本发明的方法即可在现有产品上通用,也适用于老版本的串口产品,可提高产品的整体兼容性、继承性,也避免了更新淘汰市场上大量老产品而产生的巨额开销,节省了大量人力、物力、财力成本。
附图说明
图1为本发明实施例一提供的一种通讯模式的识别方法流程图;
图2为本发明实施例一中设备支持CCID协议时步骤103的细化流程图;
图3为本发明实施例一中设备支持HID协议时步骤103的细化流程图;
图4为本发明实施例一中设备支持SCSI协议时步骤103的细化流程图;
图5为本发明实施例一中步骤106的细化流程图;
图6为本发明实施例一中接收到其他中断信号时进行处理的流程图;
图7为本发明实施例二提供的一种通讯模式的识别方法流程图;
图8为本发明实施例二中步骤612的细化流程图;
图9为本发明实施例二中接收到中断信号进行处理的流程图;
图10为本发明实施例三中提供的一种通讯模式的识别方法流程图;
图11为本发明实施例三中根据串口通讯协议对接收到的数据进行处理的实现流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种通讯模式的识别方法,如图1所示,包括:
步骤100:设备上电,进行初始化;
本实施例中,设备进行初始化包括:配置设备和时钟频率、配置设备IO工作模块、配置模块时钟使能、配置定时器工作模式、设置通讯标识复位、USB模块初始化、串口模块初始化、复位超时标识、设置状态机为发送状态;
步骤101:打开中断和定时器;
具体的,本实施例中的中断包括串口中断、USB中断、时钟中断;在本实施例中,打开定时器时定时器开始计时,经预设时长时触发进入时钟中断处理,优选的,预设时长为50ms;时钟中断处理包括:关闭定时器,将超时标识置位,打开定时器,退出时钟中断;
步骤102:检测通讯模式的类型,如为USB接口通讯,则关闭定时器,执行步骤103,如为串口通讯,则关闭定时器,执行步骤106,如未设置通讯模式则执行步骤104;
具体的,本实施例中,判断通讯标识的值,如为1则通讯模式为串口,如为2则通讯模式为USB接口,如为0则未设置通讯模式;
步骤103:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤103;
本实施例中的设备中预先定义该设备只支持一种通讯协议,具体通过IO通讯标识预先进行设置,在枚举过程中给主机返回设备支持的USB接口通讯协议,具体返回的是IO通讯标识的值,具体的,如IO通讯标识的值为第一预设值,优选的第一预设值为1,则表示设备支持的USB接口通讯协议为CCID协议,步骤103的实现过程如图2所示;
步骤103-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析第一缓存区中的指令;
步骤103-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤103-13,如为第二预设字符则执行步骤103-14;如为其他则执行步骤103-15;
在本实施例中,第一预设字符可以为0x61或0x62或0x63或0x6A或0x6C或0x6D;优选的,本实施例中的第一预设字符为0x61;第二预设字符具体为0x6F;
步骤103-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤103-11;
步骤103-14:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤103-11;
步骤103-15:组织消息错误响应并将其存储到第二缓存区,将消息错误响应返回给主机,返回步骤103-11。
本实施例中的设备预先定义该设备只支持一种通讯协议,具体通过IO通讯标识预先进行设置,在枚举过程中给主机返回设备支持的USB接口通讯协议,具体返回的IO通讯标识的值为第二预设值,优选的第二预设值为3,则表示设备支持的USB接口通讯协议为HID协议,步骤103的实现过如图3所示;
步骤103-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤103-23,如为接收状态则执行步骤103-22;
具体的,在本实施例中,步骤103-21中判断状态机标识,如为1则表示发送状态,如为2则表示接收状态;
步骤103-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤103-25,如为其他则返回步骤103-21;
具体的,在本实施例中,第一字符串为0x210x09;
步骤103-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤103-25,如为第二字符串则执行步骤103-24,如为其他则返回步骤103-21;
具体的,在本实施例中,第一字符串为0x210x09,第二字符串为0xA10x01;
步骤103-24:将第二缓存区中的响应数据返回给主机,将状态机的状态设为接收状态,返回步骤103-21;
步骤103-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤103-26,否则执行步骤103-27;
本实施例中,判断解析结果的前五个字节数据是否为预设数据,是则为热复位指令,否则不为热复位指令;本实施例中的预设数据具体为0x460x540x520x530x54;
步骤103-26:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤103-21;
本实施例中的复位参数包括等待时间、通讯速率等;将状态机的状态改为发送状态具体为:将状态机标识设为2;
步骤103-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤103-21;
该步骤中的将状态机的状态改为发送状态具体为:将状态机标识设为2。
本实施例中的设备中预先定义只支持一种USB接口通讯协议,在枚举过程中给主机返回设备支持的USB接口通讯协议,具体返回的IO通讯标识的值为第三预设值,优选的第三预设值为5,则表示设备支持的USB接口通讯协议为SCSI协议,步骤103的实现过如图4所示;
步骤103-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤103-32:根据解析结果判断接收到的该指令是否为合法SCSI指令,是则执行步骤103-33,否则返回步骤103-31;
具体的,本实施例中,判断解析结果的前四个字节数据是否为0x55534243,是则合法的,否则不合法;
步骤103-33:根据解析结果判断该指令是否为标准SCSI指令,是则执行步骤103-34,否则执行步骤103-35;
具体的,在本实施例中,通过判断解析结果中的第16字节上的数据是否大于0xFC,是则该指令是标准SCSI指令,否则该指令不是标准SCSI指令;
步骤103-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤103-31;
步骤103-35:判断数据传输方向,如是发送则执行步骤103-36,如是接收则执行步骤103-37;
步骤103-36:将第二缓存区中的响应数据返回给主机,返回步骤103-31;
步骤103-37:将解析结果存储到第一缓存区中,并根据解析结果判断该指令是否为热复位指令,是则执行步骤103-38,否则执行步骤103-39;
步骤103-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤103-31;
步骤103-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤103-31。
步骤104:判断超时标识是否置位,是则执行步骤105,否则返回步骤102;
具体的,在本实施例中,判断超时标识是否为true,是则置位,否则未置位;
步骤105:设置通讯模式为串口通讯,关闭定时器,将超时标识复位,执行步骤106;
步骤106:等待主机下发指令,当接收到指令时根据串口协议进行相应操作,操作完成后返回步骤106;
在本实施例中,步骤106的实现过程如图5所示,包括:
步骤106-0:当通过串口接收到指令时将其存储到第一缓存区中,根据串口协议对第一缓存区中的指令进行解析;
步骤106-1:判断解析结果中第一字节上的数据是否为第一预设数据,是则执行步骤106-2,否则返回步骤106-0;
具体的,本实施例中的第一预设数据为0xF5;
步骤106-2:判断解析结果中第三字节上的数据是否为第二预设数据,是则执行步骤106-3,否则执行步骤106-4;
本实施例中的第二预设数据为0x03;
步骤106-3:对解析结果进行处理并将处理结果返回给主机,返回步骤106-0;
步骤106-4:检测解析结果中第四字节上的数据,如为第三预设数据则执行步骤106-5,如为第四预设数据则执行步骤106-6,如为其他则返回步骤106-0;
具体的,本实施例中的第三预设数据为0x02,第四预设数据为0x01;
步骤106-5:输出电量不足信息,结束;
步骤106-6:设置响应数据,并将其存储到第二缓存区中,返回步骤106-0;
具体的,在本实施例中,该步骤中的响应数据包括设备与主机的通讯波特率和传输数据的长度。
在本实施例中,当在识别通讯模式过程中检测到其他中断信号时,则进行其他中断处理,其他中断处理完成后继续工作,其他中断处理过程如图6所示,包括:
步骤B1:判断中断类型,如为USB中断则执行步骤B2,如为串口中断则执行步骤B6;
具体的,在本实施例中,根据中断标志寄存器中的标志位判断中断类型,如标志位的值为1则为USB中断,如标志位的值为2则为串口中断;
步骤B2:关闭USB中断;
具体的,步骤B2为:将中断标志寄存器中的标志位的值设为0;
步骤B3:判断是否已设置通讯模式,是则执行步骤B5,否则执行步骤B4;
具体的,本实施例中判断通讯标识是否为0,是则执行步骤B4,否则执行步骤B5;
步骤B4:设置通讯模式为USB接口通讯,执行步骤B5;
具体的,本实施例中步骤B4为:将通讯标识置为2;
步骤B5:打开USB中断,进行USB枚举,枚举完成后退出USB中断;
在本实施例中,枚举过程具体为:给主机返回设备支持的USB接口通讯协议,优选的,返回的是IO通讯标识的值,如IO通讯标识的值为第一预设值则表示设备支持的USB接口通讯协议为CCID协议,即设备可以解析处理CCID协议的指令;如IO通讯标识的值为第二预设值则表示设备支持的USB接口通讯协议为HID协议,即设备可解析处理HID协议的指令;如IO通讯标识的值为第三预设值则表示设备支持的USB接口通讯协议为SCSI协议,即设备可解析处理SCSI协议的指令;优选的,第一预设值为1,第二预设值为3,第三预设值为5;
步骤B6:关闭串口中断;
具体的,步骤B6为:将中断标志寄存器中的标志位的值设为0;
步骤B7:判断是否已设置通讯模式,是则打开串口中断,退出中断,否则执行步骤B8;
具体的,本实施例中检测通讯标识,如为2则为USB接口通讯,如为1则为串口通讯,如为0则未设置通讯模式;
步骤B8:将通讯模式设置为串口通讯,打开串口中断,退出中断。
具体的,本实施例中,将通讯模式设置为串口通讯为:将通讯标识置为1。
本实施例的步骤106包括:当接收到设置通讯模式指令时设置通讯模式为串口通讯;对应的步骤B8替换为:扔掉第一个数据包,打开串口中断,退出串口中断。
本实施例中也可预先定义该设备支持多种USB接口通讯协议,如支持CCID协议、HID协议、SCSI协议中的其中两种协议或者三种协议,枚举过程中给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机,如IO通讯标识的值为第一预设值,表示所述设备支持CCID协议;如IO通讯标识的值为第二预设值,表示所述设备支持HID协议;如IO通讯标识的值为第三预设值,表示所述设备支持SCSI协议。
对应的,本实施例中的步骤103包括:
步骤103-41:检测IO通讯标识的值,如为第一预设值则根据CCID协议对收到的指令进行操作,如为第二预设值则根据HID协议对收到的指令进行操作,如为第三预设值则根据SCSI协议对收到的指令进行操作;
具体的,本实施例中根据CCID协议对收到的指令进行操作参见上述步骤103-11至步骤103-15;根据HID协议对收到的指令进行操作参见上述步骤103-21至步骤103-27;根据SCSI协议对收到的指令进行操作参见上述步骤103-31至步骤103-39。在此不再赘述根据各协议对接收到的指令进行操作的具体实现过程。
实施例二
本发明实施例二提供一种通讯模式的识别方法,如图7所示,包括:
步骤601:设备上电,进行初始化,打开中断;
本实施例中设备进行初始化包括:将通讯标识的值置为0,开启定时器;
具体的,本实施例中的打开中断包括:打开串口中断、USB中断、时钟中断;
步骤602:判断通讯模式是否为USB接口通讯,是则执行步骤613,否则执行步骤603;
具体的,本实施例中步骤602为:判断通讯标识的值是否为1,是则为USB接口通讯模式,否则不为USB接口通讯模式;
步骤603:判断是否通过串口接收到数据,是则执行步骤604,否则返回步骤602;
步骤604:将接收到的数据存储到第一缓存区中,判断存储在第一缓存区中的第一字节数据是否为第一预设值,是则执行步骤606,否则执行步骤605;
在本实施例中,第一预设值具体为0x0F;
步骤605:判断通讯模式是否为USB接口通讯,是则执行步骤613,否则返回步骤604;
步骤606:当通过串口接收到主机下发的全部数据后将其存储到第一缓存区中,对第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤607,否则返回步骤603;
在本实施例中,对缓存区中除第一字节数据和最后一个字节数据外的剩余数据进行计算,判断计算结果是否与最后一个字节数据相同,是则校验通过,否则校验未通过;
步骤607:设置串口通讯波特率,设置通讯模式为第一串口通讯;
在本实施例中,设置通讯模式为第一串口通讯具体为:将通讯标识的值设为4;在第一串口通讯模式下接收到的数据为握手命令;
步骤608:判断通讯模式是否为第一串口通讯,是则执行步骤610,否则执行步骤609;
本实施例中步骤608具体为:判断通讯标识的值是否为4,是则执行步骤610,否则执行步骤609;
步骤609:设置通讯模式为第二串口通讯,执行步骤612;
在本实施例中,步骤609具体为:将通讯标识的值设为2;
本实施例中,设备的通讯模式为第二串口通讯时标识当前可接收串口数据并根据串口协议进行处理;
步骤610:判断是否通过串口接收到数据,是则执行步骤611,否则等待接收数据,返回步骤610;
步骤611:当接收到主机下发的全部数据后将其存储到第一缓存区中,对第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤612,否则返回步骤610;
本实施例中该步骤的校验方法与步骤606中的校验方法相同,在此不再赘述;
步骤612:根据串口协议对第一缓存区中的数据进行处理,返回步骤608;
如图8所示,在本实施例中,步骤612的处理过程包括:
步骤612-1:从第一缓存区中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤612-2,否则给主机返回错误信息,返回步骤609;
具体的,本实施例中的第一预设字符串为0xF5、0x54;
步骤612-2:检测第四字节上低四位的数据,如为第一设定值则执行步骤612-3,如为第二设定值则执行步骤612-4,如为第三设定值则执行步骤612-5,如为其他则给主机返回错误信息,返回步骤609;
在本实施例中,第一设定值、第二设定值、第三设定值均为十六进制数,分别为0x02、0x07、0x03;
步骤612-3:给主机返回包含串口通讯波特率的握手信息,返回步骤609;
步骤612-4:将第二缓存区中的响应数据返回给主机,返回步骤609;
步骤612-5:从第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度,判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤612-6,否则给主机返回接收数据错误信息,返回步骤609;
步骤612-6:根据串口协议对APDU数据进行处理并将处理结果存储到第二缓存区中,返回步骤609;
步骤613:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤613;
本实施例中步骤613的具体实现过程与实施例一中步骤103相同,在此不再赘述。
在本实施例中,在识别通讯模式的过程中如检测到中断信号时,则进行中断处理,如图9所示,处理过程具体包括:
步骤A1:判断是否为USB中断,是则执行步骤A2,否则退出中断;
具体的,本实施例中判断中断标志寄存器中的标志位的值是否为1,是则为USB中断,否则不为USB中断;
步骤A2:关闭USB中断;
具体的,步骤A2为:将中断标志寄存器中的标志位的值设为0;
步骤A3:判断是否已设置通讯模式,是则执行步骤A5,否则执行步骤A4;
具体的,本实施例中判断通讯标识的值是否为0,是则未设置通讯模式,否则设置了通讯模式;
步骤A4:将通讯模式设置为USB接口通讯,执行步骤A5;
具体的,本实施例中步骤A4为:将通讯标识置为1;
步骤A5:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,枚举完成后退出USB中断;
具体的,给主机返回设备支持的USB接口通讯协议,包括:给主机返回设备IO通讯标识的值,如IO通讯标识的值为第一预设值,表示所述设备支持CCID协议;如IO通讯标识的值为第二预设值,表示所述设备支持HID协议;如IO通讯标识的值为第三预设值,表示所述设备支持SCSI协议;
本实施例中设备支持的USB接口通讯协议可预先进行设置,预先设置设备支持的USB接口通讯协议为CCID协议、HID协议、SCSI协议中的一种或者两种或三种。
当设备支持CCID协议、HID协议、SCSI协议中的两种或者三种时,则步骤613包括:
步骤613-41:检测IO通讯标识的值,如为第一预设值则执行步骤613-42,如为第二预设值则执行步骤613-47,如为第三预设值则执行步骤613-54;
优选的,第一预设值为1,第二预设值为3,第三预设值为5;
步骤613-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤613-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤613-44,如为第二预设字符则执行步骤613-45;如为其他则执行步骤613-46;
步骤613-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤613-42;
步骤613-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤613-42;
步骤613-46:组织消息错误响应并将其存储到第二缓存区,将消息错误响应返回给主机,返回步骤613-42;
步骤613-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据时,判断状态机的状态,如为发送状态则执行步骤613-49,如为接收状态则执行步骤613-48;
步骤613-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤613-51,如为其他则返回步骤613-47;
步骤613-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤613-51,如为第二字符串则执行步骤613-50,如为其他则返回步骤613-47;
步骤613-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤613-47;
步骤613-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤613-52,否则执行步骤613-53;
步骤613-52:设置包含复位参数的响应数据,并将其存储到所述第二缓存区中,将所述状态机的状态改为发送状态,返回步骤613-47;
步骤613-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤613-47;
步骤613-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤613-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤613-56,否则返回步骤613-54;
步骤613-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤613-57,否则执行步骤613-58;
步骤613-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤613-54;
步骤613-58:判断数据传输方向,如是发送则执行步骤613-59,如是接收则执行步骤613-60;
步骤613-59:将第二缓存区中的响应数据返回给主机,返回步骤613-54;
步骤613-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤613-61,否则执行步骤613-62;
步骤613-61:设置包含复位参数的响应数据,并将其存储到所述第二缓存区中,将数据传输方向设置为发送,返回步骤613-54;
步骤613-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到所述第二缓存区中,返回步骤613-54。
实施例三
本发明实施例三提供了一种通讯模式的识别方法,如图10所示,包括:
步骤900:设备上电,进行初始化;
在本实施例中,进行初始化包括:将通讯标识的值设为0;
本实施例中,设备上电后的默认通讯模式为串口通讯;
步骤901:打开串口中断、USB中断、时钟中断和定时器;
步骤902:判断是否触发串行中断,是则执行步骤903,否则进入其他中断进行处理,退出中断后继续执行步骤903;
具体的,在本实施例中,进入其他中断具体处理过程包括:
步骤D1:判断是否触发USB中断,是则执行步骤A2,否则退出中断;
步骤D2:关闭USB中断,判断是否通过端点0接收到Setup数据包,是则执行步骤D3,否则打开USB中断,执行步骤D4;
步骤D3:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,执行步骤D4;
本实施中预先定义设备支持的USB接口通讯协议为CCID、HID、SCSI中的一种或多种,每种协议对应的IO通讯标识的值不同,如IO通讯标识的值为第一预设值,表示所述设备支持CCID协议;如IO通讯标识的值为第二预设值,表示所述设备支持HID协议;如IO通讯标识的值为第三预设值,表示所述设备支持SCSI协议;给主机返回设备支持的USB接口通讯协议具体为:将IO通讯标识的值发送给主机;优选的,本实施例中以设备只支持一种协议为例进行说明;
步骤D4:设置通讯模式为USB接口通讯,退出USB中断;
具体的,设置通讯模式为USB接口通讯包括:将通讯标识的值设为1;
步骤903:判断通讯模式是否为USB接口通讯,是则执行步骤904,否则返回步骤905;
在本实施例中,步骤903具体为:判断通讯标识的值是否为1,是则为USB接口通讯,否则不为USB接口通讯;
步骤904:接收主机下发的指令,并根据设备支持的USB接口通讯协议对接收到的指令进行处理,处理完成后继续等待接收主机下发的指令,返回步骤904;
在本实施例中,根据设备支持的USB接口通讯协议对接收到的指令进行处理的实现过程与实施例一中的步骤103处理过程相同,在此不再赘述
步骤905:判断通讯模式是否为第一串口通讯,是则执行步骤906,否则执行步骤907;
具体的,步骤905为:判断通讯标识的值是否为4,是则为第一串口通讯,否则不为第一串口通讯;
步骤906:等待主机下发指令,当接收指令时根据串口协议进行相应操作,操作完成后返回步骤906;
根据串口通讯协议对接收到的数据进行相应操作,如图11所示,包括:
步骤906-1:接收串口数据并将其存储到第一缓存区中;
步骤906-2:从第一缓存区的串口数据中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤906-3,否则清除通讯模式,给主机返回错误信息,返回步骤902;
具体的,本实施例中的第一预设字符串为0xF5、0x54;
步骤906-3:检测第四字节上低四位的数据,如为第一设定值则执行步骤906-4,如为第二设定值则执行步骤906-5,如为第三设定值则执行步骤906-6;
在本实施例中,第一设定值、第二设定值、第三设定值分别为0x02、0x07、0x03;
步骤906-3中如判断第四字节上低四位的数据为其他则给主机返回错误信息,返回步骤902;
步骤906-4:给主机返回包含串口通讯波特率的握手信息,返回步骤902;
步骤906-5:将第二缓存区中的响应数据返回给主机,返回步骤902;
步骤906-6:从第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度;
步骤906-7:判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤906-8,否则给主机返回接收数据错误信息,返回步骤902;
步骤906-8:根据串口协议对APDU数据进行处理并将处理结果存储到第二缓存区中,返回步骤902;
步骤907:检测串口信号,等待主机下发握手数据包;
步骤908:判断是否检测到串口信号,是则执行步骤909,否则返回步骤902;
步骤909:接收主机下发的第一个字节数据并将其存储在第一缓存区中,判断第一字节数据是否为第一预设值,是则执行步骤910,否则返回步骤902;
在本实施例中,第一预设值具体为0x0F;
步骤910:当通过串口接收到主机下发的全部数据后将其存储到第一缓存区中,对第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤911,否则返回步骤902;
步骤911:设置串口通讯波特率,设置通讯模式为第一串口通讯,返回步骤902;
在本实施例中,设置通讯模式为第一串口通讯,具体为:将通讯标识的值设为4;
在本实施例中,设备设置了通讯波特率在接收到主机下发的获取波特率指令时将该波特率发送给主机,然后与主机以该波特率进行通讯。
本实施例中的设备也可预先定义设备支持CCID协议、HID协议和SCSI协议中的至少两种USB接口通讯协议,其实现过程与实施例二相同,在此不再赘述。
本发明实施例提供的方法即可在现有产品上通用,也适用于老版本的串口产品,可提高产品的整体兼容性、继承性,也避免了更新淘汰市场上大量老产品而产生的巨额开销,节省了大量人力、物力、财力成本。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (27)

1.一种通讯模式的识别方法,其特征在于,包括:
步骤S1:设备上电,进行初始化,打开中断和定时器,所述定时器开始计时;
当所述定时器计时到达预设值时,进入时钟中断处理,时钟中断处理包括:关闭所述定时器,将超时标识置位,打开所述定时器,退出时钟中断;
当检测到其他中断信号时,执行步骤B1-步骤B8;
步骤B1:判断中断类型,如为USB中断则执行步骤B2,如为串口中断则执行步骤B6;
步骤B2:关闭USB中断;
步骤B3:判断是否已设置通讯模式,是则执行步骤B5,否则执行步骤B4;
步骤B4:设置通讯模式为USB接口通讯,执行步骤B5;
步骤B5:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,枚举完成后退出USB中断;
步骤B6:关闭串口中断;
步骤B7:判断是否已设置通讯模式,是则打开串口中断,退出串口中断,否则执行步骤B8;
步骤B8:根据接收到的第一个数据包设置通讯模式为串口通讯,打开串口中断,退出串口中断;
步骤S2:检测通讯模式的类型,如为USB接口通讯,则关闭所述定时器,执行步骤S3,如为串口通讯,则关闭所述定时器,执行步骤S6,如未设置通讯模式则执行步骤S4;
步骤S3:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤S3;
步骤S4:判断所示超时标识是否置位,是则执行步骤S5,否则返回步骤S2;
步骤S5:设置通讯模式为串口通讯,关闭所述定时器,将超时标识复位,执行步骤S6;
步骤S6:等待主机下发指令,当接收到指令时根据串口协议进行相应操作,操作完成后返回步骤S6。
2.如权利要求1所述的方法,其特征在于,还包括:所述设备预先定义设备支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议;
所述步骤B5中的给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
3.如权利要求2所述的方法,其特征在于,所述IO通讯标识的值为第一预设值,所述步骤S3包括:
步骤S3-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤S3-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤S3-13,如为第二预设字符则执行步骤S3-14;如为其他则执行步骤S3-15;
步骤S3-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤S3-11;
步骤S3-14:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤S3-11;
步骤S3-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤S3-11。
4.如权利要求2所述的方法,其特征在于,所述IO通讯标识的值为第二预设值,所述步骤S3包括:
步骤S3-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤S3-23,如为接收状态则执行步骤S3-22;
步骤S3-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-25,如为其他则返回步骤S3-21;
步骤S3-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-25,如为第二字符串则执行步骤S3-24,如为其他则返回步骤S3-21;
步骤S3-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤S3-21;
步骤S3-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤S3-26,否则执行步骤S3-27;
步骤S3-26:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤S3-21;
步骤S3-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤S3-21。
5.如权利要求2所述的方法,其特征在于,所述IO通讯标识的值为第三预设值,所述步骤S3包括:
步骤S3-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤S3-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤S3-33,否则返回步骤S3-31;
步骤S3-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤S3-34,否则执行步骤S3-35;
步骤S3-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤S3-31;
步骤S3-35:判断数据传输方向,如是发送则执行步骤S3-36,如是接收则执行步骤S3-37;
步骤S3-36:将第二缓存区中的响应数据返回给主机,返回步骤S3-31;
步骤S3-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤S3-38,否则执行步骤S3-39;
步骤S3-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤S3-31;
步骤S3-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤S3-31。
6.如权利要求1所述的方法,其特征在于,还包括:所述设备预先定义设备支持的USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤B5中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
7.如权利要求6所述的方法,其特征在于,所述步骤S3包括:
步骤S3-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤S3-42,如为第二预设值则执行步骤S3-47,如为第三预设值则执行步骤S3-54;
步骤S3-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤S3-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤S3-44,如为第二预设字符则执行步骤S3-45;如为其他则执行步骤S3-46;
步骤S3-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤S3-42;
步骤S3-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤S3-42;
步骤S3-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤S3-42;
步骤S3-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤S3-49,如为接收状态则执行步骤S3-48;
步骤S3-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-51,如为其他则返回步骤S3-47;
步骤S3-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤S3-51,如为第二字符串则执行步骤S3-50,如为其他则返回步骤S3-47;
步骤S3-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤S3-47;
步骤S3-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤S3-52,否则执行步骤S3-53;
步骤S3-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤S3-47;
步骤S3-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤S3-47;
步骤S3-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤S3-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤S3-56,否则返回步骤S3-54;
步骤S3-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤S3-57,否则执行步骤S3-58;
步骤S3-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤S3-54;
步骤S3-58:判断数据传输方向,如是发送则执行步骤S3-59,如是接收则执行步骤S3-60;
步骤S3-59:将第二缓存区中的响应数据返回给主机,返回步骤S3-54;
步骤S3-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤S3-61,否则执行步骤S3-62;
步骤S3-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤S3-54;
步骤S3-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤S3-54。
8.如权利要求1所述的方法,其特征在于,所述步骤S6包括:
步骤S6-1:当通过串口接收到指令时将其存储到第一缓存区中,根据串口协议对所述第一缓存区中的指令进行解析并判断解析结果中第一字节上的数据是否为第一预设数据,是则执行步骤S6-2,否则返回步骤S6-1;
步骤S6-2:判断所述解析结果中第三字节上的数据是否为第二预设数据,是则执行步骤S6-3,否则执行步骤S6-4;
步骤S6-3:对所述解析结果进行处理并将处理结果返回给主机,返回步骤S6-1;
步骤S6-4:检测所述解析结果中第四字节上的数据,如为第三预设数据则执行步骤S6-5,如为第四预设数据则执行步骤S6-6,如为其他则返回步骤S6-1;
步骤S6-5:输出电量不足信息,进入死机状态,结束;
步骤S6-6:设置响应数据,并将其存储到第二缓存区中,返回步骤S6-1;所述响应数据包括设备与主机的通讯波特率和传输数据的长度。
9.如权利要求1所述的方法,其特征在于,所述初始化包括:将通讯标识的值设为0;
所述检测通讯模式的类型,具体为:检查所述通讯标识的值,若所述通讯标识的值为1则当前通讯模式为USB接口通讯,若所述通讯标识的值为2则当前通讯模式为串口通讯,若所述通讯标识的值为0则未设置通讯模式;
所述设置通讯模式为串口通讯,具体为:将所述通讯标识的值设为2;
所述设置通讯模式为USB接口通讯,具体为:将所述通讯标识的值设为1。
10.一种通讯模式的识别方法,其特征在于,包括:
步骤P1:设备上电,进行初始化,打开中断;
当检测到中断信号时,进行中断处理,所述中断处理包括:
步骤A1:判断是否为USB中断,是则执行步骤A2,否则退出中断;
步骤A2:关闭USB中断;
步骤A3:判断是否已设置通讯模式,是则执行步骤A5,否则执行步骤A4;
步骤A4:将通讯模式设置为USB接口通讯,执行步骤A5;
步骤A5:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,枚举完成后退出USB中断;
步骤P2:判断通讯模式是否为USB接口通讯,是则执行步骤P13,否则执行步骤P3;
步骤P3:判断是否通过串口接收到数据,是则执行步骤P4,否则返回步骤P2;
步骤P4:将接收到的数据存储到第一缓存区中,判断存储在所述第一缓存区中的第一字节数据是否为第一预设值,是则执行步骤P6,否则执行步骤P5;
步骤P5:判断通讯模式是否为USB接口通讯,是则执行步骤P13,否则返回步骤P4;
步骤P6:当通过串口接收到主机下发的全部数据后将其存储到所述第一缓存区中,对所述第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤P7,否则返回步骤P3;
步骤P7:设置串口通讯波特率,设置通讯模式为第一串口通讯;
步骤P8:判断通讯模式是否为第一串口通讯,是则执行步骤P10,否则执行步骤P9;
步骤P9:设置通讯模式为第二串口通讯,执行步骤P12;
步骤P10:判断是否通过串口接收到数据,是则执行步骤P11,否则等待接收数据,返回步骤P10;
步骤P11:当接收到主机下发的全部数据后将其存储到所述第一缓存区中,对所述第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤P12,否则返回步骤P10;
步骤P12:根据串口协议对所述第一缓存区中的数据进行处理;
步骤P13:等待主机下发指令,当接收到指令时根据设备支持的USB接口通讯协议进行相应操作,操作完成后返回步骤P13。
11.如权利要求10所述的方法,其特征在于,所述初始化包括:将通讯标识的值设为0;
所述判断通讯模式是否为USB接口通讯,具体为:判断所述通讯标识的值是否为1,是则为USB接口通讯,否则不为USB接口通讯;
所述设置通讯模式为第一串口通讯,具体为:将所述通讯标识的值设为4;
所述判断通讯模式是否为第一串口通讯,具体为:判断所述通讯标识的值是否为4,是则为第一串口通讯,否则不为第一串口通讯;
所述设置通讯模式为第二串口通讯,具体为:将所述通讯标识的值设为2。
12.如权利要求10所述的方法,其特征在于,所述步骤P12具体包括:
步骤P12-1:从第一缓存区中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤P12-2,否则给主机返回错误信息,返回步骤P9;
步骤P12-2:检测第四字节上低四位的数据,若为第一设定值则执行步骤P12-3,若为第二设定值则执行步骤P12-4,若为第三设定值则执行步骤P12-5,若为其他则给主机返回错误信息,返回步骤P9;
步骤P12-3:给主机返回包含所述串口通讯波特率的握手信息,返回步骤P9;
步骤P12-4:将第二缓存区中的响应数据返回给主机,返回步骤P9;
步骤P12-5:从第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度,判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤P12-6,否则给主机返回接收数据错误信息,返回步骤P9;
步骤P12-6:根据串口协议对APDU数据进行处理并将处理结果存储到所述第二缓存区中,返回步骤P9。
13.如权利要求10所述的方法,其特征在于,还包括:所述设备预先定义设备支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议;
所述步骤A5中给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
14.如权利要求13所述的方法,其特征在于,所述IO通讯标识的值为第一预设值,所述步骤P13包括:
步骤P13-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤P13-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤P13-13,如为第二预设字符则执行步骤P13-14;如为其他则执行步骤P13-15;
步骤P13-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤P13-11;
步骤P13-14:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤P13-11;
步骤P13-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤P13-11。
15.如权利要求13所述的方法,其特征在于,所述IO通讯标识的值为第二预设值,所述步骤P13包括:
步骤P13-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤P13-23,如为接收状态则执行步骤P13-22;
步骤P13-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-25,如为其他则返回步骤P13-21;
步骤P13-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-25,如为第二字符串则执行步骤P13-24,如为其他则返回步骤P13-21;
步骤P13-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤P13-21;
步骤P13-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤P13-26,否则执行步骤P13-27;
步骤P13-26:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤P13-21;
步骤P13-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤P13-21。
16.如权利要求13所述的方法,其特征在于,所述IO通讯标识的值为第三预设值,所述步骤P13包括:
步骤P13-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤P13-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤P13-33,否则返回步骤P13-31;
步骤P13-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤P13-34,否则执行步骤P13-35;
步骤P13-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤P13-31;
步骤P13-35:判断数据传输方向,如是发送则执行步骤P13-36,如是接收则执行步骤P13-37;
步骤P13-36:将第二缓存区中的响应数据返回给主机,返回步骤P13-31;
步骤P13-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤P13-38,否则执行步骤P13-39;
步骤P13-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤P13-31;
步骤P13-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤P13-31。
17.如权利要求10所述的方法,其特征在于,还包括:所述设备预先定义的设备支持USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤A5中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
18.如权利要求17所述的方法,其特征在于,所述步骤P13包括:
步骤P13-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤P13-42,如为第二预设值则执行步骤P13-47,如为第三预设值则执行步骤P13-54;
步骤P13-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤P13-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤P13-44,如为第二预设字符则执行步骤P13-45;如为其他则执行步骤P13-46;
步骤P13-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤P13-42;
步骤P13-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤P13-42;
步骤P13-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤P13-42;
步骤P13-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤P13-49,如为接收状态则执行步骤P13-48;
步骤P13-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-51,如为其他则返回步骤P13-47;
步骤P13-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤P13-51,如为第二字符串则执行步骤P13-50,如为其他则返回步骤P13-47;
步骤P13-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤P13-47;
步骤P13-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤P13-52,否则执行步骤P13-53;
步骤P13-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤P13-47;
步骤P13-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤P13-47;
步骤P13-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤P13-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤P13-56,否则返回步骤P13-54;
步骤P13-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤P13-57,否则执行步骤P13-58;
步骤P13-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤P13-54;
步骤P13-58:判断数据传输方向,如是发送则执行步骤P13-59,如是接收则执行步骤P13-60;
步骤P13-59:将第二缓存区中的响应数据返回给主机,返回步骤P13-54;
步骤P13-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤P13-61,否则执行步骤P13-62;
步骤P13-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤P13-54;
步骤P13-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤P13-54。
19.一种通讯模式的识别方法,其特征在于,包括:
步骤L1:设备上电,进行初始化,打开中断;
步骤L2:判断是否触发串行中断,是则执行步骤L3,否则进入其他中断进行处理,退出中断后继续执行步骤L3;
步骤L3:判断通讯模式是否为USB接口通讯,是则执行步骤L4,否则执行步骤L5;
步骤L4:接收主机下发的指令,并根据设备支持的USB接口通讯协议对接收到的指令进行处理,处理完成后继续等待接收主机下发的指令,返回步骤L4;
步骤L5:判断通讯模式是否为第一串口通讯,是则执行步骤L6,否则执行步骤L7;
步骤L6:等待主机下发指令,当接收指令时根据串口协议进行相应操作,操作完成后返回步骤L6;
步骤L7:检测串口信号,等待主机下发握手数据包;
步骤L8:判断是否检测到串口信号,是则执行步骤L9,否则返回步骤L2;
步骤L9:接收主机下发的第一个字节数据并将其存储在第一缓存区中,判断第一字节数据是否为第一预设值,是则执行步骤L10,否则返回步骤L2;
步骤L10:当通过串口接收到主机下发的全部数据后将其存储到第一缓存区中,对第一缓存区中的数据进行校验并判断校验是否通过,是则执行步骤L11,否则返回步骤L2;
步骤L11:设置串口通讯波特率,设置通讯模式为第一串口通讯,返回步骤L2;
所述进入其他中断进行处理包括:
步骤D1:判断是否触发USB中断,是则执行步骤D2,否则退出中断;
步骤D2:关闭USB中断,判断是否通过端点0接收到Setup数据包,是则执行步骤D3,否则打开USB中断,执行步骤D4;
步骤D3:打开USB中断,进行USB枚举,给主机返回设备支持的USB接口通讯协议,执行步骤D4;
步骤D4:设置通讯模式为USB接口通讯,退出USB中断。
20.如权利要求19所述的方法,其特征在于,所述进行初始化包括:将通讯标识的值设为0;
所述判断通讯模式是否为USB接口通讯,具体为:判断所述通讯标识的值是否为1,是则为USB接口通讯,否则不为USB接口通讯;
所述设置通讯模式为第一串口通讯,具体为:将所述通讯标识的值设为4;
所述判断通讯模式是否为第一串口通讯,具体为:判断所述通讯标识的值是否为4,是则为第一串口通讯,否则不为第一串口通讯。
21.如权利要求19所述的方法,其特征在于,所述步骤L6具体包括:
步骤L6-1:接收串口数据并将其存储到第一缓存区中;
步骤L6-2:从所述第一缓存区的串口数据中提取前七个字节数据,并判断第一字节与第二字节上的数据是否为第一预设字符串,是则执行步骤L6-3,否则清除通讯模式,给主机返回错误信息,返回步骤L2;
步骤L6-3:检测第四字节上低四位的数据,如为第一设定值则执行步骤L6-4,如为第二设定值则执行步骤L6-5,如为第三设定值则执行步骤L6-6;
步骤L6-4:给主机返回包含串口通讯波特率的握手信息,返回步骤L2;
步骤L6-5:将第二缓存区中的响应数据返回给主机,返回步骤L2;
步骤L6-6:从所述第一缓存区中提取APDU数据和数据长度,计算该APDU数据的长度;
步骤L6-7:判断计算得到的APDU数据的长度与提取的数据长度是否相同,是则给主机返回接收数据正确响应,执行步骤L6-8,否则给主机返回接收数据错误信息,返回步骤L2;
步骤L6-8:根据串口协议对APDU数据进行处理并将处理结果存储到所述第二缓存区中,返回步骤L2。
22.如权利要求19所述的方法,其特征在于,还包括:所述设备预先定义设备支持支持的USB接口通讯协议为CCID协议或HID协议或SCSI协议,所述步骤D3中的给主机返回设备支持的USB接口通讯协议,包括:所述设备将IO通讯标识的值发送给主机。
23.如权利要求22所述的方法,其特征在于,所述IO通讯标识的值为第一预设值,所述步骤L4包括:
步骤L4-11:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤L4-12:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤L4-13,如为第二预设字符则执行步骤L4-14;如为其他则执行步骤L4-15;
步骤L4-13:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤L4-11;
步骤L4-14:将解析结果中的ALDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤L4-11;
步骤L4-15:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤L4-11。
24.如权利要求22所述的方法,其特征在于,所述IO通讯标识的值为第二预设值,所述步骤L4包括:
步骤L4-21:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤L4-23,如为接收状态则执行步骤L4-22;
步骤L4-22:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-25,如为其他则返回步骤L4-21;
步骤L4-23:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-25,如为第二字符串则执行步骤L4-24,如为其他则返回步骤L4-21;
步骤L4-24:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤L4-21;
步骤L4-25:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤L4-26,否则执行步骤L4-27;
步骤L4-26:设置包含复位参数的响应数据,并将其存储到所述第二缓存区中,将所述状态机的状态改为发送状态,返回步骤L4-21;
步骤L4-27:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤L4-21。
25.如权利要求22所述的方法,其特征在于,所述IO通讯标识的值为第三预设值,所述步骤L4包括:
步骤L4-31:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤L4-32:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤L4-33,否则返回步骤L4-31;
步骤L4-33:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤L4-34,否则执行步骤L4-35;
步骤L4-34:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤L4-31;
步骤L4-35:判断数据传输方向,如是发送则执行步骤L4-36,如是接收则执行步骤L4-37;
步骤L4-36:将第二缓存区中的响应数据返回给主机,返回步骤L4-31;
步骤L4-37:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤L4-38,否则执行步骤L4-39;
步骤L4-38:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤L4-31;
步骤L4-39:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤L4-31。
26.如权利要求19所述的方法,其特征在于,还包括:所述设备预先定义设备支持的USB接口通讯协议包括CCID协议、HID协议、SCSI协议中的至少两种协议;
所述步骤D3中的给主机返回设备支持的USB通讯USB接口通讯协议,包括:所述设备将IO通讯标识发送给主机。
27.如权利要求26所述的方法,其特征在于,所述步骤L4包括:
步骤L4-41:检测所述IO通讯标识的值,如为第一预设值则执行步骤L4-42,如为第二预设值则执行步骤L4-47,如为第三预设值则执行步骤L4-54;
步骤L4-42:等待主机下发指令,当通过USB接口接收到指令时将其存储到第一缓存区中,根据CCID协议解析所述第一缓存区中的指令;
步骤L4-43:判断解析结果中的第一字节数据,如为第一预设字符则执行步骤L4-44,如为第二预设字符则执行步骤L4-45;如为其他则执行步骤L4-46;
步骤L4-44:对解析结果进行相应操作,并将操作结果存储到第二缓存区,将操作结果返回给主机,返回步骤L4-42;
步骤L4-45:将解析结果中的APDU数据发送给命令层进行处理,接收到处理结果时将其存储到第二缓存区,将处理结果返回给主机,返回步骤L4-42;
步骤L4-46:组织消息错误响应并将其存储到第二缓存区,将所述消息错误响应返回给主机,返回步骤L4-42;
步骤L4-47:等待主机下发指令,当通过USB接口接收到八个字节大小的Setup数据包时,判断状态机的状态,如为发送状态则执行步骤L4-49,如为接收状态则执行步骤L4-48;
步骤L4-48:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-51,如为其他则返回步骤L4-47;
步骤L4-49:根据HID协议解析Setup数据包,并检测解析结果的前两个字节数据,如为第一字符串则执行步骤L4-51,如为第二字符串则执行步骤L4-50,如为其他则返回步骤L4-47;
步骤L4-50:将第二缓存区中的响应数据返回给主机,将所述状态机的状态设为接收状态,返回步骤L4-47;
步骤L4-51:将Setup数据包的解析结果存储到第一缓存区中,根据解析结果判断指令类型是否为热复位指令,是则执行步骤L4-52,否则执行步骤L4-53;
步骤L4-52:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将所述状态机的状态改为发送状态,返回步骤L4-47;
步骤L4-53:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,将状态机的状态改为发送状态,返回步骤L4-47;
步骤L4-54:等待主机下发指令,当通过USB接口接收到指令时根据SCSI协议对该指令进行解析;
步骤L4-55:根据解析结果判断所述接收到的指令是否为合法SCSI指令,是则执行步骤L4-56,否则返回步骤L4-54;
步骤L4-56:根据所述解析结果判断所述接收到的指令是否为标准SCSI指令,是则执行步骤L4-57,否则执行步骤L4-58;
步骤L4-57:根据标准SCSI指令进行相应操作,并将操作结果返回给主机,返回步骤L4-54;
步骤L4-58:判断数据传输方向,如是发送则执行步骤L4-59,如是接收则执行步骤L4-60;
步骤L4-59:将第二缓存区中的响应数据返回给主机,返回步骤L4-54;
步骤L4-60:将所述解析结果存储到第一缓存区中,并根据所述解析结果判断所述接收到的指令是否为热复位指令,是则执行步骤L4-61,否则执行步骤L4-62;
步骤L4-61:设置包含复位参数的响应数据,并将其存储到第二缓存区中,将数据传输方向设置为发送,返回步骤L4-54;
步骤L4-62:将解析结果发送给命令层进行处理,接收处理结果并将其存储到第二缓存区中,返回步骤L4-54。
CN201310585970.8A 2013-11-20 2013-11-20 一种通讯模式的识别方法 Active CN103631747B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201310585970.8A CN103631747B (zh) 2013-11-20 2013-11-20 一种通讯模式的识别方法
US14/913,888 US10169276B2 (en) 2013-11-20 2014-08-22 Detecting a communication mode via interruptions
PCT/CN2014/084968 WO2015074448A1 (zh) 2013-11-20 2014-08-22 一种通讯模式的识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310585970.8A CN103631747B (zh) 2013-11-20 2013-11-20 一种通讯模式的识别方法

Publications (2)

Publication Number Publication Date
CN103631747A CN103631747A (zh) 2014-03-12
CN103631747B true CN103631747B (zh) 2016-05-25

Family

ID=50212825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310585970.8A Active CN103631747B (zh) 2013-11-20 2013-11-20 一种通讯模式的识别方法

Country Status (3)

Country Link
US (1) US10169276B2 (zh)
CN (1) CN103631747B (zh)
WO (1) WO2015074448A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753487B2 (en) * 2013-03-14 2017-09-05 Micron Technology, Inc. Serial peripheral interface and methods of operating same
CN103631747B (zh) * 2013-11-20 2016-05-25 飞天诚信科技股份有限公司 一种通讯模式的识别方法
CN104537294B (zh) * 2014-12-29 2017-09-22 飞天诚信科技股份有限公司 一种可处理多协议apdu命令的方法
US10628196B2 (en) * 2016-11-12 2020-04-21 Vmware, Inc. Distributed iSCSI target for distributed hyper-converged storage
CN108804046B (zh) * 2017-04-27 2023-12-19 广州众诺微电子有限公司 数据处理方法及数据处理装置
CN107135476B (zh) * 2017-06-27 2018-12-11 飞天诚信科技股份有限公司 一种蓝牙适配器及其工作方法
CN108509366A (zh) * 2018-03-22 2018-09-07 成都泰盟软件有限公司 一种嵌入式智能串口实现方法
WO2020097902A1 (en) 2018-11-16 2020-05-22 Vmware Information Technology (China) Co., Ltd. Active-active architecture for distributed iscsi target in hyper-converged storage
CN109977050A (zh) * 2019-03-12 2019-07-05 福建升腾资讯有限公司 一种usb复合设备及其工作方法
JP7386012B2 (ja) * 2019-07-30 2023-11-24 株式会社ワコム 情報入力装置、方法、及びプログラム
US11507409B2 (en) 2020-01-22 2022-11-22 Vmware, Inc. Object-based load balancing approaches in distributed storage system
US11500667B2 (en) 2020-01-22 2022-11-15 Vmware, Inc. Object-based approaches to support internet small computer system interface (ISCSI) services in distributed storage system
CN111930184B (zh) * 2020-10-13 2021-01-01 飞天诚信科技股份有限公司 一种外接设备模拟键盘的实现方法、装置及系统
CN113094305B (zh) * 2021-04-02 2024-03-26 北京黑蚁兄弟科技有限公司 一种异步通信处理方法、装置和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271443A (zh) * 2007-03-20 2008-09-24 盛群半导体股份有限公司 握手式二线串行通讯界面及方法
EP2090988A1 (en) * 2008-02-12 2009-08-19 Magneti Marelli S.p.A. Communication system using an USB-type communication channel and corresponding communication method
CN103019981A (zh) * 2012-11-16 2013-04-03 深圳市文鼎创数据科技有限公司 信号转接控制方法及信号转接装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7021971B2 (en) * 2003-09-11 2006-04-04 Super Talent Electronics, Inc. Dual-personality extended-USB plug and receptacle with PCI-Express or Serial-At-Attachment extensions
JP3568118B2 (ja) * 2000-10-19 2004-09-22 松下電器産業株式会社 シリアル通信用データ処理装置
US6948098B2 (en) * 2001-03-30 2005-09-20 Cirrus Logic, Inc. Circuits and methods for debugging an embedded processor and systems using the same
US7093118B2 (en) * 2001-06-27 2006-08-15 Intel Corporation System and method for external bus device support
JP2004192488A (ja) * 2002-12-13 2004-07-08 Renesas Technology Corp データプロセッサ及びメモリカード
US6769622B1 (en) * 2003-03-14 2004-08-03 Stmicroelectronics, Inc. System and method for simulating universal serial bus smart card device connected to USB host
JPWO2005003980A1 (ja) * 2003-07-01 2007-09-20 株式会社ティアンドデイ 多目的半導体集積回路装置
TWM249116U (en) * 2004-01-08 2004-11-01 Uis Abler Electronics Co Ltd Switching device for RS-232 serial port and USB serial port
JP2007148715A (ja) * 2005-11-28 2007-06-14 Smk Corp データ入力端末装置
KR20100002943A (ko) * 2008-06-30 2010-01-07 삼성전자주식회사 유에스비 디바이스 장치 및 그 모드 인식방법
JP5681576B2 (ja) * 2011-06-29 2015-03-11 ルネサスエレクトロニクス株式会社 ホストコントローラ装置、情報処理装置及びイベント情報出力方法
CN103092802B (zh) 2013-02-07 2015-07-22 飞天诚信科技股份有限公司 一种读卡器与上位机通信的方法
US9183168B2 (en) * 2013-02-22 2015-11-10 Dell Products, Lp Dual mode USB and serial console port
CN103207964B (zh) 2013-03-15 2016-05-25 飞天诚信科技股份有限公司 一种多功能智能密钥设备及其工作方法
CN103631747B (zh) 2013-11-20 2016-05-25 飞天诚信科技股份有限公司 一种通讯模式的识别方法
US11181966B2 (en) * 2015-11-13 2021-11-23 Texas Instruments Incorporated USB interface circuit and method for low power operation
CN107179999A (zh) * 2016-03-09 2017-09-19 葛丽 一种基于单片机和ch375的u盘读写控制器设计

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271443A (zh) * 2007-03-20 2008-09-24 盛群半导体股份有限公司 握手式二线串行通讯界面及方法
EP2090988A1 (en) * 2008-02-12 2009-08-19 Magneti Marelli S.p.A. Communication system using an USB-type communication channel and corresponding communication method
CN103019981A (zh) * 2012-11-16 2013-04-03 深圳市文鼎创数据科技有限公司 信号转接控制方法及信号转接装置

Also Published As

Publication number Publication date
US20160357692A1 (en) 2016-12-08
US10169276B2 (en) 2019-01-01
WO2015074448A1 (zh) 2015-05-28
CN103631747A (zh) 2014-03-12

Similar Documents

Publication Publication Date Title
CN103631747B (zh) 一种通讯模式的识别方法
CN103454996B (zh) 主从机系统及其控制方法
CN104991721B (zh) 一种指纹操作方法和装置
CN103680113B (zh) 红外信号的解码处理方法及装置
CN102063400B (zh) 一种通用串行总线设备转接装置
CN101751524B (zh) 一种计算机外接设备管理装置、方法及计算机
CN101382856B (zh) 在触摸装置上实现usb hid mouse功能的装置及方法
CN103678215A (zh) 一种智能读卡器的工作方法
CN101110051A (zh) 一种单板调试串口功能的测试方法及其系统
CN105224483B (zh) 数据传输方法、电子设备及通用串行总线设备
CN109688150A (zh) 一种多平台账号互通方法及装置
CN204904449U (zh) 一种用于检测双模费控电能表费控功能的半自动检测装置
CN102609657A (zh) 射频识别的用户登录方法和装置
CN207164210U (zh) 一种智能卡的测试装置
CN104102871A (zh) 电子签名认证扩展设备及信息处理方法
CN105700915B (zh) 一种兼顾看门狗功能和监测软件烧写功能的方法和装置
CN104462197A (zh) 一种从打印数据中获取信息的方法
CN204989453U (zh) 一种用于检测双模费控电能表费控功能的全自动检测装置
CN104102869B (zh) 电子签名认证扩展设备及信息处理方法
CN110401585A (zh) 可中断串行总线通讯方法、系统及介质
CN104765710B (zh) 一种包含双处理器的读卡器的工作方法
CN107168923A (zh) 一种配置多个fpga的装置及方法
CN104102870B (zh) 电子签名认证扩展设备及信息处理方法
CN104123257A (zh) 通用串行总线装置、通信方法及计算机可读存储介质
CN104320254A (zh) 一种支持扩展接口的智能密钥设备的工作方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant