[英]Data sent to peripheral not working using Corebluetooth
我正在嘗試使用 CoreBluetooth 將數據發送到外設,我發送到設備的幀在加密后如下:
[12, 25, 26, 178, 186, 127, 127, 133, 144, 93, 144, 188, 104, 52, 119, 160]
我可以在有符號數組中發送命令嗎? 來自android的相應命令如下:
[12, 25, 26, -78, -70, 127, 127, -123, -112, 93, -112, -68, 104, 52, 119, -96]
我用來發送數據的代碼如下:
let command : [UInt8] = [0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
guard let commandEncrpt = AESEncrypt(data: command) else{
return
}
let resultCommand = Data(commandEncrpt)
self.writeCommand(command: resultCommand)
寫命令函數如下:
internal func writeCommand(command:Data) {
if let chara = self.deviceModel.writeChara {
print("writing started")
self.deviceModel.peripheral.writeValue(command, for: chara, type: .withResponse)
}
}
加密函數如下:
func AESEncrypt(data: [UInt8]) -> [UInt8]? {
do {
let key : [UInt8] = [
64,215,215,156,115,47,26,19,115,127,109,10,195,65,36,185
]
let encrypted = try AES(key: key, blockMode: ECB(),padding: .noPadding).encrypt(data)
print(encrypted.toHexString())
return encrypted
} catch {
print(error)
}
return nil
}
提供的密鑰是示例,並不反映實際情況。 我也為此使用了 CryptoSwift 庫。
android 和 iOS 的答案都是正確的。 在 Android 中,它顯示帶符號的 2 的補碼結果。 在 iOS 中,它顯示相應的十進制值。
例如: - b2 b2的十進制值為186 b2的 2 的補碼為-70
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.