简文分享TTC IOS BLE开发的数据收发问题及解决方法
一、无法修改模块名称的问题
情况1:修改名称不成功
检查使用的是哪个版本的 API 文件,V2.9以前的版本(包括 V2.9)存在无法修改名称的问题,这个问题已经在V3.0(包括 V3.0)后的版本中得到修复。
情况2:无法将名称修改为中文
在V3.0中,模块的名称是无法改为中文的,因为在这个版本中,字符编码是 ASCII 码,而中文不存在 ASCII 码,所以在修改的时候会失败,这个 bug 在3.1及后续的版本中会得到修复,那V3.0版本就要手动将字符编码转换为UTF-8编码,这样就能解决要修改的名称即包含中文也包含英文的情况。
注意:修改模块名称之后,需要重启 iPhone 的蓝牙并连接设备,然后断开,再重新扫描,设备的名称就刷新过来了。
二、数据发送不成功的问题
首先确认模块收发数据是否是加密的模式,确认完毕后,根据模块收发数据的类型设置isEncryption属性的值,默认该属性为 YES,当属性值为 YES 时, API 会以加密的方式发送数据,为 NO 时,会以不加密的方式发送数据。
三、APP端收不到模块发送的数据
情况1:确认加密方式
确认模块发送数据的方式是加密还是非加密,然后根据问题2中的方式设置 isEncryption 属性;
情况2:确认对应通道的 notify 是否打开
可以在-(void)bleManagerPeripheral:(CBPeripheral*)peripheral
didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error这个回调方法里面确定通道 notify 是否打开(注:该回调方法在 V3.0 及以上版本中才能使用)。
四、APP接收的数据参差不齐
开发中可能模块会持续向APP发送多笔数据,而每发送两笔数据,之间的间隔又比较短(一般小于等于30ms),且每笔数据不满20字节(模块数据加密的话不满17字节),这时候APP接收的数据可能是被拆分并重新组装后的数据,比如非加密模块,每次发送17字节,快速发送5次,APP第一次可能会收到20字节, 而多出来的3字节是模块端第二次发送的前3字节, 后面的数据也可能被类似这样拆分,APP接收数据的次数便小于5,而APP接收的数据整体顺序是没问题的,这种情况要避免数据被拆分,要么模块增大发送间隔,要么模块每次发送的数据补足20字(数据加密的话补足17字节)。
五、如何在不使用我司蓝牙库对数据加解密
如果客户在开发过程中,直接使用的是系统的框架,而模块数据是加密的,这时就需要 APP 端在发送数据时进行加密,在接收数据时进行解密,在这种情况下,可以单独使用我们的加密库TTC_Ble_Encryption_lib。具体如下
加密使用方法:+ (NSData *)decryption:(NSData *)data.
解密使用方法:+ (NSData *)encryption:(NSString *)string.
关于【Tunercom168】微信号
每周更新关于昇润科技最新资讯,发布蓝牙模块与蓝牙方案最新动态,提供有关物联网、智能家居、可穿戴设备、汽车电子、医疗电子等应用信息,让您紧跟技术潮流,欢迎关注!