0

我正在製作我的第一個藍牙LE應用程序,並且需要一些關於如何處理的建議。藍牙LE應用架構

我需要設備,如筆記本電腦(Windows,Linux,OSX,無所謂),跟蹤設備(iOS和Android)何時進入藍牙LE範圍。這些設備將運行一個使用BT LE的應用程序。每個移動設備應用程序都將擁有筆記本電腦將收集的唯一ID(可能是用戶ID)。我需要這種情況發生,無需用戶交互。而已。

哪一個應該是外設和中央應該是?
筆記本電腦應該是這個應用程序的核心嗎?
我也見過一個用於藍牙應用的GATT服務器。使用GATT服務器比外設和中央服務器更有意義嗎?

回答

1

我目前正在爲Core Bluetooth構建一個基於開源塊的包裝。

我會使用筆記本電腦作爲Central Manager,將聽所有外設。

該iDevice將是Peripheral Manager廣播本身和它的服務&的特點。

很遺憾,我沒有開發Windows和BLE的經驗,但是我的框架可以在iOS和OSX上工作,並且在發送或發現對方時都沒有問題。

關於您在iOS上使用CBUUID進行廣播時所使用的唯一ID。這可以用來唯一標識一個外設,因爲它是一個GUID。

對於這一切發生的應用程序需要在後臺運行或外設的廣播將被終止。

+0

謝謝。唯一的ID將存儲在iOS應用程序內。可以在沒有用戶交互的情況下將其發送到外設?如果我將iOS作爲外設,OSX作爲中心,您是否對示例代碼或教程有任何建議? – Heinrich

+0

如果iDevice使應用程序開放廣播具有特徵ID的服務,那麼中央管理器應該能夠發現外圍設備,連接到它並讀取其值,假設特徵不需要任何驗證。這意味着如果特徵沒有被加密,那麼用戶必須與中央管理器配對才能獲得該值。 –

+0

就像我說的。我正在研究一個旨在通過BLE讀取和發送數據更簡單的框架。一旦我開源了,我會發佈一個鏈接。 –

0

下載請注意,你可以簡單地去結賬https://github.com/SocialObjects-Software/LGBluetooth

下面是使用LGBluetooth的真棒例子(注意:即使連接是通過框架處理)

讀操作

 
    [LGUtils readDataFromCharactUUID:@"f045" 
          serviceUUID:@"5ec0" 
           peripheral:peripheral 
           completion:^(NSData *data, NSError *error) { 
            NSLog(@"Data : %s Error : %@", (char *)[data bytes], error); 
           }]; 

寫操作

 
     int8_t dataToWrite = 0xFF; 
     [LGUtils writeData:[NSData dataWithBytes:&dataToWrite length:sizeof(dataToWrite)] 
       charactUUID:@"cef9" 
       serviceUUID:@"5ec0" 
       peripheral:peripheral completion:^(NSError *error) { 
        NSLog(@"Error : %@", error); 
       }];