蓝牙适配器及其通信方法_6

文档序号:8945481阅读:来源:国知局
19.如权利要求10或13所述的方法,其特征在于,所述蓝牙适配器判断上位机下发的CCID指令的类型时还包括:若所述CCID指令为断开连接指令,则所述蓝牙适配器向与所述蓝牙适配器连接的蓝牙读卡器发送断开连接请求,并向所述上位机返回断开连接指令应答,返回步骤S2。20.如权利要求1所述的方法,其特征在于,所述步骤S2中所述蓝牙适配器判断是否接收到上位机下发的CCID指令之前,还包括:所述蓝牙适配器设置当前模式为USB轮询模式;所述步骤S4中所述蓝牙适配器等待蓝牙读卡器的应答时还包括:所述蓝牙适配器设置当前模式为等待蓝牙应答模式; 所述方法还包括:所述蓝牙适配器接收到与所述蓝牙适配器建立连接的蓝牙读卡器发送的卡插拔消息时产生内部中断,进入内部中断处理流程,检查所述蓝牙适配器的当前模式,若当前模式为USB轮询模式则向上位机发送相应提示信息,退出内部中断处理流程;若当前模式为等待蓝牙应答模式则直接退出内部中断处理流程。21.一种蓝牙适配器,其特征在于,包括: 初始化模块,用于初始化所述蓝牙适配器,向上位机声明所述蓝牙适配器为CCID设备; 指令接收模块,用于接收上位机下发的CCID指令; 指令发送模块,用于当指令接收模块接收到上位机下发的CCID指令时,将上位机下发的CCID指令转换为蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据; 应答接收模块,用于接收蓝牙读卡器的应答,以及在接收超时时向上位机返回错误码; 应答发送模块,用于当所述应答接收模块接收到蓝牙读卡器的应答时,将蓝牙读卡器的应答转换为CCID协议数据,向上位机返回所述CCID协议数据; 事件检查模块,用于在接收到蓝牙读卡器发送的卡插拔消息时向上位机发送提示信息。22.如权利要求21所述的蓝牙适配器,其特征在于,所述指令发送模块具体用于:对上位机下发的CCID指令添加蓝牙协议头得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。23.如权利要求22所述的蓝牙适配器,其特征在于,所述指令发送模块具体用于:判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则对上位机下发的CCID指令添加蓝牙协议头得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;若超过则按照最大传输单元对上位机下发的CCID指令分包,依次对每个指令包添加蓝牙协议头,得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。24.如权利要求21所述的蓝牙适配器,其特征在于,所述指令发送模块具体用于:计算上位机下发的CCID指令的CRC校验位,对上位机下发的CCID指令添加蓝牙协议头和CRC校验位得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。25.如权利要求24所述的蓝牙适配器,其特征在于,所述指令发送模块具体用于:判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则计算上位机下发的CCID指令的CRC校验位,对上位机下发的CCID指令添加蓝牙协议头和CRC校验位得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;若超过则按照最大传输单元对上位机下发的CCID指令分包,计算各指令包的CRC校验位,依次对每个指令包添加蓝牙协议头和CRC校验位,得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。26.如权利要求21所述的蓝牙适配器,其特征在于,所述应答发送模块具体用于:当所述应答接收模块接收到蓝牙读卡器的应答时,获取应答接收模块接收到的应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答接收模块接收到的应答的长度是否合法,若不合法则向上位机返回错误码,若合法则获取所述应答中的有效数据和CRC校验位,根据CRC校验位对有效数据进行CRC校验,若校验未通过则向上位机返回错误码,若校验通过则将有效数据作为CCID协议数据返回给上位机。27.如权利要求21所述的蓝牙适配器,其特征在于,所述应答接收模块具体用于:当所述应答接收模块接收到蓝牙读卡器的应答时,获取应答接收模块接收到的应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答接收模块接收到的应答的长度是否合法,若不合法则向上位机返回错误码,若合法则获取应答中的有效数据,将有效数据作为CCID协议数据返回给上位机。28.如权利要求21所述的蓝牙适配器,其特征在于,还包括: 搜索模块,用于搜索蓝牙读卡器; 连接模块,用于与蓝牙读卡器建立连接; 提示模块,用于提示所述蓝牙适配器与蓝牙读卡器的连接结果。29.如权利要求28所述的蓝牙适配器,其特征在于,还包括检查模块,用于检查是否有已存储的蓝牙读卡器的设备信息,以及在检查到有已存储的蓝牙读卡器的设备信息时获取已存储的蓝牙读卡器的设备信息; 所述搜索模块具体用于:当所述检查模块检查到没有已存储的蓝牙读卡器的设备信息时,搜索蓝牙读卡器; 所述连接模块具体用于:当所述检查模块获取到已存储的蓝牙读卡器的设备信息时,与所述检查模块获取到的设备信息对应的蓝牙读卡器建立连接,当所述搜索模块搜索到蓝牙读卡器时,与所述搜索模块搜索到的蓝牙读卡器建立连接。30.如权利要求21所述的蓝牙适配器,其特征在于,还包括: 指令类型判断模块,用于当指令接收模块接收到上位机下发的CCID指令时,判断上位机下发的CCID指令的类型; 搜索模块,用于当所述指令类型判断模块判断上位机下发的CCID指令为连接指令时,搜索蓝牙读卡器; 连接模块,用于与所述搜索模块搜索到的蓝牙读卡器建立连接; 所述指令发送模块具体用于:当所述指令类型判断模块判断上位机下发的CCID指令不为连接指令时,将上位机下发的CCID指令转换为蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据; 所述应答发送模块还用于:向上位机返回所述蓝牙适配器与蓝牙读卡器的连接结果。31.如权利要求30所述的蓝牙适配器,其特征在于,还包括检查模块,用于当所述指令类型判断模块判断上位机下发的CCID指令为连接指令时,检查是否有已存储的蓝牙读卡器的设备信息,以及在检查到有已存储的蓝牙读卡器的设备信息时获取已存储的蓝牙读卡器的设备信息; 所述搜索模块具体用于:当所述检查模块检查到没有已存储的蓝牙读卡器的设备信息时,搜索蓝牙读卡器; 所述连接模块具体用于:当所述检查模块获取到已存储的蓝牙读卡器的设备信息时,与所述检查模块获取到的设备信息对应的蓝牙读卡器建立连接,当所述搜索模块搜索到蓝牙读卡器时,与所述搜索模块搜索到的蓝牙读卡器建立连接。32.如权利要求29或31所述的蓝牙适配器,其特征在于,所述连接模块还用于所述蓝牙适配器与蓝牙读卡器建立连接之后存储蓝牙读卡器的设备信息。33.如权利要求21所述的蓝牙适配器,其特征在于,还包括: 指令类型判断模块,用于当指令接收模块接收到CCID指令时,判断上位机下发的CCID指令的类型; 搜索模块,用于当所述指令类型判断模块判断上位机下发的CCID指令为搜索指令时,搜索蓝牙读卡器; 返回模块,用于向上位机返回搜索模块搜索到的蓝牙读卡器的设备信息; 获取模块,用于当所述指令类型判断模块判断上位机下发的CCID指令为连接指令时,从连接指令中获取蓝牙读卡器的设备信息; 连接模块,用于与所述获取模块获取到的设备信息对应的蓝牙读卡器建立连接; 所述指令发送模块具体用于:当所述指令类型判断模块判断上位机下发的CCID指令不为搜索指令和连接指令时,将上位机下发的CCID指令转换为蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据; 所述应答发送模块还用于:向上位机返回所述蓝牙适配器与蓝牙读卡器的连接结果。34.如权利要求33所述的蓝牙适配器,其特征在于,所述返回模块具体用于:向上位机返回搜索模块搜索到的蓝牙读卡器的设备名称和MAC地址; 所述获取模块具体用于:当所述指令类型判断模块判断上位机下发的CCID指令为连接指令时,从连接指令中获取蓝牙读卡器的MAC地址; 所述连接模块具体用于,根据所述获取模块获取到的蓝牙读卡器的MAC地址与蓝牙读卡器建立连接。35.如权利要求33所述的蓝牙适配器,其特征在于,所述返回模块具体用于:将所述搜索模块搜索到的蓝牙读卡器的蓝牙读卡器的设备名称和MAC地址对应存储,向上位机返回所述搜索模块搜索到的蓝牙读卡器的设备名称; 所述获取模块具体用于:当所述指令类型判断模块判断上位机下发的CCID指令为连接指令时,从连接指令中获取蓝牙读卡器的设备名称,根据获取到的蓝牙读卡器的设备名称从所述返回模块中查找蓝牙读卡器的MAC地址; 所述连接模块具体用于,根据所述获取模块查找到的蓝牙读卡器的MAC地址与蓝牙读卡器建立连接。36.如权利要求28、30或33所述的蓝牙适配器,其特征在于,所述搜索模块具体用于:发送搜索指令,等待并接收蓝牙设备的应答,根据接收到的蓝牙设备的应答获取蓝牙设备的MAC地址和设备名称,判断获取到的设备名称中是否有满足预设条件的,是则满足预设条件的设备名称对应的蓝牙设备为蓝牙读卡器,否则未搜索到蓝牙读卡器;所述预设条件具体为与预设名称相同或包含预设字段。37.如权利要求28、30或33所述的蓝牙适配器,其特征在于,所述连接模块具体包括: 建立ACL信道连接单元,用于向蓝牙读卡器发送建立ACL信道连接请求,等待蓝牙读卡器的应答,若接收超时则连接失败;若接收到蓝牙读卡器的应答则根据蓝牙读卡器的应答判断是否成功建立ACL信道连接,若成功则从蓝牙读卡器的应答中获取ACL连接句柄,若失败则连接失败; 请求连接单元,用于向蓝牙读卡器发送建立CO信道连接请求,等待蓝牙读卡器的应答,若接收超时则连接失败;若接收到蓝牙读卡器的应答则根据蓝牙读卡器的应答判断是否成功建立CO信道连接,若成功则从蓝牙读卡器的应答中获取信道ID,若失败则连接失败; 信道参数配置单元,用于向蓝牙读卡器发送配置信道参数请求,等待蓝牙读卡器的应答,若接收超时则连接失败;若接收到蓝牙读卡器的应答则根据蓝牙读卡器的应答判断信道参数是否配置成功,若配置失败则连接失败或重新向蓝牙读卡器发送配置信道参数请求,若配置成功则根据蓝牙读卡器的应答判断是否需要调整信道参数,若需要调整则根据蓝牙读卡器的应答调整信道参数,连接成功,若不需要则连接成功。38.如权利要求28、30或33所述的蓝牙适配器,其特征在于,所述连接模块具体包括: 请求连接单元,用于向蓝牙读卡器发送连接请求,等待蓝牙读卡器的应答,若接收超时则连接失败;若接收到蓝牙读卡器的应答则根据蓝牙读卡器的应答判断是否连接成功,是则从蓝牙读卡器的应答中获取连接句柄,否则连接失败; 服务匹配单元,用于向蓝牙读卡器发送主服务通用唯一标识码,等待读卡器的应答,若接收超时则连接失败;若接收到蓝牙读卡器的应答则根据蓝牙读卡器的应答判断服务是否匹配,若不匹配则连接失败; 特性值句柄获取单元,用于当所述服务匹配单元判断服务匹配时,向蓝牙读卡器发送获取特性值句柄请求,等待蓝牙读卡器的应答,若接收超时则连接失败,若接收到蓝牙读卡器的应答则从蓝牙读卡器的应答中获取特性值句柄,连接成功。39.如权利要求30或33所述的蓝牙适配器,其特征在于,还包括断开连接模块,用于当所述指令类型判断模块判断接收到的CCID指令为断开连接指令时,向与所述蓝牙适配器连接的蓝牙读卡器发送断开连接请求,向所述上位机返回断开连接指令应答。40.如权利要求21所述的蓝牙适配器,其特征在于,所述应答接收模块还用于:在接收蓝牙读卡器的应答之前设置蓝牙适配器的当前模式为等待蓝牙应答模式,以及接收与所述蓝牙适配器建立连接的蓝牙读卡器发送的卡插拔消息; 所述指令接收模块还用于:在接收上位机下发的CCID指令之前设置蓝牙适配器的当前模式为USB轮询模式; 所述蓝牙适配器还包括中断处理模块,用于当所述应答接收模块接收到卡插拔消息时产生内部中断,进入内部中断处理流程,检查所述蓝牙适配器的当前模式,若当前模式为USB轮询模式则向上位机发送相应提示信息,退出内部中断处理流程;若当前模式不为等待蓝牙应答模式则直接退出内部中断处理流程。
【专利摘要】本发明公开了一种蓝牙适配器及其通信方法,属于蓝牙通信领域。所述方法包括蓝牙适配器初始化,向上位机声明为CCID设备,接收上位机下发的CCID指令,将所述CCID指令转换为蓝牙协议数据后发送给蓝牙读卡器,接收蓝牙读卡器返回的应答,将蓝牙读卡器返回的应答转换为CCID协议数据后返回给上位机;并且在接收到蓝牙读卡器发送的卡插拔消息时向上位机发送提示信息。所述蓝牙适配器包括初始化模块、指令接收模块、指令发送模块、应答接收模块、应答发送模块和事件检查模块。本发明的有益效果在于无需在终端上安装蓝牙驱动,使用方便,而且能够避免蓝牙驱动不稳定带来的问题。
【IPC分类】H04L29/06, H04B5/02
【公开号】CN105162498
【申请号】CN201510628156
【发明人】陆舟, 于华章
【申请人】飞天诚信科技股份有限公司
【公开日】2015年12月16日
【申请日】2015年9月28日
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1