ben*_*_uk 4 bluetooth nsdata ios core-bluetooth swift
我一直在使用XCode和Swift创建一个应用程序以连接到蓝牙设备(已连接LED色带),并且编写了一段代码来使其变色。
使用蓝牙嗅探器,我知道我需要发送“ 52130056FF000000AA”的值,在此示例中,它将使其变为红色。这是我已经编写的代码的一部分。Characteristicx在此代码之前定义。
let data: NSData = "52130056FF000000AA".dataUsingEncoding(NSUTF8StringEncoding)!
peripheral.writeValue(data, forCharacteristic: characteristicx, type: CBCharacteristicWriteType.WithoutResponse)
Run Code Online (Sandbox Code Playgroud)
这段代码将转换为此给出的十六进制字符串,我不想发送该字符串。'<35323133 30303536 46463030 30303030 4141>'
所以,问题是,如何让Swift将52130056FF000000AA仅发送到BLE设备,而不发送到转换后的字符串?这里的问题是writeValue命令需要NSData(据我所知),我不确定如何使用纯十六进制字符串作为以NSData形式发送的数据。
希望有人可以帮忙!任何帮助甚至建议,将不胜感激。
如果您不坚持使用十六进制字符串,那么最简单的解决方案是从具有十六进制整数值的数组创建数据:
let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = NSData(bytes: bytes, length: bytes.count)
Run Code Online (Sandbox Code Playgroud)
在Swift 3中甚至更容易:
let bytes : [UInt8] = [ 0x52, 0x13, 0x00, 0x56, 0xFF, 0x00, 0x00, 0x00, 0xAA ]
let data = Data(bytes:bytes)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |