【发布时间】:2017-10-09 11:47:04
【问题描述】:
我有一个非常棘手的问题。我使用 iOS 设备将字节数组发送到工作正常的 ble 设备(LED 灯)。 我有一个所有命令的文档,从中文翻译得很差。 整个字节包是这样构建的:
- 命令前面(1字节)
- 命令包长度(1字节)
- 命令的 ID(1 字节)
- 命令的控制部分(1字节)
- 数据字段(15字节)
- 检查(1字节)
例如打开灯的完整包是“A1080100FFFFFF59” 到目前为止,我对一切都很清楚。我唯一纠结的是最后一个字节或它在文档中的调用方式:“检查”。 该文件只是说:“校验码的指令:校验码=(0 - 期望整个字节中的字节总和)”。 在上面的示例中,"59" 将是校验和。但无论我如何计算,我都不会达到“59”。
我找到了好帮手
public extension Data {
public func checkSum() -> Int {
return self.map { Int($0) }.reduce(0, +) & 0xff
}
}
但我没有得到任何命令的正确“检查”。
也许有人知道这是如何计算的?
【问题讨论】:
标签: arrays swift bluetooth-lowenergy checksum