簡體   English   中英

使用 corebluetooth 從 ios 應用程序將大二進制字符串傳輸到 BLE 設備

[英]Transfer large binary string to BLE device from ios app using corebluetooth

我想從我的 ios 應用程序(中央設備)向 BLE 設備(外圍設備)發送大二進制字符串。 它對小字符串工作正常,但是當我嘗試發送大字符串時,它沒有接收並且連接自動斷開。 我讀過我們需要將大數據分成多個塊才能發送。 但我沒有找到任何工作樣本。

請看代碼發送字符串

let stringToSend = "0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000@"

.

let data : NSData = stringToSend.dataUsingEncoding(NSUTF8StringEncoding)!

if positionCharacteristic != nil {

self.polarH7HRMPeripheral.writeValue(data, forCharacteristic: positionCharacteristic, type: .WithoutResponse)

self.polarH7HRMPeripheral.setNotifyValue(true, forCharacteristic: positionCharacteristic)


}

提前致謝

某些設備寄存器的大小有限。 它們不能包含超過 X 個字節進行處理。 讓我們假設所述 BLE 設備需要一些短命令格式的長命令。 我們還假設所述設備也能夠接收短命令。 設備如何知道短命令和部分長命令之間的區別? 使用說明命令類型的命令格式。 例如:一個命令將包含 1 個頭字節、6 個內容字節、1 個命令類型字節。 部分長命令的命令類型為 11111111,最后一部分為 11111110。短命令的命令類型為 00000000。

這就是我為設備的差異命令“定義”一個簡單協議的方式。

我建議您在該設備的開發人員手冊中查找該協議

有些設備最多接受 20 個字節,所以你必須吐出你的字符串。

for strMsgPart in stringToSend.split(by: 20) {
    if positionCharacteristic != nil {
        self.polarH7HRMPeripheral.writeValue(strMsgPart, forCharacteristic: positionCharacteristic, type: .WithoutResponse)
        self.polarH7HRMPeripheral.setNotifyValue(true, forCharacteristic: positionCharacteristic)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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