我正在尝试创建一个可以从 Accu-Chek Aviva Connect 收集数据的iOS应用。
要与BG仪表配对,我向记录访问控制点特征发送一个写请求:
- (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 配对。但是下次我向记录访问控制Poin 特征发送一些写请求时(设备断开连接后)我得到"错误:认证不足" 且没有iPhone上的UIAlert。
我觉得我做错了什么。
我想从蓝牙设备的日志中读取记录。 AFAIU我将字节写入读取记录访问控制点([aPeripheral writeValue:data forCharacteristic:aChar type:CBCharacteristicWriteWithResponse];
)并在peripheral:didWriteValueForCharacteristic:error:
中得到答案。但是我不能这样做,因为"错误:身份验证不充分" 阻碍我!
答案 0 :(得分:1)
您需要通过身份验证才能向BG仪表发出写入请求。身份验证不足意味着您尝试在未经过身份验证的情况下发出请求。您不能只是连接然后写入医学相关的特征。
检查您是否确实发出了身份验证请求(这也需要输入PIN码)。如果是,请检查PIN是否被接受或拒绝。
答案 1 :(得分:0)
使用Accu-Chek Aviva Connect的方法是第一次配对它,转到Settings
→Wireless
→Pairing
→Pair Device
。
然后,您会看到一个带有数字代码和消息的屏幕:"在设备上输入代码" 。
在iPhone上,你会发现Accu-Chek设备并将值写入Read Record Access Control Point特性。例如,请求一个记录数:
- (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
→Data Transfer
→Wireless
→如果您的Accu-Chek设备有很多配对,请选择您的iPhone名称。 注意: iPhone必须扫描BT设备并自动连接到已发现的设备。
将建立蓝牙连接,您可以将任何请求从iPhone发送到蓝牙设备,而无需"错误:身份验证不足" !