核心蓝牙特性不更新值

Posted

技术标签:

【中文标题】核心蓝牙特性不更新值【英文标题】:Core Bluetooth characteristic not updating value 【发布时间】:2013-09-22 19:45:52 【问题描述】:

我不知道我做错了什么。 didUpdateValueForCharacteristic 没有按预期调用。我需要发送一个相当长的字符串,所以我将它分成 5 个字符的块,并以 0.03 秒的间隔“更新”它们。代码如下:

The view controller code.

它符合必要的协议,一切正常,除了didUpdateValueForCharacteristic 只为列表名称调用一次,为“START”块调用一次。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您将 NSTTimer 设置为不重复:

[NSTimer scheduledTimerWithTimeInterval:1 target:self
  selector:@selector(sendList) userInfo:nil repeats:NO];

这样它运行一次就停止。将repeats 更改为YES,发送实际上将开始发生。使用更多日志记录来解决此类问题。 :)

请注意,您的代码也存在一些其他问题:

    你不应该睡在主线程上。管理器当前已初始化为使用主队列。 只要外围设备已连接或正在连接,就不应释放它(viewwillDisappear: 中的问题) 列表处理真的很“神秘”。 Objective-C 是一门美丽的、真正富有表现力的语言,你可以利用它来发挥自己的优势。 (我在 Java 中非常缺少命名参数)

如果您遇到更多问题,请继续提出单独的问题。

【讨论】:

太棒了。这样做的“计时器”方式非常有效。非常感谢!! @Macro206 我很高兴这有帮助!继续做core-bluetooth 这是未来的方式:) 您只是想读取数据?你还没有写任何数据?我遇到了一些类似的问题,我正在使用 write 方法写消息,并想使用 read 方法读取相同的数据,但我没有在这种方法中得到消息。找不到任何解决方案。

以上是关于核心蓝牙特性不更新值的主要内容,如果未能解决你的问题,请参考以下文章

核心蓝牙内的可写特性

使用响应写入多个低功耗蓝牙特性值

iOS刷新蓝牙特性

低功耗蓝牙LE Audio Profile 详细介绍

Android 蓝牙 LE - 读取浮动特性

使用核心蓝牙时的问题