iOS应用程序,从;Accu-Chek Aviva Connect;BG表。(蓝牙低能量)
我正在尝试创建一个iOS应用程序,它将从Accu-Chek Aviva Connect收集数据 为了与BG电表配对,我发送一个写请求以记录访问控制点特征:iOS应用程序,从;Accu-Chek Aviva Connect;BG表。(蓝牙低能量),ios,iphone,bluetooth,bluetooth-lowenergy,core-bluetooth,Ios,Iphone,Bluetooth,Bluetooth Lowenergy,Core Bluetooth,我正在尝试创建一个iOS应用程序,它将从Accu-Chek Aviva Connect收集数据 为了与BG电表配对,我发送一个写请求以记录访问控制点特征: - (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error { if ([service.UUID isEqual:[CBUUID UUI
- (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
if ([service.UUID isEqual:[CBUUID UUIDWithString:@"1808"]]) {
for (CBCharacteristic *aChar in service.characteristics) {
// Read Glucose Measurement...
// Read Glucose Measurement Context...
// Read Glucose Feature...
// Read Date Time...
// Read Record Access Control Point
if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A52"]]) {
[aPeripheral readValueForCharacteristic:aChar];
[aPeripheral setNotifyValue:YES forCharacteristic:aChar];
uint8_t bytes[] = {0x04, 0x01, 0x00};
NSData *data = [NSData dataWithBytes:(void*)&bytes length:sizeof(bytes)];
[aPeripheral writeValue:data forCharacteristic:aChar type:CBCharacteristicWriteWithResponse];
}
}
}
}
在iPhone上,我看到一个UIAlert,上面有一个输入安全代码的字段。我还可以将iPhone与Accu-Chek Aviva Connect进行配对。但下一次我发送一些写请求来记录访问控制点特征时(在设备断开连接后),我得到了“错误:身份验证不足”,并且iPhone上没有UIAlert
我觉得我做的每件事都错了
我想从蓝牙设备的日志中读取记录。AFAIU I写入字节以读取记录访问控制点(
[aperiperal writeValue:data for characteristic:aChar type:CBCharacteristicWriteWithResponse];
)并在外围设备:didWriteValue for characteristic:error:
中获取答案。但我不能这样做,因为错误:身份验证不足“妨碍了我 您需要通过身份验证才能向BG仪表发出写入请求。身份验证不足意味着您试图在未经身份验证的情况下发出请求。你不能只是连接然后写一个与医学相关的特征
检查您是否确实发出了身份验证请求(这也需要输入PIN)。如果是,请检查PIN是否被接受或拒绝。使用Accu-Chek Aviva Connect的方法是通过进入
设置第一次配对→ <代码>无线
→ <代码>配对→ <代码>配对设备。
然后你会看到一个屏幕,上面有数字代码和一条信息:“在设备上输入代码”
在iPhone上,您可以发现Accu-Chek设备并写入一个值来读取记录访问控制点特征。例如,请求一些记录:
- (void)peripheral:(CBPeripheral *)aPeripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
if ([service.UUID isEqual:[CBUUID UUIDWithString:@"1808"]]) {
for (CBCharacteristic *aChar in service.characteristics) {
// Read Record Access Control Point
if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A52"]]) {
[aPeripheral readValueForCharacteristic:aChar];
[aPeripheral setNotifyValue:YES forCharacteristic:aChar];
self.readAccessControlPointCharacteristic = aChar;
NSMutableData *mutableData = [NSMutableData data];
uint8_t opCode = 0x04; // Report number of stored records
uint8_t operator = 0x01; // All records
[mutableData appendData:[NSData dataWithBytes:(void*)&opCode length:sizeof(opCode)]];
[mutableData appendData:[NSData dataWithBytes:(void*)&operator length:sizeof(operator)]];
[aPeripheral writeValue:mutableData forCharacteristic:self.readAccessControlPointCharacteristic type:CBCharacteristicWriteWithResponse];
}
}
}
这将导致iPhone上出现UIAlertView,其中要求您输入显示在Accu-Chek屏幕上的代码。当您这样做时,您的iPhone将成功地与Accu-Chek Aviva Connect配对
现在。当您想从蓝牙设备读取所有记录时,您必须转到My Data
→ <代码>数据传输→ <代码>无线→ 如果你的Accu-Chek设备有很多配对,请选择你的iPhone名称。注意:iPhone必须扫描BT设备,并自动连接到发现的设备
蓝牙连接将建立,您可以从iPhone向蓝牙设备发送任何请求,而不会出现“错误:身份验证不足” 您应该发布引发“身份验证不足”的代码。我很好奇它是来自iOS还是设备本身?另外,在哪里描述或找到了Aviva Connect API?它不容易通过谷歌搜索…Accu-Chek没有官方文档。但它使用的是官方的蓝牙服务:如果您已配对设备并输入PIN码,则该设备应显示在设置->Bluetooth.My devices中的蓝牙设备列表中。是吗?