本发明涉及通信技术领域,特别涉及一种移动终端及其处理蓝牙数据的方法。
背景技术:
在现有技术中,移动终端作为主设备在与蓝牙设备的通讯过程中,移动终端需要向蓝牙设备发送下行指令,之后等待接收来自蓝牙设备返回的上行应答,从而完成和蓝牙设备的一次通讯。因此,在一些应用场景下,移动终端为获取蓝牙设备返回的某个数据时,可能需要向蓝牙设备发送多个下行指令与蓝牙设备进行多次通讯才能获取到相应数据(例如:移动终端向蓝牙pos发送用于获取用户按键信息的下行指令后,蓝牙pos接收到相应下行指令并向移动终端返回已接收到下行指令的上行应答后,继续等待用户按键,而移动终端为获取蓝牙pos返回的用户按键的信息,则需不间断的向蓝牙pos发送下行查询指令并与蓝牙pos进行交互来判断蓝牙设备是否已获取到用户按键信息),由此,会使移动终端的耗电迅速。
技术实现要素:
本发明提供了一种移动终端及其处理蓝牙数据的方法,解决了上述技术问题。
本发明提供了一种移动终端处理蓝牙数据的方法,所述移动终端包括数据处理模块、应用模块和操作系统,所述数据处理模块的接收缓冲区用于存放所述数据处理模块接收到的来自所述操作系统的蓝牙设备的蓝牙数据,所述方法包括:
步骤a1:所述数据处理模块从接收缓冲区中的蓝牙数据中获取合法的上行数据;
步骤a2:所述数据处理模块判断所述上行数据的类型,若所述上行数据为上行应答,则将所述上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区,移除所述接收缓冲区中的上行应答;若上行数据为上行指令,则根据所述上行指令得到上行指令结果,将所述上行指令结果发送给所述应用模块,移除所述接收缓冲区中的上行指令。
本发明还提供了一种移动终端,包括数据处理模块、应用模块和操作系统;
所述数据处理模块包括:第一获取子模块、第一判断子模块、第一存储子模块、第一移除子模块、第二获取子模块、第一发送子模块、第二移除子模块和第二存储子模块;
所述第二存储子模块用于将所述数据处理模块接收到的来自所述操作系统的蓝牙设备的蓝牙数据放入到接收缓冲区中;
所述第一获取子模块,用于从所述接收缓冲区中的蓝牙数据中获取合法的上行数据;
所述第一判断子模块,用于判断所述第一获取子模块获取到的上行数据的类型;
所述第一存储子模块,用于当所述第一判断子模块判断出所述上行数据为上行应答后,将所述上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区;
所述第一移除子模块,用于当所述第一存储子模块将所述上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区之后,移除所述接收缓冲区中的上行应答;
所述第二获取子模块,用于当所述第一判断子模块判断出所述上行数据为上行指令后,根据所述上行指令得到上行指令结果;
所述第一发送子模块,用于将所述第二获取子模块得到的所述上行指令结果发送给所述应用模块;
所述第二移除子模块,用于当所述第一发送子模块将所述第二获取子模块得到的所述上行指令结果发送给所述应用模块之后,移除所述接收缓冲区中的上行指令。
本发明的有益效果:本发明提供的一种移动终端及其处理蓝牙数据的方法,使移动终端在与同一蓝牙设备进行通讯时,既能主动向蓝牙设备发送下行指令,接收来自蓝牙设备的上行应答,也能被动的响应来自蓝牙设备的上行指令并与蓝牙设备进行通讯,能够保证移动终端在数据处理过程中数据的准确性和可靠性,达到降低移动终端的耗电量和优化移动终端性能的有益效果。
附图说明
图1为本发明实施例1提供了一种移动终端处理蓝牙数据的方法的流程图;
图2-1、图2-2和图2-3为本发明实施例2提供的一种移动终端处理蓝牙数据的方法的流程图;
图3为本发明实施例2提供的一种移动终端处理蓝牙数据的方法中的步骤302的细化图;
图4本发明实施例3提供的一种移动终端的结构方框图。
具体实施方法
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供了一种移动终端处理蓝牙数据的方法,其中,移动终端中包括数据处理模块、应用模块和操作系统,其中数据处理模块和应用模块可以设置在移动终端的一个应用程序上。移动终端的操作系统可以为android或者ios操作系统。所述方法如图1所示,包括:
步骤a1:数据处理模块从接收缓冲区中的蓝牙数据中获取合法的上行数据;
本实施例中,数据处理模块的接收缓冲区用于存放数据处理模块接收到的来自操作系统的蓝牙设备的蓝牙数据。
优选地,数据处理模块将接收到的来自操作系统的蓝牙设备的蓝牙数据串行存放到接收缓冲区中。
步骤a1具体包括:
步骤a11:数据处理模块获取接收缓冲区中的第一位置上的数据,判断接收缓冲区中的第一位置上的数据是否符合预设协议的协议头,如果是,则执行步骤a12;否则,移除接收缓冲区中的第一位置上的数据,返回步骤a11;
优选地,第一位置上的数据为接收缓冲区数据中的第一个字节上的数据。
步骤a12:数据处理模块从接收缓冲区中获取当前待验证数据和当前校验位数据,判断当前待验证数据和当前校验位数据是否符合预设协议,如果是,则将接收缓冲区中的第一位置上的数据到当前检验位数据之间的数据作为合法的上行数据,执行步骤a2;否则,移除接收缓冲区中的第一位置上的数据,返回步骤a11。
本实施例中,移除接收缓冲区中的第一位置上的数据之后,返回步骤a11之前,数据处理模块将接收缓冲区中的第一位置之后的下一个位置上的数据作为第一位置上的数据。
步骤a2:数据处理模块判断上行数据的类型,若上行数据为上行应答,则将上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区,移除接收缓冲区中的上行应答;若上行数据为上行指令,则根据上行指令得到上行指令结果,将上行指令结果发送给应用模块,移除接收缓冲区中的上行指令。
本实施例中,还可以包括:数据处理模块接收来自操作系统的蓝牙设备的蓝牙数据,并将其放入到接收缓冲区中;
相应地,步骤a1之前还包括:
步骤a0:数据处理模块判断接收缓冲区中是否存在数据,如果是,则执行步骤a1;否则,当数据处理模块将蓝牙数据放入到接收缓冲区中后,返回步骤a0或返回步骤a1;
步骤a2中,移除接收缓冲区中的上行应答后,返回步骤a0;
步骤a2中,移除接收缓冲区中的上行指令后,返回步骤a0。
进一步地,步骤a1具体为:数据处理模块从接收缓冲区中的第一位置开始获取上行数据,判断是否获取到合法的上行数据,如果是,则执行步骤a2;否则,移除接收缓冲区中的第一位置上的数据,返回步骤a0。
本实施例中,步骤a1之前还可以包括:数据处理模块接收来自操作系统的蓝牙设备的蓝牙数据,并将其放入到接收缓冲区中。
进一步地,步骤a1具体为:数据处理模块获取接收缓冲区中的上行数据,判断是否获取到合法的上行数据,如果是,则执行步骤a2;否则,移除接收缓冲区中的数据。
本实施例中,数据处理模块接收来自操作系统的蓝牙设备的蓝牙数据,具体为:数据处理模块通过第一回调函数接收来自操作系统的蓝牙设备的蓝牙数据;
将上行指令结果发送给应用模块,具体为:数据处理模块通过第二回调函数将上行指令结果发送给应用模块。
本实施例中,所述方法中还可以包括:
步骤s1:数据处理模块等待接收来自应用模块的应用数据,若接收到来自应用模块的发送下行指令请求,则执行步骤s2;若接收到来自应用模块的发送下行应答请求,则执行步骤s3;
步骤s2:数据处理模块根据发送下行指令请求得到下行指令,将下行指令通过操作系统发送给蓝牙设备,判断上行应答缓冲区中是否有数据,如果是,则根据上行应答缓冲区中的数据得到上行应答结果,并上行应答结果返回给应用模块,返回步骤s1;否则,报错;
步骤s2中,通过操作系统向蓝牙设备发送下行指令之前还可以包括:清空上行应答缓冲区。
步骤s3:数据处理模块根据发送下行应答请求得到下行应答,将下行应答通过操作系统发送给蓝牙设备,返回步骤s1。
进一步地,当数据处理模块接收到来自应用模块的发送下行指令请求之前,还包括:应用模块向数据处理模块发送发送下行指令请求;当数据处理模块将上行指令结果返回给应用模块后,还包括:应用模块向数据处理模块发送发送下行应答请求。
本实施例中,步骤a2中判断上行数据的类型后,还可以包括:若上行数据为上行通知,则根据上行通知得到上行通知结果,将上行通知结果发送给应用模块,移除接收缓冲区中的上行通知。
其中,将上行通知结果发送给应用模块,具体为:数据处理模块通过第三回调函数将上行通知结果发送给应用模块。
其中,根据上行通知得到上行通知结果具体为:数据处理模块获取上行通知中的有效数据,将上行通知中的有效数据作为上行通知结果。
本实施例中,步骤a2中判断上行数据的类型后,还可以包括:若上行数据为上行延时申请,则将上行延时申请放入到上行延时申请缓冲区中或者根据上行延时申请得到上行延时时间,将上行延时申请时间放入到上行延时缓冲区中;移除接收缓冲区中的上行延时申请;对应地:
步骤s2中数据处理模块将下行指令通过操作系统发送给蓝牙设备之后,判断上行应答缓冲区中是否有数据之前,还包括:
步骤t1:数据处理模块根据超时时间判断是否超时,如果是,则向应用模块返回超时错误;否则,执行步骤t2;
步骤t2:数据处理模块判断上行延时缓冲区中是否存在数据,如果是,则执行步骤t3;否则,数据处理模块判断上行应答缓冲区中是否有数据,继续;
步骤t3:数据处理模块根据上行延时缓冲区中的数据得到上行延时时间,根据上行延时时间重置超时时间,清空上行延时缓冲区,返回步骤t1。
本实施例中,移动终端可以根据蓝牙设备发送的上行延时申请重置获取上行应答的超时时间,增强移动设备的应用性。
本实施例中,步骤s1中还可以包括:若接收来自应用模块的发送下行延时申请请求后,数据处理模块根据发送下行延时申请请求得到下行延时申请,将下行延时申请通过操作系统发送给蓝牙设备,返回步骤s1。
进一步地,在应用模块接收到上行指令结果之后,向数据处理模块发送发送下行应答请求之前,还包括向数据处理模块发送发送下行延时申请请求。
本实施例中,数据处理模块根据发送下行指令请求得到下行指令,可以具体为:数据处理模块从发送下行指令请求中得到下行指令有效数据,根据预设协议组织包括下行指令有效数据的下行指令;数据处理模块根据发送下行应答请求得到下行应答,可以具体为:数据处理模块从发送下行应答请求中得到下行应答有效数据,根据预设协议组织包括下行应答有效数据的下行应答;根据上行指令得到上行指令结果,可以具体为:数据处理模块获取上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果;根据上行应答缓冲区中的数据得到上行应答结果,可以具体为:数据处理模块将上行应答中的上行应答有效数据作为上行应答结果。
本实施例中,数据处理模块根据发送下行指令请求得到下行指令,还可以具体为:数据处理模块从发送下行指令请求中得到下行指令;数据处理模块根据发送下行应答请求得到下行应答,还可以具体为:数据处理模块从发送下行应答请求中得到下行应答;根据上行指令得到上行指令结果,还可以具体为:数据处理模块将上行指令作为上行指令结果;若步骤a2中数据处理模块将上行应答放入到上行应答缓冲区中,则根据上行应答缓冲区中的数据得到上行应答结果还可以具体为:数据处理模块将上行应答缓冲区中的上行应答作为上行应答结果。
本实施例提供了的一种移动终端处理蓝牙数据的方法,使移动终端在和同一蓝牙设备进行通讯时,既能主动向蓝牙设备发送下行指令,接收来自蓝牙设备的上行应答,也能被动的响应来自蓝牙设备的上行指令并与蓝牙设备进行通讯,能够保证移动终端在数据处理过程中数据的准确性和可靠性,达到降低移动终端的耗电量和优化移动终端性能的有益效果。
实施例2
本实施例提供的一种移动终端处理蓝牙数据的方法,包括如图2-1、图2-2和图2-3所示的操作:
本实施例中,移动终端中包括应用模块、数据处理模块和操作系统,其中数据处理模块和应用模块可以设置在移动终端的一个应用程序上。移动终端的操作系统可以为android或者ios操作系统。
本实施例提供的一种移动终端处理蓝牙数据的方法中,数据处理模块分别在数据接收线程中等待接收来自操作系统的蓝牙数据,若接收到来自操作系统的蓝牙设备的蓝牙数据,则执行如图2-1中步骤101所示的操作;在数据发送线程等待接收来自应用模块的应用数据,执行如图2-2中所示的操作;在数据处理线程中执行如图2-3所示的操作。
步骤101:数据处理模块使用串行队列将来自蓝牙设备的蓝牙数据添加到接收缓冲区中,置位数据添加标志位。
本实施例中,具体地,若数据处理模块在数据接收线程中通过自身的第一回调函数接收到来自操作系统的蓝牙设备的蓝牙数据,则执行步骤101;
例如:第一回调函数为:voidcallback(unsignedchar*data,unsignedintdatalen);其中参数data中包括来自操作系统的蓝牙设备的蓝牙数据;
需说明的是,在数据处理模块通过自身的第一回调函数接收到来自操作系统的蓝牙设备的蓝牙数据之前,还包括:数据处理模块向操作系统注册第一回调函数,相应地:当操作系统接收到来自蓝牙设备的蓝牙数据后,操作系统通过第一回调函数将接收到的来自蓝牙设备的蓝牙数据发送给数据处理模块。
更加具体地,在数据处理模块通过自身的第一回调函数接收到来自蓝牙设备的蓝牙数据之前,数据处理模块在操作系统的系统接收函数中注册第一回调函数;当操作系统的系统接收函数接收到来自蓝牙设备的蓝牙数据后,操作系统通过第一回调函数将接收到的来自蓝牙设备的蓝牙数据发送给数据处理模块。
其中,若操作系统的为android系统,则系统接收函数可以具体为:publicvoidoncharacteristicchanged(bluetoothgattgatt,bluetoothgattcharacteristiccharacteristic);
若操作系统的为ios系统,则系统接收函数可以具体为:-
(void)peripheral:(cbperipheral*)peripheral
didupdatevalueforcharacteristic:(cbcharacteristic*)characteristicerror:(nullablenserror*)error;
步骤201:数据处理模块等待接收来自应用模块的应用数据;若接收到来自应用模块的发送下行指令请求,则执行步骤202;若接收到来自应用模块的发送下行应答请求,则执行步骤211;
具体地,数据处理模块在数据发送线程中等待接收来自应用模块的数据:若在数据发送线程中通过自身的第一接收接口接收到来自应用模块的发送下行指令请求,则执行步骤202;若在数据发送线程中通过自身的第二接收接口接收到来自应用模块的发送下行应答请求,则执行步骤211。
例如:第一接收接口为:unsignedintsendorder
第二接收接口为unsignedintsendask
步骤202:数据处理模块判断下行指令互斥锁是否上锁,如果是,则返回步骤202;否则,将下行指令互斥锁上锁,执行步骤203;
步骤203:数据处理模块根据发送下行指令请求得到下行指令;
具体地,数据处理模块从发送下行指令请求中得到下行指令有效数据,根据预设协议组织包括下行指令有效数据的下行指令。
更加具体地,数据处理模块从发送下行指令请求中得到下行指令有效数据,根据预设协议将第六预设值设置在下行指令中的第一个字节上,将第四预设值设置在下行指令的第二字节上,根据下行指令有效数据的长度设置下行指令的第三字节和第四字节上的数据,将下行指令有效数据设置在第四字节之后,根据预设算法对下行指令中第二字节到下行指令有效数据之间的数据进行计算得到下行指令校验值,将下行指令校验值设置在下行指令有效数据之后,得到包括下行指令有效数据的下行指令。
例如:数据处理模块从发送下行指令请求中得到下行指令有效数据0102,根据预设协议将第六预设值a5设置在下行指令中的第一个字节上,将第四预设值02设置在下行指令的第二字节上,根据下行指令有效数据的长度2个字节设置下行指令的第三字节和第四字节上的数据,将下行指令有效数据设置在第四字节之后,根据预设算法对下行指令中第二字节到下行指令有效数据之间的数据“0200020102”进行计算得到下行指令校验值03,将下行指令校验值设置在下行指令有效数据之后,得到包括下行指令有效数据的下行指令“a5020002010203”。
步骤204:数据处理模块判断上行应答缓冲区中是否有数据,如果是,则执行步骤205;否则,通过操作系统向蓝牙设备发送下行指令,执行步骤206;
本实施例中,通过操作系统向蓝牙设备发送下行指令,具体为:使用串行队列通过操作系统向蓝牙设备发送下行指令。
步骤205:数据处理模块清空上行应答缓冲区中的数据,通过操作系统向蓝牙设备发送下行指令,执行步骤206;
具体地,数据处理模块清空上行应答缓冲区中的数据,调用操作系统的系统发送函数向蓝牙设备发送下行指令。
例如:数据处理模块清空上行应答缓冲区中的数据,调用android操作系统的系统第一发送函数publicbooleansetvalue(byte[]value)将下行指令放入到特征中,调用系统第二发送函数publicboolean
writecharacteristic(bluetoothgattcharacteristiccharacteristic)将特征中的下行指令发送给蓝牙设备。
又例如:数据处理模块清空上行应答缓冲区中的数据,调用ios系统的系统发送函数(void)writevalue:(nsdata*)dataforcharacteristic:(cbcharacteristic*)characteristictype:(cbcharacteristicwritetype)type;向蓝牙设备发送下行指令。
步骤206:数据处理模块根据超时时间判断是否超时,如果否,则执行步骤207:如果是,则向应用模块返回超时错误,返回步骤201;
在第一次执行步骤206之前,还包括:数据处理模块从发送下行指令请求中得到应答超时时间,根据应答超时时间设置自身的超时时间。
步骤207:数据处理模块判断上行延时申请缓冲区中是否存在数据,如果是,则执行步骤210;否则,执行步骤208;
步骤208:数据处理模块判断上行应答缓冲区中是否有数据,如果是,则执行步骤209;否则,返回步骤206;
步骤209:数据处理模块根据上行应答缓冲区中的数据得到上行应答结果,并将上行应答结果返回给应用模块,解锁下行指令互斥锁,返回步骤201。
本实施例中,若步骤304中,数据处理模块将上行应答中的上行应答有效数据放入到上行应答缓冲区中,则步骤209具体为:数据处理模块将上行应答缓冲区中的数据作为上行应答结果,并将上行应答结果返回给应用模块,解锁下行指令互斥锁,返回步骤201。
若步骤304中,数据处理模块将上行应答放入到上行应答缓冲区中,则步骤209可以具体为:数据处理模块解析上行应答缓冲区中的上行应答,得到上行应答中的上行应答有效数据,将上行应答中的上行应答有效数据作为上行应答结果,并将上行应答结果返回给应用模块,解锁下行指令互斥锁,返回步骤201。
步骤210:数据处理模块根据上行延时申请缓冲区中的数据得到上行延时申请时间,根据上行延时申请时间重置超时时间,清空上行延时申请缓冲区,返回步骤206;
步骤211:数据处理模块根据发送下行应答请求得到下行应答,通过操作系统将下行应答发送给蓝牙设备,返回步骤201。
具体地,数据处理模块从发送下行应答请求中得到下行应答有效数据,根据预设协议组织包括下行应答有效数据的下行应答,调用操作系统的系统发送函数将下行应答发送给蓝牙设备。
具体地,数据处理模块从发送下行应答请求中得到下行应答有效数据,根据预设协议将第七预设值设置在下行应答中的第一个字节上,将第四预设值设置在下行应答的第二字节上,将下行应答有效数据的长度设置在下行应答的第三字节和第四字节上,将下行应答有效数据设置在第四字节之后,根据预设算法对下行应答中第二字节到下行应答有效数据之间的数据进行计算得到下行应答校验值,将下行应答校验值设置在下行应答有效数据之后,得到包括下行应答有效数据的下行应答,数据处理模块使用串行队列向蓝牙设备发送下行应答。
例如:数据处理模块从发送下行应答请求中得到下行应答有效数据04,根据预设协议将第七预设值3c设置在下行应答中的第一个字节上,将第四预设值02设置在下行应答的第二字节上,根据下行应答有效数据的长度1个字节设置下行应答的第三字节和第四字节上的数据,将下行应答有效数据设置在第四字节之后,根据预设算法对下行应答中第二字节到下行应答有效数据之间的数据“02000104”进行计算得到下行应答校验值07,将下行应答校验值设置在下行应答有效数据之后,得到包括下行应答有效数据的下行应答“3c0200010407”,数据处理模块使用串行队列向蓝牙设备发送下行应答。
步骤301:数据处理模块判断接收缓冲区中是否存在数据,如果是,则执行步骤302,否则,执行步骤308;
步骤302:数据处理模块从接收缓冲区中的第一位置上开始获取上行数据,判断是否获取到合法的上行数据,如果是,则执行步骤303;否则,移除接收缓冲区中的第一位置上的数据,返回步骤301;
优选地,接收缓冲区中的第一位置的数据为接收缓冲区中的第一字节上的数据。
步骤302如图3所示,具体包括:
步骤3021:数据处理模块获取接收缓冲区中的第一字节上的数据,判断接收缓冲区中的数据中的第一个字节上的数据是否符合预设协议的协议头,如果是,则执行步骤3022;否则,移除接收缓冲区中的数据中的第一个字节上的数据,返回步骤301;
本实施例中,预设协议规定的上行数据的协议头的第一个字节上的数据为第一预设值或第二预设值或第三预设值。优选地,第一预设值为5a;第二预设值为c3;第三预设值为53。
具体地,数据处理模块获取接收缓冲区中的第一字节上的数据,判断接收缓冲区中的数据中的第一个字节上的数据是否为第一预设值或第二预设值或第三预设值,如果是,则判断出上行数据中的第一个字节上的数据符合预设协议的协议头;否则,判断出上行数据中的第一个字节上的数据不符合预设协议的协议头。
例如:数据处理模块判断接收缓冲区中的数据“005a02000104075af2b84a”中的第一个字节上的数据“00”,则判断出上行数据中的第一个字节上的数据不符合预设协议的协议头,移除接收缓冲区中的数据“005a02000104075af2b84a”中的第一个字节上的数据“00”,返回步骤301;当步骤301中判断为是后,数据处理模块判断接收缓冲区中的数据“5a02000104075af2b84a”中的第一个字节上的数据“5a”为第一预设值,则判断出接收缓冲区中的数据中的第一个字节上的数据符合预设协议的协议头。
步骤3022:数据处理模块从接收缓冲区中的数据中获取当前待验证数据和当前校验位数据,判断待验证数据和当前校验位数据是否符合预设协议,如果是,则将接收缓冲区中的第一字节上的数据到当前校验位上的数据之间的数据作为合法的上行数据,执行步骤303;否则,移除接收缓冲区中的数据中的第一个字节上的数据,返回步骤301。
具体地,数据处理模块根据预设协议从接收缓冲区中的数据中获取当前待验证数据和当前校验位数据,根据预设算法对当前待验证数据进行运算得到第一运算值,判断第一运算值与当前校验位数据是否匹配,如果是,则将第一字节到当前校验位数据之间的数据作为合法的上行数据,执行步骤303;否则,移除接收缓冲区中的数据中的第一个字节上的数据,返回步骤301。
例如:数据处理模块根据预设协议从接收缓冲区中的数据“5a02000104075af2b84a”中获取当前待验证数据“02000104”和当前校验位数据“07”,根据预设算法从待验证数据“02”开始到“04”结束进行异或运算得到第一运算值“07”,判断第一运算值“07”与当前校验位数据“07”匹配,则判断出接收缓冲区中的第一字节之后的数据中包括符合预设协议的数据,并将第一字节到当前校验位数据之间的数据“5a0200010407”作为上行数据,执行步骤303。
其中,数据处理模块根据预设协议从接收缓冲区中的数据中获取当前待验证数据和当前校验位数据,具体为:数据处理模块判断接收缓冲区中的数据的第一字节上的数据的类型,若接收缓冲区中的第一个字节上的数据为第一预设值,则执行步骤h1;若接收缓冲区中的第一个字节上的数据为第二预设值或第三预设值,则执行步骤h2;
步骤h1:数据处理模块判断接收缓冲区中的数据的第二个字节上的数据的类型,若接收缓冲区中的数据中的第二个字节上的数据为第四预设值,如果是,则执行步骤h2;若接收缓冲区中的数据中的第二个字节上的数据为第五预设值,执行步骤h3;
优选地,第四预设值为02,第五预设值f2。
步骤h2:数据处理模块获取接收缓冲区中的数据中的第三和第四个字节上的数据,并将其作为当前有效数据的字节长度,获取第四字节之后并且数据长度为当前有效数据的字节长度的数据,并将其作为当前有效数据,将第二字节、第三字节、第四字节上的数据和当前有效数据作为当前待验证数据,将有效数据之后的第一个字节上的数据作为当前校验位数据。
步骤h3:数据处理模块获取第一字节之后的数据长度并将其作为第一预设长度的数据,将获取到的数据中的最后一个字节上的数据作为当前校验位数据,将获取到的除当前校验位数据之外的数据作为当前待验证数据。
优选地,第一预设长度为3个字节。
例如:若接收缓冲区中的数据为“5a02000104075af2b84a”,则数据处理模块判断接收缓冲区中的数据“5a02000104075af2b84a”中的第一个字节上的数据“5a”为第一预设值,则数据处理模块继续执行步骤h1,判断接收缓冲区中的数据中的第二个字节上的数据为第四预设值02,则继续执行步骤h2;数据处理模块获取接收缓冲区中的数据中的第三和第四个字节上的数据“0001”,并第三和第四个字节上的数据“0001”作为当前有效数据的字节长度,获取第四字节“01”之后并且数据长度为当前有效数据字节的长度(即一个字节)的数据,即获取到的数据为“04”,并请“04”作为当前有效数据,将第二字节、第三字节、第四字节上的数据“02”、“00”、“01”和当前有效数据“04”作为待验证数据,将当前有效数据“04”之后的第一个字节上的数据“07”作为当前校验位数据。
若接收缓冲区中的数据为“5af2b84a”,则数据处理模块判断接收缓冲区中的数据“5af2b84a”中的第一个字节上的数据“5a”为第一预设值,则数据处理模块继续执行步骤h1,判断接收缓冲区中的数据中的第二个字节上的数据为第五预设值f2,则继续执行步骤h3;则数据处理模块获取第一字节上的数据“5a”之后的数据长度为第一预设长度(即3个字节)的数据,将获取到的数据“f2b84a”中的最后一个字节上的数据“4a”作为当前校验位数据,将获取到的除当前校验位数据之外的数据“f2b8”作为当前待验证数据。
步骤303:数据处理模块判断上行数据的类型,若上行数据为上行应答,则执行步骤304;若上行数据为上行延时申请,则执行步骤305;若上行数据为上行指令,则执行步骤306;若上行数据为上行通知,则执行步骤307;
具体地,数据处理模块判断上行数据中的第一个字节上的数据的类型,如果上行数据中的第一个字节上的数据为第一预设值,则判断上行数据中的第二个字节上的数据的类型,如果上行数据中的第二个字节上的数据为第四预设值,则上行数据为上行应答,如果上行数据中的第二字节上的数据为第五预设值,则上行数据为上行延时申请;若上行数据中的第一字节上的数据为第二预设值,则上行数据为上行指令;若上行数据中的第一字节上的数据为第三预设值,则上行数据为上行通知。
例如:若数据处理模块获取到的上行数据为“5a0200010407”,则数据处理模块判断上行数据“5a0200010407”中的第一个字节上的数据为第一预设值“5a”,则判断上行数据中的第二个字节上的数据的类型,上行数据“5a0200010407”中的第二个字节上的数据为第四预设值“02”,则判断出上行数据“5a0200010407”为上行应答;
若数据处理模块获取到的上行数据为“5af2b84a”则数据处理模块判断上行数据“5af2b84a”中的第一个字节上的数据为第一预设值“5a”,则判断上行数据中的第二个字节上的数据的类型,上行数据“5af2b84a”中的第二个字节上的数据“f2”为第五预设值,则判断出上行数据“5af2b84a”为上行延时申请;
若数据处理模块获取到的上行数据为“c3020002010203”则数据处理模块判断上行数据“c3020002010203”中的第一个字节上的数据为第二预设值“c3”,则判断出上行数据“c3020002010203”为上行指令;
若数据处理模块获取到的上行数据为“530200010103”则数据处理模块判断上行数据“530200010103”中的第一个字节上的数据为第三预设值“53”,则判断出上行数据“530200010103”为上行通知。
步骤304:数据处理模块将上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区中,将接收缓冲区中的上行应答移除,返回步骤301;
若数据处理模块将上行应答中的上行应答有效数据放入到上行应答缓冲区中,则步骤304具体为:数据处理模块解析上行应答,获取上行应答中的上行应答有效数据,将上行应答中的上行应答有效数据放入到上行应答缓冲区中,将接收缓冲区中的上行应答移除,返回步骤301。
更加具体地,数据处理模块解析上行应答,获取上行应答中的第三和第四字节上的数据,并将其作为上行应答有效数据的字节长度,获取第四字节之后并且数据长度为上行应答有效数据的字节长度的数据,并将其作为上行应答有效数据,将上行应答有效数据放入到上行应答缓冲区中,将接收缓冲区中的上行应答移除,返回步骤301。
例如:数据处理模块解析上行应答“5a0200010407”,获取上行应答中的第三和第四字节上的数据“0001”,并将其作为上行应答有效数据的字节长度,获取第四字节之后并且数据长度为1个字节长度的数据“04”,并将其作为上行应答有效数据,将上行应答有效数据作为上行应答结果,将上行应答有效数据“04”放入到上行应答缓冲区中,将接收缓冲区中的上行应答移除,返回步骤301。
步骤305:数据处理模块根据上行延时申请得到上行延时申请时间,将上行延时申请时间放入到上行延时申请缓冲区中,将接收缓冲区中的上行延时申请移除,返回步骤301;
例如:数据处理模块根据上行延时申请“5af2b84a”得到上行延时申请时间为第一预设时间,第一预设时间放入到上行延时申请缓冲区中,将接收缓冲区中的上行延时申请移除,返回步骤301。
优选地,第一预设时间为3秒。
本步骤还可以替换为:数据处理模块将上行延时申请放入到上行延时申请缓冲区中,将接收缓冲区中的上行延时申请移除,返回步骤301;
相应地,步骤210具体为:数据处理模块根据上行延时申请缓冲区中的上行延时申请得到上行延时申请时间,根据上行延时申请时间重置超时时间,返回步骤206。
步骤306:数据处理模块根据上行指令得到上行指令结果,将上行指令结果发送给应用模块,将接收缓冲区中的上行指令移除,返回步骤301;
具体地,数据处理模块解析上行指令,获取上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果,并将上行指令结果通过第二回调函数返回给应用模块,将接收缓冲区中的上行指令移除,返回步骤301。
更加具体地,数据处理模块解析上行指令,获取上行指令中的第三和第四个字节上的数据,并将其作为上行指令中的有效数据的字节长度,从第四字节之后获取数据长度为上行指令中的有效数据的字节长度的数据,并将其作为上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果,并将上行指令结果通过第二回调函数返回给应用模块,将接收缓冲区中的上行指令移除,返回步骤301。
例如:数据处理模块解析上行指令“c3020002010203”,获取上行指令中的第三和第四个字节上的数据“0002”,并将其作为上行指令中的有效数据的字节长度,从第四字节之后获取数据长度为2个字节长度的数据“0102”,并将其作为上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果,并将上行指令结果通过第二回调函数返回给应用模块,将接收缓冲区中的上行指令移除,返回步骤301。
需说明的是,在数据处理模块通过第二回调函数将上行指令结果通过第二回调函数返回给应用模块之前,还包括:应用模块向数据处理模块注册第二回调函数,相应地:当数据处理模块解析上行指令,获取上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果后,通过第二回调函数将上行指令结果返回给应用模块。
步骤307:数据处理模块根据上行通知得到上行通知结果,将上行通知结果返回给应用模块,将接收缓冲区中的上行通知移除,返回步骤301;
具体地,数据处理模块解析上行通知,获取上行通知中的有效数据,根据上行通知中的有效数据将与上行通知中的有效数据作为上行通知结果,并将上行通知结果通过第三回调函数返回给应用模块。
更加具体地,数据处理模块解析上行通知,获取上行通知中的第三和第四字节上的数据,并将其作为有效数据的字节长度,从第四字节之后获取数据长度为有效数据的字节长度的数据,并将其作为有效数据,将有效数据通过第三回调函数返回给应用模块。
例如,数据处理模块解析上行通知“530200010103”,获取上行通知中的第三和第四字节上的数据“0001”,并将其作为有效数据的字节长度,从第四字节之后获取数据长度为有效数据的字节长度的数据“01”,并将其作为有效数据,将与有效数据“01”通过第三回调函数dword
event_handler(dworddweventid);返回给应用模块,应用模块获取到与有效数据“01”对应的通知事件“电量低”。
需说明的是,在数据处理模块通过第三回调函数将与有效数据对应的通知事件返回给应用模块之前,还包括:应用模块向数据处理模块注册第三回调函数,相应地:当数据处理模块解析上行通知,获取上行通知中的有效数据后,通过第三回调函数将有效数据返回给应用模块。
步骤308:数据处理模块检测数据添加标志位是否被置位,如果是,则复位数据添加标志位,返回步骤301或者302;否则,返回步骤308;
本实施例中,步骤203还可以具体为:数据处理模块从发送下行指令请求中得到下行指令,数据处理模块使用串行队列通过操作系统向蓝牙设备发送下行指令;步骤304还可以被替换为:数据处理模块将上行应答作为上行应答结果,将上行应答结果放入到上行应答缓冲区中,将接收缓冲区中的上行应答移除,返回步骤301;步骤209还可以具体为:数据处理模块将上行应答缓冲区中的数据作为上行应答结果,并将上行应答结果返回给应用模块,解锁下行指令互斥锁,返回步骤201;步骤306还可以具体为:数据处理模块将上行指令作为上行指令结果,将上行指令结果发送给应用模块,将接收缓冲区中的上行指令移除,返回步骤301;步骤211还可以具体为:数据处理模块从下行应答请求中得到下行应答,通过操作系统将下行应答发送给蓝牙设备,返回步骤201。步骤307还可以具体为:数据处理模块将上行通知作为上行通知结果,将上行通知结果返回给应用模块,将接收缓冲区中的上行通知移除,返回步骤301。
本实施例中,若数据处理模块在数据接收线程中接收到来自操作系统的蓝牙设备的蓝牙数据,使用串行队列将来自蓝牙设备的蓝牙数据添加到接收缓冲区中之后,继续在数据接收线程中执行步骤301;步骤301中判断为否后,继续在在数据接收线程中等待接收来自操作系统的蓝牙设备的蓝牙数据。
相应地,步骤302还可以为:数据处理模块从接收缓冲区中获取上行数据,判断是否获取到合法的上行数据,如果是,则执行步骤303;否则,移除接收缓冲区中的数据,继续在数据接收线程中等待接收来自操作系统的蓝牙设备的蓝牙数据。
本实施例中,步骤206之后还可以执行步骤208;相应地,步骤303被替换为:数据处理模块判断上行数据的类型,若上行数据为上行应答,则执行步骤304;若上行数据为上行指令,则执行步骤306;若上行数据为上行通知,则执行步骤307。
本实施例中,数据处理模块将上行指令发送给应用模块后,应用模块还可以向数据处理模块发送发送下行延时申请请求;相应地,步骤201还可以包括:若接收到来自应用模块的发送下行延时申请请求,数据处理模块组织下行延时申请,将下行延时申请发送给蓝牙设备,返回步骤201。
具体地,当数据处理模块在数据发送线程中通过自身的第三接收接口接收来自应用模块的发送下行延时申请请求后,数据处理模块组织下行延时申请,将下行延时申请发送给蓝牙设备,返回步骤201。
例如:具体地,当数据处理模块在数据发送线程中通过自身的第三接收接口unsignedintsendtimeout(void*devhandle,unsignedinttimeout)接收来自应用模块的发送下行延时申请请求后,数据处理模块组织下行延时申请“3cf2b84a”,将下行延时申请发送给蓝牙设备,返回步骤201。
本实施例提供的一种移动终端处理蓝牙数据的方法,移动终端中的数据处理模块在接收到来自操作系统的蓝牙设备的蓝牙数据后,将接收到的蓝牙数据按序放入接收缓冲区,并将接收到的数据按照字节形势进行解析,若通过预设协议判断第一个字节上的数据或第一个字节后面协议数据格式不正确时,舍弃第一字节上的字节数据,依次向后判断,直到找到符合预设协议的上行数据并区分该数据的类型:若上行数据为上行应答,则将上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区;若接收到来自应用模块的发送下行指令请求后,根据下行指令请求得到下行指令,将下行指令通过操作系统发送给蓝牙设备,之后,检测上行应答缓冲区中是否有数据,如果有,则根据上行应答缓冲区中的数据得到上行应答结果,并将上行应答结果返回给应用模块;若上行数据为上行指令,根据上行指令得到的上行指令结果,采用回调的方式,即通过第二回调函数将上行指令结果返回给应用模块,并根据应用模块的发送下行应答请求得到与上行指令相对应的下行应答,将下行应答通过操作系统发送给蓝牙设备;若上行数据为上行通知,则根据上行通知得到上行通知结果,并采用回调的方式,即通过第三回调函数将上行通知结果返回给应用模块,从而实现了移动终端既能主动向蓝牙设备发送下行指令,接收来自蓝牙设备的上行应答,也能被动的响应来自蓝牙设备的上行指令,并向蓝牙设备发送对应的下行应答,并且能够保证移动终端在数据处理过程中数据的准确性和可靠性,达到降低移动终端的耗电量和优化移动终端性能的有益效果。
实施例3
本实施例提提了一种移动终端,如图4所示,包括数据处理模块、应用模块和操作系统,数据处理模块的接收缓冲区用于存放数据处理模块接收到的来自操作系统的蓝牙设备的蓝牙数据;
其中数据处理模块和应用模块可以设置在移动终端的一个应用程序上。移动终端的操作系统可以为android或者ios操作系统。
其中,数据处理模块包括:第二存储子模块00、第一获取子模块01、第一判断子模块02、第一存储子模块03、第一移除子模块04、第二获取子模块05、第一发送子模块06和第二移除子模块07;
第二存储子模块00,用于将数据处理模块接收到的来自操作系统的蓝牙设备的蓝牙数据放入到接收缓冲区中;
第一获取子模块01,用于从接收缓冲区中的蓝牙数据中获取合法的上行数据;
本实施例中,第一获取子模块01具体包括:第一获取单元、第一判断单元、第一移除单元、第二获取单元和第二判断单元;
第一获取单元,用于获取接收缓冲区的第一位置上的数据;
第一判断单元,用于判断第一获取单元获取到的第一位置上的数据是否符合预设协议的协议头;
第二获取单元,用于当第一判断单元判断为是后,从接收缓冲区中获取当前待验证数据和当前校验位数据;
第二判断单元,用于判断第二获取单元获取到的当前待验证数据和当前校验位数据是否符合预设协议,如果是,则将接收缓冲区中的第一位置上的数据到当前检验位数据之间的数据作为合法的上行数据;
第一移除单元,用于当第一判断单元判断为否后,移除接收缓冲区中的第一位置上的数据;当第二判断单元判断为否后,移除接收缓冲区中的第一位置上的数据。
本实施例中,第一移除单元还用于:当移除接收缓冲区中的第一位置上的数据之后,将接收缓冲区中的第一位置之后的下一个位置上的数据作为第一位置上的数据。
第一判断子模块02,用于判断第一获取子模块01获取到的上行数据的类型;
第一存储子模块03,用于当第一判断子模块02判断出上行数据为上行应答后,将上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区;
第一移除子模块04,用于当第一存储子模块03将上行应答或上行应答中的上行应答有效数据放入到上行应答缓冲区后,移除接收缓冲区中的上行应答;
第二获取子模块05,用于当第一判断子模块02判断出上行数据为上行指令后,根据上行指令得到上行指令结果;
第一发送子模块06,用于将第二获取子模块05获取到的上行指令结果发送给应用模块;
第二移除子模块07,用于当第一发送子模块06将第二获取子模块05获取到的上行指令结果发送给应用模块后,移除接收缓冲区中的上行指令。
本实施例中,数据处理模块还可以包括第一接收子模块和第二判断子模块;
第一接收子模块,用于接收来自操作系统的蓝牙设备的蓝牙数据;
第二存储子模块00,具体用于将第一接收子模块接收到的蓝牙数据放入到接收缓冲区中;
第二判断子模块,用于当第一获取子模块01从接收缓冲区中的蓝牙数据中获取合法的上行数据前、当第一移除子模块04移除接收缓冲区中的上行应答、当第二移除子模块07移除接收缓冲区中的上行指令后以及当第二判断子模块判断为否后,判断接收缓冲区中是否存在数据;
第一获取子模块01,具体用于当第二判断模块判断为是后,从接收缓冲区中的蓝牙数据中获取合法的上行数据。
进一步地,第一获取子模块01,具体用于从接收缓冲区的第一位置上的数据开始获取上行数据;判断是否获取到合法的上行数据,如果是,则判断出获取到合法的上行数据;否则,移除接收缓冲区中的第一位置上的数据;
第一判断子模块02,具体用于当第一获取子模块01判断为是后,判断第一获取子模块01获取到的上行数据的类型;
第二判断子模块,具体用于当第一获取子模块01从接收缓冲区中的蓝牙数据中获取上行数据前、当第一获取子模块01移除接收缓冲区中的第一位置上的数据后、当第一移除子模块04移除接收缓冲区中的上行应答、当第二移除子模块07移除接收缓冲区中的上行指令后以及当第二判断子模块判断为否后,判断接收缓冲区中是否存在数据。
本实施例中,数据处理模块还可以包括:第一接收子模块;
第一接收子模块,用于接收来自操作系统的蓝牙设备的蓝牙数据;
第二存储子模块00,具体用于将第二接收子模块接收到的蓝牙数据放入到接收缓冲区中。
进一步地,第一获取子模块01,具体用于获取接收缓冲区中的上行数据,判断是否获取到合法的上行数据,如果是,则判断出获取到合法的上行数据;否则,移除接收缓冲区中的数据。
本实施例中,第一接收子模块,具体用于通过第一回调函数接收来自操作系统的蓝牙设备的蓝牙数据;第一发送子模块06,具体用于通过第二回调函数将上行指令结果发送给应用模块。
本实施例中,数据处理模块还可以包括:第二接收子模块、第二发送子模块、第三获取子模块、第四获取子模块、第三判断子模块和报错子模块;
第二接收子模块,用于接收来自应用模块的发送下行指令请求以及接收来自应用模块的发送下行应答请求;
第三获取子模块,用于根据第二接收子模块接收到的发送下行指令请求得到下行指令;根据第二接收子模块接收到的发送下行应答请求得到下行应答;
第二发送子模块,用于将第三获取模块获取的下行指令通过操作系统发送给蓝牙设备以及将第三获取模块获取的下行应答通过操作系统发送给蓝牙设备;
第三判断子模块,用于判断上行应答缓冲区中是否有数据;
报错子模块,用于当第三判断子模块判断为否后,报错;
第四获取子模块,用于当第三判断子模块判断为是后,根据上行应答缓冲区中的数据得到上行应答结果;
第一发送子模块06,还用于将上行应答结果返回给应用模块。
对应地,应用模块包括:第三发送子模块和第三接收子模块;
第三发送子模块,用于向数据处理模块发送发送下行指令请求和发送下行应答请求;
第三接收子模块,用于接收来自数据处理模块的上行指令结果和上行应答结果。
进一步地,数据处理模块还可以包括:第一清空子模块;
第一清空子模块,用于当第三发送模块将第三获取模块获取的下行指令通过操作系统发送给蓝牙设备之前,清空上行应答缓冲区。
本实施例中,数据处理模块还可以包括:第五获取子模块和第三移除子模块;
第五获取子模块,用于当第一判断子模块02判断出上行数据为上行应答后,根据上行通知得到上行通知结果;
第五获取子模块,具体用于当第一判断子模块02判断出上行数据为上行应答后,获取上行通知中的有效数据,将与上行通知中的有效数据作为上行通知结果。
第一发送子模块06,还用于将第五获取子模块获取到的上行通知结果发送给应用模块;
第三移除子模块,用于当第一发送子模块06将上行通知结果发送给应用模块后,移除接收缓冲区中的上行通知。
进一步地,第一发送子模块06包括第一发送单元和第二发送单元;
第一发送单元,用于将上行指令结果发送给应用模块;
第二发送单元,用于通过第三回调函数将上行通知结果发送给应用模块。
本实施例中,若数据处理模块包括:第二存储子模块00、第一获取子模块01、第一判断子模块02、第一存储子模块03、第一移除子模块04、第二获取子模块05、第一发送子模块06、第二移除子模块07、第二接收子模块、第二发送子模块、第三获取子模块、第四获取子模块、第三判断子模块和报错子模块;则数据处理模块还可以包括:第三存储子模块、第四移除子模块、第四判断子模块、第五判断子模块、第六获取子模块、第一重置子模块和第二清空子模块;
第三存储子模块,用于当第一判断子模块02判断出上行数据的类型为上行延时申请后,将上行延时申请放入到上行延时申请缓冲区中或者根据上行延时申请得到上行延时时间,将上行延时申请时间放入到上行延时缓冲区中;
第四移除子模块,用于当第三存储子模块将上行延时申请或上行延时申请时间放入到上行延时申请缓冲区中后,移除接收缓冲区中的上行延时申请;
第四判断子模块,用于当第二发送子模块将下行指令通过操作系统发送给蓝牙设备之后,根据超时时间判断是否超时;当第二清空子模块清空上行延时缓冲区后,根据超时时间判断是否超时;
第五判断子模块,用于当第四判断子模块判断为否后,判断上行延时缓冲区中是否存在数据;
报错子模块,还用于当第四判断子模块判断为是后,向应用模块返回超时错误;
第三判断子模块,具体用于当第五判断子模块判断为否后,判断上行应答缓冲区中是否有数据;
第六获取子模块,用于当第五判断子模块判断为是后,根据上行延时缓冲区中的数据得到上行延时时间;
第一重置子模块,用于根据上行延时时间重置超时时间。
第二清空子模块,用于当第一重置子模块重置超时时间后,清空上行延时缓冲区。
本实施例中,若数据处理模块包括:第二存储子模块00、第一获取子模块01、第一判断子模块02、第一存储子模块03、第一移除子模块04、第二获取子模块05、第一发送子模块06、第二移除子模块07、第二接收子模块、第二发送子模块、第三获取子模块、第四获取子模块、第三判断子模块和报错子模块;则数据处理模块还可以包括:第七获取子模块;
第二接收子模块还用于接收来自应用模块的发送下行延时申请请求;
第七获取子模块,用于根据下行延时申请请求得到下行延时申请;
第二发送子模块,还用于将第七获取子模块获取到的下行延时申请通过操作系统发送给蓝牙设备。
对应地,应用模块包括:第三发送子模块和第三接收子模块;
第三发送子模块,用于向数据处理模块发送发送下行指令请求和发送下行应答请求;
第三接收子模块,用于接收来自数据处理模块的上行指令结果和上行应答结果;
第三发送子模块,还用于当第三接收子模块接收到上行指令结果之后,向数据处理模块发送发送下行应答请求之前,向数据处理模块发送发送下行延时申请请求。
本实施例中,第三获取子模块,可以具体用于从第二接收子模块接收到的发送下行指令请求中得到下行指令有效数据,根据预设协议组织包括下行指令有效数据的下行指令;从第二接收子模块接收到的发送下行应答请求中得到下行应答有效数据,根据预设协议组织包括下行应答有效数据的下行应答;
第二获取子模块05,可以具体用于当第一判断子模块02判断出上行数据为上行指令后,获取上行指令中的有效数据,将上行指令中的有效数据作为上行指令结果;
第四获取子模块,可以具体用于当第三判断子模块判断为是后,将上行应答中的上行应答有效数据作为上行应答结果。
本实施例中,第三获取子模块,还可以具体用于从第二接收子模块接收到的发送下行指令请求中得到下行指令;从第二接收子模块接收到的发送下行应答请求中得到下行应答;
第二获取子模块05,还可以具体用于当第一判断子模块02判断出上行数据为上行指令后,获取上行指令中的有效数据,将上行指令作为上行指令结果;
若第一存储子模块03将上行应答放入到上行应答缓冲区中,则第四获取子模块,还可以具体用于当第三判断子模块判断为是后,将上行应答缓冲区中的上行应答作为上行应答结果。
本实施例提供的一种移动终端,所述移动终端在和同一蓝牙设备进行通讯时,既能主动向蓝牙设备发送下行指令,接收来自蓝牙设备的上行应答,也能被动的响应来自蓝牙设备的上行指令和蓝牙设备进行通讯,并且能够保证移动终端在数据处理过程中数据的准确性和可靠性,同时节省了自身的耗电量,优化了自身的设备性能。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。