- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在开发扫描我公司信标的 BLE 应用程序,我需要更新 CBCharacteristic 的值。
我在写入函数后没有收到任何错误,但更改并未反射(reflect)在 BLE 设备上。
我已经扫描了所有 CBCharacteristics,然后遍历得到特定的并调用写入函数
for (CBCharacteristic* characteristic in beaconCharacteristics)
{
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"FFF5"]]) {
[characteristic.service.peripheral writeValue:[@"BeaconE" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
}
}
即使我在写入后没有错误地调用了完成委托(delegate)方法
-(void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
}
我错过了什么吗?是因为十六进制值吗?
请指导我
谢谢!
最佳答案
Characteristic 可能是只读的。您可以通过查看 CBCharacteristicProperties 对象找到答案,您可以使用 characteristic.properties 获取该对象
//Check if the Characteristic is writable
if ((characteristic.properties & CBCharacteristicPropertyWrite) ||
(characteristic.properties & CBCharacteristicPropertyWriteWithoutResponse))
{
//Do your Write here
}
下面是一个简单的方法,它接受一个 CBCharacteristicProperties 对象并记录属性。 . .帮助调试。
-(void)logCharacteristicProperties:(CBCharacteristicProperties)properties {
if (properties & CBCharacteristicPropertyBroadcast) {
NSLog(@"CBCharacteristicPropertyBroadcast");
}
if (properties & CBCharacteristicPropertyRead) {
NSLog(@"CBCharacteristicPropertyRead");
}
if (properties & CBCharacteristicPropertyWriteWithoutResponse) {
NSLog(@"CBCharacteristicPropertyWriteWithoutResponse");
}
if (properties & CBCharacteristicPropertyWrite) {
NSLog(@"CBCharacteristicPropertyWrite");
}
if (properties & CBCharacteristicPropertyNotify) {
NSLog(@"CBCharacteristicPropertyNotify");
}
if (properties & CBCharacteristicPropertyIndicate) {
NSLog(@"CBCharacteristicPropertyIndicate");
}
if (properties & CBCharacteristicPropertyAuthenticatedSignedWrites) {
NSLog(@"CBCharacteristicPropertyAuthenticatedSignedWrites");
}
if (properties & CBCharacteristicPropertyExtendedProperties) {
NSLog(@"CBCharacteristicPropertyExtendedProperties");
}
if (properties & CBCharacteristicPropertyNotifyEncryptionRequired) {
NSLog(@"CBCharacteristicPropertyNotifyEncryptionRequired");
}
if (properties & CBCharacteristicPropertyIndicateEncryptionRequired) {
NSLog(@"CBCharacteristicPropertyIndicateEncryptionRequired");
}
}
此外,您应该检查错误以查看 CoreBluetooth 是否抛出错误。
//CBPeripheral Delegate
-(void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
if (error) {
NSLog(@"<error> didWriteValueForCharacteristic %@",[error description]);
//
// Add Error handling for failed Writes
//
}
//Add Handling for successful writes
}
关于ios - 写 CBCharacteristic 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970085/
我在我的一个应用程序中启用了 CoreBluetooth。有一个中央 iOS 设备,以及最多 2 个可以连接到中央的外围 iOS 设备。 我通过使用中央订阅的外围设备上的一个特性实现了上游通信,我通过
我目前正在开发扫描我公司信标的 BLE 应用程序,我需要更新 CBCharacteristic 的值。 我在写入函数后没有收到任何错误,但更改并未反射(reflect)在 BLE 设备上。 我已经扫描
我有可以与 BLE 设备配合使用的应用程序。我有特征值,但无法将其转换为字符串。例如, value = 如何转换成字符串? 最佳答案 let dd = getCharacteristic.value
首要任务:运行 OSX 10.10.4、iOS 4、Xcode 6.3.2、iPhone 6、Swift 短篇小说:我这里有一个特定的蓝牙 LE 设备,当特性值发生变化时,我想从中接收通知,例如通过用
在最新的 Apple 文档中,CBCharacteristic 的 UUID 属性有一条线穿过它,并且表示它仅在 5.0 到 7.1 中可用。但是,您通常希望看到的“已弃用”一词却不见踪影。 更重要的
我正在尝试使用 CoreBluetooth 写入特定的已知特征。我觉得这应该是可能的,因为我使用了 Texas Instruments BLE 实用程序,您可以在连接的外围设备上选择“写入值”操作,只
在 CoreBluetooth 应用程序中,我想从通知切换到指示,以便我可以确保另一端收到数据。 在Apple的示例代码中BTLE Central Peripheral Transfer ,我尝试用
我有一个已成功连接的 BLE 设备。在这种情况下,每当我向 BLE 设备发送字符串“GET DATA”时,设备都会通过向我发送特定响应来响应。我正在使用 didDiscoverCharacterist
我正在使用 CoreBluetooth 框架制作一个应用程序,我最近将它移植到 swift 2.0。在我的代码中,我有一个全局变量,它是一个 CBCharacteristic,在 swift 1.2
如何比较这个? uuid 和字符串不能比较 func charValues() { let charValue = String(data: getCharacteristic.valu
大家好,我正在尝试让这个蓝牙 LE 设备连接到应用程序并获取值。我正在使用 Core Bluetooth,它应该可以获取值。我让它工作,但突然间它在更新时停止通知值。 func peripheral(
我正在我的应用程序中开发 BLE 功能。我在我的项目中添加了CoreBluetooth框架。 我已经添加了, import CoreBluetooth 在 swift 文件的起始位置。 现在,当我尝试
我创建了一个充当 CBPeripheral 的应用程序。我试图在连接的 Central 上显示服务和特征的名称,但我无法找到执行此操作的方法。我已经阅读了 CBCharacteristic 的类引用,
我无法将类型为 NSData 的 CBCharacteristic 的值属性转换为 NSString。我尝试了通常的 initWithData:encoding: NSString 方法,如下所示。但
我想从蓝牙模块读取数据。有一个特征有4个值,存储在8个字节/4个字中。 这是存储在 characteristic.value 中的数据: 0x01 0x01 0x00 0x01 0x04 0x05 0
当我当时加载任何方法时,它会向我显示此警告,因为我正在使用从方法中检索的特性 var cbChar : CBCharacteristic func bleManagerPeripheral(_ p
我是一名优秀的程序员,十分优秀!