使用CoreBluetooth读取RN4020的特性

时间:2017-08-18 15:32:49

标签: ios objective-c core-bluetooth

我一直在使用rn4020蓝牙模块的设备上工作。 我们需要更改输出并从设备读取输入。 我使用CoreBluetooth编写了一个代码,并在iOS上工作。我能够(在经过一番努力之后)将设备设置为命令模式并更改输出。

现在我想要的是读取输入(基本上是高和低)。 要使用以下代码设置输出:

-(void)OutputOn{
NSData *data = [@"|O,08,08" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *mData = [NSMutableData dataWithData:data];
unsigned char f8[1] = "\r";
[mData appendBytes:f8 length:1];
[self.discoveredPeripheral writeValue:mData forCharacteristic:self.MLDPDataCharacteristic type:CBCharacteristicWriteWithResponse];
}

-(void)OutputOff{
NSData *data = [@"|O,08,00" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *mData = [NSMutableData dataWithData:data];
unsigned char f8[1] = "\r";
[mData appendBytes:f8 length:1];
[self.discoveredPeripheral writeValue:mData forCharacteristic:self.MLDPDataCharacteristic type:CBCharacteristicWriteWithResponse];
}

就像我说的那样有效。现在,为了阅读输入,我已经编写了以下代码

-(void)ReadPIO2{
NSData *data = [@"|I,02" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *mData = [NSMutableData dataWithData:data];
unsigned char f8[1] = "\r";
[mData appendBytes:f8 length:1];
[self.discoveredPeripheral writeValue:mData forCharacteristic:self.MLDPDataCharacteristic type:CBCharacteristicWriteWithResponse];
}

一旦我收到回调" didWriteValueForCharacteristic"我使用以下功能

[peripheral readValueForCharacteristic:characteristic];

在此之前,我确保特征是可读的(在这种情况下)。在回调函数" didUpdateValueForCharacteristic"我总是收到以下错误:

  

更新值回调错误错误域= CBATTErrorDomain代码= 2"不允许读取。" UserInfo = {NSLocalizedDescription =不允许阅读。}

总结一下,我似乎无法更新特征值,因为读取函数总是会产生错误。

如果我使用Microchip的SmartData应用程序,我可以使用前面提到的命令读取输出(参见附图)。

有人对如何阅读特征值有所了解吗?

由于

MDN documentation

0 个答案:

没有答案