swift - 从发送阵列数据的核心蓝牙外设读取数据?
问题描述
我正在尝试读取 Peripheral 发送的数组数据并将其解析为 Swift 数组形式。
外围设备正在发送数据,例如:Array[1 To 15] Numbers。(对于满量程目的,此整数值范围在 1000 到 2000 之间)。但现在我正试图让它与 1 到 15 个整数值一起工作。我能够以编码格式获得字符串格式的结果。我的问题是如何在 swift 中从 didUpdateValueFor 方法的 Characteristic.value 中获取数组 1 到 15。
这是供参考的代码片段。
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
let data = characteristic.value
print("Count: \(count), data: \(data! as NSData)")
}
}
在 X-Code 控制台打印的结果是:
计数:2,数据:<00000100 02>
计数:3,数据:<00030004 00050006 00070008 0009000a 000b000c>
计数:4,数据:<000d00>
计数:5,数据:<0e000f00>
解决方案
使用下面的代码Int
以array
.
不要忘记重置count = 0
和values.removeAll()
数据请求。
我假设你characteristics.value
的Int
价值
var values:[Int] = []
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
if let data = characteristic.value {
var num = 0
//Convert Data to Int
data.getBytes(&num, length: MemoryLayout<Int>.size)
values.append(num)
}
print("Count: \(count), data: \(data! as NSData)")
}
}
推荐阅读
- javascript - 如何从 VSCode 扩展中搜索目录中的代码?
- javascript - 如何获取div的右下角?
- c# - C#循环遍历类中的枚举和属性列表
- html - 学习了如何使用 HTML 和 CSS 从头开始制作响应式 HTML 电子邮件。下一步是什么?
- wpf - 当按下“Esc”时,无效值在 wpf 数据网格中通过验证
- .net-core - Html.raw(),不编译从 jQuery 返回的代码
- jupyter-notebook - 如何在 jupyter lab 上使用异步小部件?
- excel - 返回所有值与Excel中的目标匹配的连续范围的最有效方法?
- atom-editor - 擦除风筝日志(Atom 插件)是否安全?
- angular - 带有primeng OverlayComponent的角度变化检测ngFor