Ios 使用CoreBluetooth从RN4020读取特性
我一直在开发一款使用rn4020蓝牙模块的设备。 我们需要更改输出并从设备读取输入。 我已经用CoreBluetooth编写了一个代码,并在iOS上实现了这一点。我能够(经过一些努力)将设备设置为命令模式并更改输出 现在我想要的是读取输入(基本上是高电平和低电平)。 要设置输出,我使用以下代码:Ios 使用CoreBluetooth从RN4020读取特性,ios,objective-c,core-bluetooth,Ios,Objective C,Core Bluetooth,我一直在开发一款使用rn4020蓝牙模块的设备。 我们需要更改输出并从设备读取输入。 我已经用CoreBluetooth编写了一个代码,并在iOS上实现了这一点。我能够(经过一些努力)将设备设置为命令模式并更改输出 现在我想要的是读取输入(基本上是高电平和低电平)。 要设置输出,我使用以下代码: -(void)OutputOn{ NSData *data = [@"|O,08,08" dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *
-(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=不允许读取。} 总而言之,我似乎无法更新特征值,因为read函数总是产生错误 如果我使用Microchip上的SmartData应用程序,我就能够使用前面提到的命令读取输出(请参见附图) 有人知道如何读取特征值吗 谢谢
“我确保特征是可读的(实际情况是这样)”:在
特征中的didWriteValueForCharacteristic:
?您是否可以改为编写[self.discoveredPeripheral readValueForCharacteristic:elf.MLDPDataCharacteristic]
另外,奇怪的是-ReadPIO2
写一个值(这很奇怪)。如果我使用[self.discoveredPeripheral readValueForCharacteristic:elf.MLDPDataCharacteristic],谢谢你的回答;我得到了相同的结果,实际上我在回调函数中收到的特征是MLDPDataCharacteristic。关于readPIO2,我必须发送一条消息来接收输入值,这就是为什么我必须为读取一个值而编写一个值。“确保特征是可读的(这种情况下)”:在特征中didWriteValueForCharacteristic:
?您是否可以改为编写[self.discoveredPeripheral readValueForCharacteristic:elf.MLDPDataCharacteristic]
另外,奇怪的是-ReadPIO2
写一个值(这很奇怪)。如果我使用[self.discoveredPeripheral readValueForCharacteristic:elf.MLDPDataCharacteristic],谢谢你的回答;我得到了相同的结果,实际上我在回调函数中收到的特征是MLDPDataCharacteristic。关于readPIO2,我必须发送一条消息来接收输入值,这就是为什么我必须为读取值编写一个值。