蓝牙适配器及其通信方法

文档序号:8945481阅读:631来源:国知局
蓝牙适配器及其通信方法
【技术领域】
[0001]本发明涉及蓝牙通信领域,尤其涉及一种蓝牙适配器及其通信方法。
【背景技术】
[0002]蓝牙(Bluetooth)是一种无线技术标准,使用2.4—2.485GHz的ISM波段的UHF无线电波,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。现有技术中,终端可以通过CCID接口采用CCID协议与读卡器进行通信,但是要实现不具备蓝牙功能的终端与蓝牙读卡器之间的通信,就需要使用蓝牙适配器,而不具备蓝牙功能的终端又不能使用CCID协议与蓝牙适配器直接通信,需要在不具备蓝牙功能的终端上安装蓝牙驱动,对于用户来说,使用起来极为不方便,且蓝牙驱动的稳定性不好,影响用户体验。

【发明内容】

[0003]本发明的目的是克服现有技术的缺陷,提供一种蓝牙适配器及其通信方法。
[0004]本发明方法是通过下述技术方案实现的:
[0005]—方面本发明提供一种蓝牙适配器的通信方法,所述方法包括:
[0006]步骤S1、蓝牙适配器初始化,向上位机声明为CCID设备;
[0007]步骤S2、所述蓝牙适配器判断是否接收到上位机下发的CCID指令,是则执行步骤S3,否则重新执行步骤S2;
[0008]步骤S3、所述蓝牙适配器将上位机下发的CCID指令转换为蓝牙协议数据,发送所述蓝牙协议数据给蓝牙读卡器;
[0009]步骤S4、所述蓝牙适配器等待蓝牙读卡器的应答,若接收到蓝牙读卡器返回的应答则将蓝牙读卡器返回的应答转换为CCID协议数据,向上位机发送所述CCID协议数据,返回步骤S2,若接收超时则向上位机返回错误码,返回步骤S2 ;
[0010]所述方法还包括:当所述蓝牙适配器接收到蓝牙读卡器发送的卡插拔消息时向上位机发送提示信息。
[0011 ] 进一步地,所述步骤S3具体包括:
[0012]步骤al、所述蓝牙适配器对上位机下发的CCID指令添加蓝牙协议头得到蓝牙协议数据;
[0013]步骤a2、所述蓝牙适配器向蓝牙读卡器发送所述蓝牙协议数据;
[0014]更进一步地,所述步骤S3还包括:
[0015]步骤a0、所述蓝牙适配器判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则执行所述步骤al,若超过则根据最大传输单元对上位机下发的CCID指令分包,依次对每个指令数据包添加蓝牙协议头得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。
[0016]或者,进一步地,所述步骤S3具体包括:
[0017]步骤bl、所述蓝牙适配器计算上位机下发的CCID指令的CRC校验位,对上位机下发的CCID指令添加蓝牙协议头和所述CRC校验位,得到蓝牙协议数据;
[0018]步骤b2、所述蓝牙适配器向蓝牙读卡器发送所述蓝牙协议数据;
[0019]更进一步地,所述步骤S3还包括:
[0020]步骤b0、所述蓝牙适配器判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则执行所述步骤bl,若超过则根据最大传输单元对上位机下发的CCID指令分包,分别计算每个指令数据包的CRC校验位,依次对每个指令数据包添加蓝牙协议头和CRC校验位得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。
[0021 ] 进一步地,所述步骤S4具体包括:
[0022]步骤Cl、所述蓝牙适配器等待接收蓝牙读卡器返回的应答,若接收到则执行步骤c2,若接收超时则向上位机返回错误码,返回步骤S2 ;
[0023]步骤c2、所述蓝牙适配器获取应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答的长度是否合法,若合法则执行步骤c3,若不合法则向上位机返回错误码,返回步骤S2 ;
[0024]步骤c3、所述蓝牙适配器获取应答中的有效数据和CRC校验位,根据CRC校验位对有效数据进行CRC校验,若校验通过则将有效数据返回给上位机,返回步骤S2,若校验未通过则向上位机返回错误码,返回步骤S2。
[0025]或者,进一步地,所述步骤S4具体包括:
[0026]步骤dl、所述蓝牙适配器等待接收蓝牙读卡器返回的应答,若接收到则执行步骤d2,若接收超时则向上位机返回错误码,返回步骤S2 ;
[0027]步骤d2、所述蓝牙适配器获取应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答的长度是否合法,若合法则执行步骤d3,若不合法则向上位机返回错误码,返回步骤S2 ;
[0028]步骤d3、所述蓝牙适配器获取应答中的有效数据,将有效数据返回给上位机,返回步骤S2。
[0029]另一方面,本发明提供一种蓝牙适配器,具体包括:
[0030]初始化模块,用于初始化所述蓝牙适配器,向上位机声明所述蓝牙适配器为CCID设备;
[0031]指令接收模块,用于接收上位机下发的CCID指令;
[0032]指令发送模块,用于当指令接收模块接收到上位机下发的CCID指令时,将上位机下发的CCID指令转换为蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;
[0033]应答接收模块,用于接收蓝牙读卡器的应答,以及在接收超时时向上位机返回错误码;
[0034]应答发送模块,用于当所述应答接收模块接收到蓝牙读卡器的应答时,将蓝牙读卡器的应答转换为CCID协议数据,向上位机返回所述CCID协议数据;
[0035]事件检查模块,用于在接收到蓝牙读卡器发送的卡插拔消息时向上位机发送提示
?目息O
[0036]进一步地,所述指令发送模块具体用于:对上位机下发的CCID指令添加蓝牙协议头得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;
[0037]更进一步地,所述指令发送模块具体用于:判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则对上位机下发的CCID指令添加蓝牙协议头得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;若超过则按照最大传输单元对上位机下发的CCID指令分包,依次对每个指令包添加蓝牙协议头,得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。
[0038]或者,进一步地,所述指令发送模块具体用于:计算上位机下发的CCID指令的CRC校验位,对上位机下发的CCID指令添加蓝牙协议头和CRC校验位得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数;
[0039]更进一步地,所述指令发送模块具体用于:判断上位机下发的CCID指令的长度是否超过最大传输单元,若未超过则计算上位机下发的CCID指令的CRC校验位,对上位机下发的CCID指令添加蓝牙协议头和CRC校验位得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据;若超过则按照最大传输单元对上位机下发的CCID指令分包,计算各指令包的CRC校验位,依次对每个指令包添加蓝牙协议头和CRC校验位,得到蓝牙协议数据,向蓝牙读卡器发送所述蓝牙协议数据。
[0040]进一步地,所述应答发送模块具体用于:当所述应答接收模块接收到蓝牙读卡器的应答时,获取应答接收模块接收到的应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答接收模块接收到的应答的长度是否合法,若不合法则向上位机返回错误码,若合法则获取所述应答中的有效数据和CRC校验位,根据CRC校验位对有效数据进行CRC校验,若校验未通过则向上位机返回错误码,若校验通过则将有效数据作为CCID协议数据返回给上位机。
[0041]或者,进一步地,所述应答接收模块具体用于:当所述应答接收模块接收到蓝牙读卡器的应答时,获取应答接收模块接收到的应答中的HCI层有效载荷和L2CAP层有效载荷,根据获取到的HCI层有效载荷和L2CAP层有效载荷判断应答接收模块接收到的应答的长度是否合法,若不合法则向上位机返回错误码,若合法则获取应答中的有效数据,将有效数据作为CCID协议数据返回给上位机。
[0042]本发明的有益效果在于:通过本发明提供的蓝牙适配器可以实现不具备蓝牙功能的终端与蓝牙读卡器之间的通信,通信过程中终端可以采用CCID协议与蓝牙适配器进行通信,无需在终端上安装蓝牙驱动,可以提高使用的方便性,避免蓝牙驱动不稳定带来的问题。
【附图说明】
[0043]为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明实施例1提供的一种蓝牙适配器的通信方法的流程图;
[0045]图2为本发明实施例1中提供的蓝牙适配器与蓝牙读卡器建立连接的具体方法流程图;
[0046]图3为本发明实施例1中提供的蓝牙适配器与蓝牙读卡器建立连接的另一具体方法流程图;
[0047]图4为本发明实施例1中提供的蓝牙适配器搜索蓝牙读卡器的具体流程图;
[0048]图5为本发明实施例2提供的一种蓝牙适配器的通信方法的流程图;
[0049]图6为本发明实施例3提供的一种蓝牙适配器的通信方法的流程图;
[0050]图7为本发明实施例4提供的一种蓝牙适配器的结构方框图。
【具体实施方式】
[0051]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052]实施例1
[0053]本实施例提供一种蓝牙适配器的通信方法,本实施例中的蓝牙适配器用于与上位机和蓝牙读卡器进行通信,本实施例中的蓝牙适配器与上位机采用CCID协议进行通信,与蓝牙读卡器采用蓝牙协议进行通信,如图1所示,所述方法具体包括:
[0054]步骤101、蓝牙适配器初始化,向上位机声明为CCID设备,搜索蓝牙读卡器,与蓝牙读卡器建立连接,提示连接结果;
[0055]本实施例中,蓝牙适配器搜索蓝牙读卡器之前,还可以包括:蓝牙适配器检查是否有已存储的蓝牙读卡器的设备信息,若有则获取已存储的蓝牙读卡器的设备信息,根据获取到的设备信息与蓝牙读卡器建立连接,提示连接结果;若没有则搜索蓝牙读卡器,与搜索到的蓝牙读卡器建立连接,提示连接结果;相应地,当蓝牙适配器与蓝牙读卡器建立连接以后还包括:蓝牙适配器存储蓝牙读卡器的设备信息。
[0056]本实施例中,如图2所示,蓝牙适配器搜索蓝牙读卡器可以具体包括:
[0057]步骤1-1、蓝牙适配器发送搜索指令;
[0058]步骤1-2、蓝牙适配器等待蓝牙设备应答,若接收到蓝牙设备的应答则执行步骤1-3,若接收超时则执行步骤1-4 ;
[0059]步骤1-3、蓝牙适配器从蓝牙设备的应答中获取蓝牙设备的MAC地址,返回步骤1-2 ;
[0060]例如,本实施例中,蓝牙设备的应答为Ox 04 02 OF 01 EB 6A IA 52 DE 8C 0102 04 04 24 61 6D E5 (小端存储方式),其中第5_10个字节为蓝牙设备的MAC地址,蓝牙设备的MAC地址具体为0x8C DE 52 IA 6A EB0
[0061]步骤1-4、蓝牙适配器判断是否有获取到的MAC地址,是则执行步骤1-5,否则未搜索到蓝牙读卡器;
[0062]步骤1-5、蓝牙适配器向MAC地址对应的蓝牙设备发送获取设备名称请求,接收蓝牙设备的应答,获取蓝牙设备应答中的蓝牙设备的设备名称,将蓝牙设备的设备名称与蓝牙设备的MAC地址对应存储;
[0063]例如,MAC地址为0x8C DE 52 IA 6A EB,蓝牙适配器向MAC地址对应的蓝牙设备发送的获取设备名称请求为0x01 19 04 OA EB 6A IA 52 DE 8C 01 00 D3 8C ;蓝牙设备的应答为 Ox 04 07 FF 00 EB 6A IA 52 DE 8C 46 54 5F 5F 38 43 44 45 35 32 31 4136 41 45 42 00 00 00 00...(省略部分为228个字节的0x00),其中第11至第26个字节为蓝牙设备的设备名称,表示蓝牙设备的设备名称为FT—8CDE521A6AEB。
[0064]步骤1-6、蓝牙适配器判断获取到的设备名称中是否有满足预设
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1