发明内容
为此,需要提供一种USB通信恢复方法及系统,用于解决现有USB设备因受到干扰,而短时间断开,导致通信异常与中断的问题。
为实现上述目的,发明人提供了一种密码键盘USB通信异常恢复方法,该密码键盘USB通信异常恢复方法,包括以下步骤:
密码键盘各底层驱动模块,在各自的通信数据中插入命令号;
判断密码键盘与连接设备的通信是否异常,若是,则密码键盘各底层驱动模块,判断是否需要重发数据;
若需要重发数据,则所述底层驱动模块,以相同的命令号再次发送原数据;
连接设备判断接收到的数据的命令号是否一致,若是,则数据重复接收,丢弃重复接收数据,若否,则接收该数据。
进一步的,在所述底层驱动模块,以相同的命令号再次发送原数据之前,还包括步骤:
判断数据重发次数是否超过预设的最大重发次数,若是,则发送超时,并更新命令号,若否,则以相同的命令号再次发送原数据。
进一步的,所述密码键盘与连接设备的通信异常包括数据发送失败和数据接收超时。
进一步的,密码键盘各底层驱动模块所发送的通信数据中,还插入有与各底层驱动模块对应的模块号。
为实现上述目的,发明人还提供了一种密码键盘USB通信异常恢复系统,该密码键盘USB通信异常恢复系统,包括插入单元、第一判断单元、第二判断单元、重发单元和接收单元;
所述插入单元用于密码键盘各底层驱动模块,在各自的通信数据中插入命令号;
所述第一判断单元用于判断密码键盘与连接设备的通信是否异常;
所述第二判断单元用于在第一判断单元判定通信异常时,密码键盘各底层驱动模块判断是否需要重发数据;
所述重发单元用于在第二判断单元判定需要重发数据时,所述底层驱动模块,以相同的命令号再次发送原数据;
所述接收单元用于连接设备判断接收到的数据的命令号是否一致,若是,则数据重复接收,丢弃重复接收数据,若否,则接收该数据。
进一步的,所述重发单元还用于在以相同的命令号再次发送原数据之前,判断数据重发次数是否超过预设的最大重发次数,若是,则发送超时,并更新命令号,若否,则以相同的命令号再次发送原数据。
进一步的,所述密码键盘与连接设备的通信异常包括数据发送失败和数据接收超时。
进一步的,所述插入单元还用于在密码键盘各底层驱动模块所发送的通信数据中,插入有与各底层驱动模块对应的模块号。
区别于现有技术,上述技术方案密码键盘USB通信异常恢复方法及系统在通信异常时,各个底层驱动模块判断是否需要重发数据,以及由各个底层驱动重发数据来解决通信异常问题,在重发数据时,各底层驱动模块通过对发送消息引入命令号,同一数据采用相同命令号发送,从而避免对同一条命令重复处理,以及同步通信双方的命令处理状态;本技术方案由各个底层驱动模块进行出错处理,解决通信受干扰而短时间断开问题,可以简化通信协议的设计,并用通过命令序列号机制,防止重复接收和发送相同命令,引发通信双方不同步或者重复操作问题。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,本实施例一种密码键盘USB通信异常恢复方法,该密码键盘USB通信异常恢复方法包括以下步骤:
S101、密码键盘各底层驱动模块以及连接设备,在各自的通信数据中插入命令号。其中,所述连接设备即为密码键盘所连接的设备,在本实施例中,所述连接设备优选为POS机,所述密码键盘包括有数字键盘模块、签字板模块和扫描枪模块,各模块分别包括硬件电路以及对应的底层驱动模块,其中,数字键盘模块用于获取输入的密码等数字信息,所述签字板模块用于获取用户的签名等信息,所述扫描枪用于扫描一维码或二维码待条码信息。所述数字键盘模块、签字板模块和扫描枪模块均具有独立的数据处理能力,能够实现数据收发功能,并且各模块共用一个USB通信接口。
各底层驱动模块在与连接设备(即主机端)正常通信时,在各自所述发送的数据中插入了命令号,其中,为了便于区别不同数据,不同数据的命令号是不同的。例如发送的数据可按发送的先后顺序递增命令号。
S102、判断密码键盘与连接设备的通信是否异常,若是,则密码键盘各底层驱动模块以及连接设备,判断是否需要重发数据。其中,通信异常的类型包括数据发送失败和数据接收超时。而当密码键盘向连接设备发送数据失败,或连接设备接收超时,则密码键盘则需要向连接重新发送数据;而当连接设备发送失败或接收超时,则连接设备需要重新发送数据。
S103、若需要重发数据,则所述底层驱动模块和连接设备,以相同的命令号再次发送原数据。在本技术方案中,数字键盘模块、签字板模块和扫描枪模块的底层驱动模块均支持数据重发机制,并预设有最大重发次数。当各底层驱动模块发送的数据响应超时,而重发的次数未超过最大重发次数,则以相同的命令号,再次发送该数据。
S104、连接设备与底层驱动模块,判断接收到的数据的命令号是否一致,若是,则数据重复接收,丢弃重复接收数据,若否,则接收该数据。
本实施例中,由各个底层驱动重发数据来解决通信异常问题,在重发数据时,各底层驱动模块通过对发送消息引入命令号,同一数据采用相同命令号发送,从而避免对同一条命令重复处理,以及同步通信双方的命令处理状态。本技术方案中,USB通信接口协议只负责数据的发送与接收等基础的数据传输功能,而不负责数据重发的判断,数据的重发以及是否丢弃则于各底层驱动模块自行判断,从而简化通信协议的设计,并且用通过引入命令序列号机制,防止重复接收和发送相同命令,引发通信双方不同步或者重复操作问题。
请参阅图2,为采用上述通信异常恢复方法进行通信时,连接设备发送数据的流程图。连接设备发送数据包括步骤:
S201、连接设备判断发送的数据后的响应是否超时,若否,则通信正常,返回响应,若超时,则转步骤S202;
S202、判断是否支持数据重发,若否,则转步骤S205;若支持数据重发,则转步骤S203;
S203、判断数据重发次数是否已满,若是,转步骤S205,若否,则转步骤S204;
S204、命令号保持不变,重发该数据;数据重发后转回至步骤S201;
S205、更新命令号接着发送下一数据,通信超时退出。
请参阅图3,为采用上述通信异常恢复方法进行通信时,连接设备数据接收响应处理流程。该连接设备数据接收响应处理流程包括:
S301、判断是否支持数据重发机制,若是,则转步骤S302,若否,则转步骤S305;处理响应数据,更新命令号,即命令号加1;
S302、提取数据的命令号,然后转步骤S303;
S303、判断命令号是否有重复,即是否一致,若是,则转步骤S304,若否,则转步骤S305;
S304、数据重复接收,丢弃重复接收的数据;
S305、处理响应数据,更新命令号,即命令号加1。
在上述实施例中,在密码键盘各底层驱动模块所发送的通信数据中,还插入有与各底层驱动模块对应的模块号。例如数字键盘的模块号为1、签字板的模块为2,各底层驱动模块所发送的数据中即包括了命令号,同时又包括了模块号。在一实施例中,底层驱动模块所发送的数据的格式为:协议头+协议长度+模块号+命令号+各模块命令具体业务数据+计数号+校验+协议尾。
所述密码键盘除了向连接设备上传数据,还向连接设备上传事件指令,所述事件指令具体是指,向连接设备上送请求连接设备执行相应操作的指令。在上传事件指令时,在事件指令中插入事件号,所述事件号在作用上,与上述实施例中的命令号相同。请参阅图4,为采用上述通信异常恢复方法进行通信时,连接设备事件接收响应处理流程。该连接设备事件接收响应处理流程与数据接收响应处理流程相似,包括:
S401、判断是否支持重发机制,若是,则转S402,若否,则转S405;
S402、提取事件指令的事件号;而后转步骤S403;
S403、判断事件号是否正确(即事件号是否重复),若错误,则转S406,若正确,则转S404;
S404、返回响应,保存事件号,并转405;
S405、回调事件给上层应用;
S406、事件号所对应数据为重复数据,丢弃重复接收数据。
可见在上述实施例中,在通信数据中插入命令号,在通信异常时,通过密码键盘的各底层驱动模块,判断是否需要重发数据,以及以相同命令号重发同一数据,在连接设备端,通过判断命令号来识别数据是否为重复数据,从而有效解决了密码键盘在短时间通信中断时,重复接收和发送相同数据,引发通信双方不同步或者重复操作问题。
请参阅图5,实施例一种密码键盘USB通信异常恢复系统,该密码键盘USB通信异常恢复系统包括插入单元10、第一判断单元20、第二判断单元30、重发单元40和接收单元50。
所述插入单元10用于密码键盘各底层驱动模块以及连接设备,在各自的通信数据中插入命令号。所述密码键盘包括有数字键盘模块、签字板模块和扫描枪模块,各模块分别包括硬件电路以及对应的底层驱动模块,其中,数字键盘模块用于获取输入的密码等数字信息,所述签字板模块用于获取用户的签名等信息,所述扫描枪用于扫描一维码或二维码待条码信息。各底层驱动模块在与连接设备(即主机端)正常通信时,在各自所述发送的数据中插入了命令号,其中,为了便于区别不同数据,不同数据的命令号是不同的。例如发送的数据可按发送的先后顺序递增命令号。
所述第一判断单元20用于判断密码键盘与连接设备的通信是否异常;所述第二判断单元30用于在第一判断单元判定通信异常时,密码键盘各底层驱动模块以及连接设备,判断是否需要重发数据;其中,通信异常的类型包括数据发送失败和数据接收超时。而当密码键盘向连接设备发送数据失败,或连接设备接收超时,则密码键盘则需要向连接重新发送数据;而当连接设备发送失败或接收超时,则连接设备需要重新发送数据。
所述重发单元40用于在第二判断单元判定需要重发数据时,所述底层驱动模块和连接设备,以相同的命令号再次发送原数据。在本技术方案中,数字键盘模块、签字板模块和扫描枪模块的底层驱动模块均支持数据重发机制,并预设有最大重发次数。当各底层驱动模块发送的数据响应超时,而重发的次数未超过最大重发次数,则以相同的命令号,再次发送该数据。
所述接收单元50用于连接设备与底层驱动模块,判断接收到的数据的命令号是否一致,若是,则数据重复接收,丢弃重复接收数据,若否,则接收该数据。
本实施例中,由各个底层驱动重发数据来解决通信异常问题,在重发数据时,各底层驱动模块通过对发送消息引入命令号,同一数据采用相同命令号发送,从而避免对同一条命令重复处理,以及同步通信双方的命令处理状态。本技术方案可以简化通信协议的设计,并用通过命令序列号机制,防止重复接收和发送相同命令,引发通信双方不同步或者重复操作问题。
所述插入单元还用于在密码键盘各底层驱动模块所发送的通信数据中,插入有与各底层驱动模块对应的模块号。例如数字键盘的模块号为1、签字板的模块为2,各底层驱动模块所发送的数据中即包括了命令号,同时又包括了模块号。在一实施例中,底层驱动模块所发送的数据的格式为:协议头+协议长度+模块号+命令号+各模块命令具体业务数据+计数号+校验+协议尾。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。