2016-04-21 165 views
1

我期待創建一個跨平臺的應用程序,允許我定期通告設備Mac地址(儘管我已經意識到由於某種原因我收到3個單一設備),以便它可以被記錄並用於參考短手動用戶廣告,使得每個廣告可以由特定用戶識別;然而,似乎我已經陷入了有關ULEID在BLE上的問題瞭解自定義BLE UUID

搜索了一段時間後,我仍然對BLE服務中的UUID有點困惑。最初我決定使用一個自定義的BLE,它反覆無法做出奇怪的錯誤宣告,或者由於數據包很大,即使數據只有一個字節長,也是如此。我意識到UUID的格式必須是xxxxxxxx-0000-1000-8000-00805F9B34FB。除此之外的任何內容都會發送完整的UUID,當廣告未被連接時這個UUID太大。我還發現,我可以在上半部分使用任何UUID前綴(0000XXXX),該前綴不在保留範圍0x000E - 0x01FF中。

這是一個正確的假設,我可以使用與標準00000200 - 0000FFFF不衝突的任何UUID。我問,因爲我在選擇該範圍內的UUID時似乎遇到了問題,並且據我瞭解,在範圍之外創建自定義UUID是BLE上的一個壞主意,因爲它將被迫使用20-23字節中的16個字節。有關這個的任何輸入?

也是預先定義的方式發送用戶設備的廣告,以便它可以被緩存並用於標識其他用戶廣告?

編輯:

沒有到達該項目需要連接手機的跨平臺與其他設備一起以無連接的方式。最初,我計劃讓設備反覆宣傳它的身份以及可用於唯一標識用戶消息的名稱和唯一MAC地址。任何沒有緩存用戶身份的設備都會簡單地丟棄該用戶的傳入數據包。 - kdgwill 9分鐘前

我實際上認爲如果我能以某種方式連接到5-10個設備,然而,這個想法並不是在添加新設備時不打擾用戶/重複提示。因此,我認爲使用廣告和洪水會有所幫助,但味精大小各不相同。有沒有可能會打擾用戶一次連接提示並自動連接每個額外的BLE設備。如果我能以某種方式以1:1的比例連接多個設備,而無需每次都提示用戶,同時仍然掃描其他可能的連接,這將非常有用,但我不認爲BLE允許這樣做。 - kdgwill 8秒前編輯

使用identifierForVendor或CBAdvertisementDataServiceUUIDsKey是唯一標識每個用戶的好方法;但是,這意味着如果我不使用1個註冊的UUID,我可能只是暫時隨機選擇一個UUID。那開銷將是4-16 +然而很多字節需要識別每個數據包。

+0

一些鏈接我已經看到但是他們是很多人不是有時發生衝突 **的https://www.bluetooth.com/specifications/assigned-numbers/service-discovery **的https:// WWW .bluetooth.com/specifications/assigned-numbers ** http://processors.wiki.ti.com/index.php/Tutorial:_How_to_Create_a_Custom_Bluetooth_Smart_Embedded_Application_with_the_CC2650DK#UUID – kdgwill

+0

** http://stackoverflow.com/questions/10243769/什麼範圍的藍牙uuids可以使用供應商定義配置文件 ** http://stackoverflow.com/questions/28714704/custom-ble-service-with-spp-support * * http://stackoverflow.com/questions/21428455/android-ble-using-custom-service-uuid ** http://stackoverflow.com/questions/18019161/startlescan-with-128-bit-uuids-沒有工作在本機android安裝執行/ ** https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch04.html – kdgwill

回答

1

如果您向藍牙聯盟註冊設備,則只能使用較短的4字節UUID,否則您必須使用較長的16字節UUID。

你是正確的,你可以選擇服務(和特性)的16字節的UUID。您應該準隨機選擇ID,並且始終對該特定類型的服務/特性使用相同的UUID。

由於您發送的每個數據包都必須包含目標服務UUID,因此使用較長的UUID會佔用有效負載中可用的大量字節。每個數據包可用的字節越少意味着越多的數據包必須發送給更大的消息,這會增加發送消息所需的時間。如果你不發送消息,而只是使用廣告數據,那麼這不是問題,儘管你的廣告數據可用的字節更少。

MAC地址在使用iOS藍牙框架的代碼中不可用。 iOS 8+可以發送一個隨機MAC地址,因此無論如何您都不應該依賴於識別設備。

由於MAC地址不適用於您,您可能希望通過BLE連接連接併發送一個唯一的ID(例如identifierForVendor),或者可能通過CBAdvertisementDataLocalNameKey在廣告數據中包含一個小ID。

+0

到達需要在項目以無連接的方式將手機與其他設備連接在一起。最初,我計劃讓設備反覆宣傳它的身份以及可用於唯一標識用戶消息的名稱和唯一MAC地址。任何沒有緩存用戶身份的設備都會簡單地丟棄該用戶的傳入數據包。 – kdgwill

+0

我實際上認爲,如果我可以以某種方式一次連接5-10臺設備,這樣會更容易;然而,這個想法並不是在添加新設備時不打擾用戶/重複提示。因此,我認爲使用廣告和洪水會有所幫助,但味精大小各不相同。有沒有可能會打擾用戶一次連接提示並自動連接每個額外的BLE設備。如果我能以某種方式以1:1的比例連接多個設備,而無需每次都提示用戶,同時仍然掃描其他可能的連接,這將非常有用,但我不認爲BLE允許這樣做。 – kdgwill

+0

使用identifierForVendor或CBAdvertisementDataServiceUUIDsKey是唯一標識每個用戶的好方法;但是,這意味着如果我不使用1個註冊的UUID,我可能只是暫時隨機選擇一個UUID。那開銷將是4-16 +然而很多字節需要識別每個數據包。 – kdgwill