当我NSLog characteristic.value
时,它显示为<1100>
或<2200>
。我知道这是一个十六进制。当我更改值时,我很困惑该写些什么。
任何帮助将非常感激。
目前,我正在执行以下操作,但是当我更改值时会变为null。
- (IBAction)deviceSwitchPressed:(id)sender {
if ([sender isOn]) {
[activePeripheral writeValue:[@"1100" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:switchCharacterictic type:CBCharacteristicWriteWithResponse];
} else {
[activePeripheral writeValue:[@"2200" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:switchCharacterictic type:CBCharacteristicWriteWithResponse];
}
NSLog(@"characteristic.value = %@", switchCharacterictic.value);
}
最佳答案
这就是我用来将十六进制字符串值转换为数据对象的方法。
NSString *command = hexString;
command = [command stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableData *commandToSend= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [command length]/2; i++) {
byte_chars[0] = [command characterAtIndex:i*2];
byte_chars[1] = [command characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[commandToSend appendBytes:&whole_byte length:1];
}
但是,将值写入特征并不能保证会返回该值。外设可以根据需要随时处理该数据。
关于ios - 如何在CBPeripheral上的特征值中写入<1100>或<2200>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33761171/