2017-03-07 35 views
0

我們正在構建一個BLE設備以及與之通話的移動應用程序。這個移動應用程序是用Xamarin/C#編寫的,Android的東西在Android專用的PCL(可移植類庫)中編寫。藍牙低功耗 - 發送數據包非常慢

我已經將我的數據分成了小塊,因此它適合默認的20字節BLE數據包大小,我有一個96字節長的數據塊,因此我將它發送爲6個16字節的數據包。我已經設置好了,所以前5個數據塊的WriteType設置爲GattWriteType.NoResponse,只有最後一個數據塊的WriteType設置爲GattWriteType.Default。

對於前5個數據塊中的每一個,我調用SetValue()和WriteCharacteristic(),然後在寫入下一個數據塊之前等待OnCharacteristicWrite()通知。這樣做,我可以在大約20毫秒內寫入前5個數據塊。但是,第六塊(Write_With_Response)在WriteCharacteristic()和相應的OnCharacteristicWrite()通知之間需要大約300毫秒。

這是預期的延遲嗎?它似乎非常長!

有沒有需要調整的設置,讓BLE寫入更快地發生?

回答

0

如果您的目標是API 21及以上,我會嘗試在BluetoothGatt上使用requestConnectionPriority來獲得更高的連接優先級,這應該會提供更好的速度。

+0

設置該標誌對整體計時沒有影響,或導致傳輸問題。我並不感到驚訝,因爲只有一個藍牙對話發生(在BLE設備和平板電腦上),提高優先級似乎不太可能有幫助... –

+0

這是令人驚訝的,因爲我們每次使用速度都會提高它。儘管我們總是使用write和response,因爲當我們沒有使用任何響應時,我們遇到了問題。 – Zomb