Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS确定CBS特征的数据长度_Ios_Bluetooth_Bluetooth Lowenergy_Core Bluetooth_Ios Bluetooth - Fatal编程技术网

iOS确定CBS特征的数据长度

iOS确定CBS特征的数据长度,ios,bluetooth,bluetooth-lowenergy,core-bluetooth,ios-bluetooth,Ios,Bluetooth,Bluetooth Lowenergy,Core Bluetooth,Ios Bluetooth,是否有任何方法可以动态地嗅出CBF特征的数据长度 我正在开发一个小工具上的特性API,我想更改其中一个特性的字段宽度。如果我在iOS端进行更改,使其写入的值为9字节而不是7字节,则当我尝试写入值时,具有旧API(特征字段宽度为7)的设备会导致以下情况: Error Domain=CBATTErrorDomain Code=13 "The value's length is invalid." UserInfo={NSLocalizedDescription=The value

是否有任何方法可以动态地嗅出CBF特征的数据长度

我正在开发一个小工具上的特性API,我想更改其中一个特性的字段宽度。如果我在iOS端进行更改,使其写入的值为9字节而不是7字节,则当我尝试写入值时,具有旧API(特征字段宽度为7)的设备会导致以下情况:

Error Domain=CBATTErrorDomain Code=13 "The value's length is invalid." UserInfo={NSLocalizedDescription=The value's length is invalid.}

我想确定的是,我是否能够捕捉到这个错误,然后以某种方式查询CBCharacteristic当前的字段宽度。显然,在某个时刻,它确定
9>7
,并导致错误冒泡。我尝试读取与特征相关的描述符,但只有一个描述符(
)不能告诉我太多。

这是一个标准的ATT协议错误,由外围设备而不是iOS生成。这意味着您发送了一个值,而外围设备响应该值的长度错误。特征不一定有特定的长度。正确的长度可能取决于上下文。例如,特征可能接受2字节、4字节或8字节。如果您写入7个字节,它可能会返回此错误。或者,第一个字节可能是命令选择器,其余字节可能是该命令需要具有特定长度的有效负载。这些设计没有简单的“这个特征的长度是多少”


没有通用的方法可以知道远程服务想要什么。您需要通过API文档了解这一点。这相当于从HTTP服务器返回
405不允许的方法
错误。这取决于你知道什么方法是允许的。一个特定的系统可能会给你一种查询它的方法,但它可能不会。提供这一点并不是HTTP规范的一部分,同样也不是BLE规范的一部分。

感谢您的确认。我担心情况会是这样。我在gadget端使用了一个ST-BLUENRG芯片,它的ACI协议(一个简化的GATT/gapapi)为GATT定义提供了一个字段宽度。因此,它必须捕捉并提高错误。