LBLEClient
此類別允許使用者連線到其他的低功耗藍牙周邊裝置。
若欲存取其他低功耗藍牙周邊裝置,首先請建構一個 LBLEClient 物件,然後呼叫 LBLEClient::connect(address) 來連接到該裝置所對應的裝置地址,如下:
如果連線成功的話,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
string_to_write
要寫入的字串值
serviceIndex
介於 0 到 (getServiceCount() - 1) 之間的流水號
characteristicIndex
介於 0 到 (getCharacteristicCount(serviceIndex) - 1) 之間的流水號
Returns
>0 :表示寫入成功。
0 : 表示寫入失敗。
Last updated