LBLEClient

此類別允許使用者連線到其他的低功耗藍牙周邊裝置。

若欲存取其他低功耗藍牙周邊裝置,首先請建構一個 LBLEClient 物件,然後呼叫 LBLEClient::connect(address) 來連接到該裝置所對應的裝置地址,如下:

// assume LBLECentral::scan has already performed.
// connect to the 1st device scanned.
LBLEClient client;
LBLEAddress serverAddress = LBLECentral.getBLEAddress(0);
client.connect(serverAddress);
while(!client.connected()){
    delay(100); 
}
// now we are connnected.

如果連線成功的話,client.connected() 將會回傳 true。

接著,搜尋該裝置是否支援開發者所需要的服務,可以透過這幾個 API 來使用:

  • getServiceCount()

  • getServiceUuid(index)

  • hasService(uuid).

當確認該裝置上面有所需的服務之後,可以利用不同的 API 來讀寫該服務所提供的資料特性。此時有兩個選擇:

  • 根據資料特性的 UUID 來讀寫:如果本來就知道要讀寫的資料特性的 UUID 的話,此方法相當簡便。然而,有些情況,同一個裝置的不同服務,是有可能會提供相同 UUID 的資料特性的。用這個方法的話,最終可能會存取到意料之外的資料特性。

  • 根據資料特性的流水號來讀寫:開發者要先取得每一個服務的流水號,再取得每一個服務當中的每一個資料特性的流水號,並搜尋自己所需要的資料特性的 UUID。最後,可以根據服務與特性的流水號來進行讀寫。利用這個方法,需要呼叫比較多的 API,但好處是可以處理有相同的 UUID 的資料特性的情形。

要注意的是,在讀寫資料特性時,LBLE 程式庫不會進行任何的型別檢查。所以,必須自行確保讀寫的資料特性的資料型別,在周邊裝置跟主控裝置上面都是一致的。

Constructors

LBLEClient

建構一個可以連線到周邊裝置的 LBLEClient 物件。

Syntax

Parameters

none

Returns

LBLEClient 物件

Connection Methods

connect()

connected()

disconnect()

根據裝置地址,開始連接至一個低功耗藍牙周邊裝置。

你可以利用 LBLECentral 單件來掃描鄰近的周邊裝置以及其對應的裝置地址。

呼叫此函式之後,可透過不斷呼叫 connected() 方法來確認是否已經成功完成連線。請注意,連線過程當中,程式庫會列舉遠端裝置的服務以及資料特性,所以會需要一些時間才能完成連線。

Syntax

Parameters

none

Returns

回傳 true:開始連線。請注意,這並不代表連線已經完成。

回傳 false:無法開始連線。

Service Methods

hasService()

getServiceCount()

getServiceName()

getServiceUuid()

getCharacteristicCount()

查詢遠端的周邊裝置是否有此 UUID 對應的服務。

Syntax

bool serviceAvailable = client.hasService(serviceUUID);

Parameters

serviceUUID 128-bit or 16-bit UUID to identify the service.

Returns

回傳 true:遠端的周邊裝置有支援此服務,反之則回傳 false。

Characteristic Methods

getCharacteristicUuid()

readCharacteristicString()

readCharacteristicInt()

writeCharacteristicFloat()

writeCharacteristicString()

writeCharacteristicInt()

writeCharacteristicFloat()

根據流水號取得資料特性的 UUID

Syntax

LBLEUuid uuid = clinet.getCharacteristicUuid(serviceIndex, characteristicIndex);

Parameters

serviceIndex

介於 0 到 (getServiceCount() - 1) 之間的流水號

characteristicIndex

介於 0 到 (getCharacteristicCount(serviceIndex) - 1) 之間的流水號

Returns

該流水號所對應的資料特性的UUID

將字串資料寫入遠端周邊裝置的特性。

Syntax

client.writeCharacteristicString(uuid, string_to_write)

client.writeCharacteristicString(serviceIndex, characteristicIndex, string_to_write)

Parameters

uuid
要存取的資料特性的 UUID

string_to_write

要寫入的字串值

serviceIndex

介於 0 到 (getServiceCount() - 1) 之間的流水號

characteristicIndex

介於 0 到 (getCharacteristicCount(serviceIndex) - 1) 之間的流水號

Returns

>0 :表示寫入成功。

0 : 表示寫入失敗。

Last updated