gpt4 book ai didi

ios - 在 Swift 中使用 WriteValue 发送十六进制字符串

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:31 26 4
gpt4 key购买 nike

我一直在使用 XCode 和 Swift 创建一个应用程序来连接到蓝牙设备(连接了一个 LED 彩条),并且我编写了一段代码可以让它改变颜色。

使用蓝牙嗅探器,我知道我需要发送 '52130056FF000000AA' 的值,这会使其变为红色,在此示例中。这是我已有的代码片段。 Characteristicx 在此代码之前定义。

let data: NSData = "52130056FF000000AA".dataUsingEncoding(NSUTF8StringEncoding)!
peripheral.writeValue(data, forCharacteristic: characteristicx, type: CBCharacteristicWriteType.WithoutResponse)

这段代码转换了我不想发送的十六进制字符串。'<35323133 30303536 46463030 30303030 4141>'

所以,问题是,我如何让 Swift 只将 52130056FF000000AA 发送到 BLE 设备而不是转换后的字符串?这里的问题是 writeValue 命令需要 NSData(至于我可以看到)并且我不确定如何使用普通的十六进制字符串作为以 NSData 形式发送的数据。

希望有人能帮忙解决这个问题!我们将不胜感激任何帮助甚至建议。

最佳答案

如果您不坚持使用十六进制 string 那么最简单的解决方案将是从具有十六进制整数值的数组创建数据:

let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = NSData(bytes: bytes, length: bytes.count)

Swift 3 中更容易:

let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = Data(bytes:bytes)

关于ios - 在 Swift 中使用 WriteValue 发送十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com