主控裝置
可以透過 LBLECentral 類別來將 LinkIt 7697 設定為低功耗藍牙的主控裝置。
這個類別能夠讓開發者創建主控裝置,以掃描周圍的低功耗藍牙的周邊。在使用 LBLECentral 之前,需要先初始化 LBLE 程式庫,如下所示:
LBLE.begin();
while(!LBLE.ready())
{
delay(10);
}
Serial.println("BLE ready");
// 開始掃描周圍的周邊裝置的廣播信息
LBLECentral.scan();
for(int i = 0; i < scanner.getPeripheralCount(); ++i)
{
Serial.println(LBLECentral.getName(i));
}
需要注意的是,周邊裝置進行的廣播內容是由周邊裝置自行決定的。比如說,iBeacon 信標裝置會廣播自己的識別碼(UUID)等資料欄位,而一個心律監測器則可能廣播自己的裝置名稱,以及自己提供的服務的識別碼。開發者需要自己解析這些資料欄位的內容。
針對 iBeacon,LBLECentral
提供了兩個簡單的工具函示 isIBeacon
跟 getIBeaconInfo
,可以協助解析 iBeacon 的相關資料欄位。
若需要分析其他類型的資料欄位,可以參考 File > Examples > LBLE > ScanPeripherals
這個範例。下面是此範例的輸出結果的參考結果:
..........Total 2 devices found:
idx address flag RSSI
0 C6:32:4D:E8:51:75(RAN) 1A -80 OMATE X by Unknown, service: (no service info)
1 C0:20:63:BA:FF:8A(RAN) 6 -99 BT_HEADSET_DEMO_LE by Unknown, service: (no service info)
------scan stopped-------
連接到藍牙周邊裝置
當用 LBLECentral 取得鄰近的周邊裝置之後,接下來可以用 getAddress()
取得該周邊裝置的地址,並且用 LBLEClient 物件來連接至該地址:
serverAddress = LBLECentral.getBLEAddress(idx);
LBLEClient client;
client.connect(serverAddress);
其中 connect
這個函示可能會花費較多時間執行,因為它除了連線到藍牙裝置之外,還會嘗試列舉出該裝置可用的服務與可讀寫的資料特性。當 connect()
函示完成之後,可以用 LBLEClient 來讀寫資料特性:
// read the device manufacturer
// first we check if "Device Information"(0x180A) service is available:
if(client.hasService(0x180A))
{
const String name = client.readCharacteristicString(LBLEUuid(0x2A29));
if(name.length() > 0)
{
Serial.print("manufacturer=");
Serial.println(name);
}
}
請參考 LBLE > ConnectPeripheral 這個範例來瞭解如何讀寫裝置的資料特性。
Last updated