簡體   English   中英

發送到外圍設備的數據無法使用 Corebluetooth 工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM