Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c 将值写入BLE特征时响应缓慢(目标C)_Objective C_Bluetooth Lowenergy_Core Bluetooth - Fatal编程技术网

Objective c 将值写入BLE特征时响应缓慢(目标C)

Objective c 将值写入BLE特征时响应缓慢(目标C),objective-c,bluetooth-lowenergy,core-bluetooth,Objective C,Bluetooth Lowenergy,Core Bluetooth,我正在尝试使用Objective C和CoreBluetooth更新BLE设备上的一个特性。它可以工作(写入导致设备上的LED亮起,因此我可以看到更新发生的时间),但写入值和设备上的响应之间的延迟约为15-25秒(!) 我使用以下方法编写值: [peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse]; 15秒后,我得到了didWriteValueFor

我正在尝试使用Objective C和CoreBluetooth更新BLE设备上的一个特性。它可以工作(写入导致设备上的LED亮起,因此我可以看到更新发生的时间),但写入值和设备上的响应之间的延迟约为15-25秒(!)

我使用以下方法编写值:

[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
15秒后,我得到了didWriteValueForCharacteristic的回调

我注意到这似乎与我存储
cbperipal
对象的方式有关。我这样认为是因为如果我试图直接从
cbperipheraldegate
中的一个回调函数(例如,
didiscovercharacteristicsforservice
)向设备写入,它将外围设备作为参数传递,那么设备的响应是即时的。只有当我尝试使用存储版本将值写入外围设备时,才会出现长延迟

我曾尝试将外围设备作为一个属性存储在一个数组中,并且我尝试过用“代码> > DeXCHOYASYNC/<代码>通过队列执行写操作(作为写入值的操作来自C++程序中的用户界面动作)。 关于我为什么会遇到这些问题,你有什么想法或建议吗

谢谢, 亚当


p、 如果你使用LightBlue.app(它在AppStore上提供),我尝试写入的设备是micro:bit

,它会花费那么多时间吗?这可以检查问题是在iPhone代码上还是在BLE设备上。是的,我尝试了这个,LightBlue应用程序似乎在设备上引起了即时响应。所以它一定是我代码中的某个东西。我不明白是什么原因导致我调用
writeValue
和从
didWriteValue for Characteristic
响应之间的延迟。我似乎无法控制这一点…你可能正在阻止你当前的线程,但我们无法猜出什么是错误的嗯,是的,我怀疑这样的事情。我发现了一个线索-如果外设是通过回调函数提供给我的(例如,在
didiscovercharacteristicsforservice
),并且我调用我的函数来写入设备上的特征,这将立即生效,不会延迟。如果我存储外围设备并尝试从其他地方调用它,则会得到15-20秒的延迟。关于如何确保我没有阻塞这里的任何提示?我正在调度队列上执行操作<代码>调度队列=调度获取全局队列(调度队列优先级高,0)-也许这是错误的做法?如果您使用LightBlue.app(可在AppStore上获得),是否需要那么多时间?这可以检查问题是在iPhone代码上还是在BLE设备上。是的,我尝试了这个,LightBlue应用程序似乎在设备上引起了即时响应。所以它一定是我代码中的某个东西。我不明白是什么原因导致我调用
writeValue
和从
didWriteValue for Characteristic
响应之间的延迟。我似乎无法控制这一点…你可能正在阻止你当前的线程,但我们无法猜出什么是错误的嗯,是的,我怀疑这样的事情。我发现了一个线索-如果外设是通过回调函数提供给我的(例如,在
didiscovercharacteristicsforservice
),并且我调用我的函数来写入设备上的特征,这将立即生效,不会延迟。如果我存储外围设备并尝试从其他地方调用它,则会得到15-20秒的延迟。关于如何确保我没有阻塞这里的任何提示?我正在调度队列上执行操作<代码>调度队列=调度获取全局队列(调度队列优先级高,0)-也许这是错误的做法?