繁体   English   中英

无法将数据发送到BLE外围设备(ZL-RC04A)设备

[英]Not able to send data to BLE Peripheral (ZL-RC04A) device

我正在尝试使用代码片段编写数据。

- (void)peripheral:(CBPeripheral *)peripheral1 didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
    // Again, we loop through the array, just in case.
    for (CBCharacteristic *characteristic in service.characteristics) {

        // And check if it's the right one
        if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]]) {
            NSString *payloadMessage = @"3N";
            NSData *payload = [payloadMessage dataUsingEncoding:NSUTF8StringEncoding];
            [_discoveredPeripheral discoverDescriptorsForCharacteristic:characteristic];
            [_discoveredPeripheral writeValue:payload forCharacteristic:characteristic
                              type:CBCharacteristicWriteWithResponse];
            [_discoveredPeripheral setNotifyValue:YES forCharacteristic:characteristic];

        }
    }

}

但是出现错误

 - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error
{

}

为: Error Domain=CBATTErrorDomain Code=3 "Writing is not permitted." UserInfo={NSLocalizedDescription=Writing is not permitted.} Error Domain=CBATTErrorDomain Code=3 "Writing is not permitted." UserInfo={NSLocalizedDescription=Writing is not permitted.}

虽然相同的工作在Android。

如果为特性使用了错误的写入类型,则会出现该错误(毕竟特性是可写的)。 有两种类型的数据写入特征:

  1. CBCharacteristicWriteWithResponse :在这种情况下,您将获得外围设备的确认数据包。 您可以将其视为TCP数据包。

  2. CBCharacteristicWriteWithoutResponse :这是一种“ CBCharacteristicWriteWithoutResponse ”的写法。 您可以将其视为UDP数据包。

因此,尝试使用CBCharacteristicWriteWithoutResponse而不是CBCharacteristicWriteWithResponse 如果效果不佳,则可能必须检查您的特征是否可写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM