學物聯(lián)網,來萬物簡單IoT物聯(lián)網??!
bluetooth 介紹
該模塊為板上的藍牙控制器提供了相關接口。目前支持低功耗藍牙 (BLE)的Central(中央), Peripheral(外設), Broadcaster(廣播者), 和Observer (觀察者)角色,以及 GATT 的服務器(Server)和客戶端(Client)。
- 注意事項: 當前該模塊只支持低功耗藍牙(BLE),經典藍牙部分暫時不支持。
接口說明
BLE - 創(chuàng)建BLE對象
bluetooth.BLE
類功能: 該類為低功耗藍牙(BLE),是bluetooth模塊中主要的類。
- 函數(shù)功能: 創(chuàng)建BLE對象。
- 函數(shù)原型:ble = bluetooth.BLE()
- 參數(shù)說明: 無
- 返回值: BLE對象成功,返回單例的BLE對象;BLE對象創(chuàng)建失敗,返回None
- 示例代碼:
import bluetooth
ble = bluetooth.BLE()
active - 啟動/關閉BLE
- 函數(shù)功能: 啟動或關閉BLE,并返回當前狀態(tài)。
- 注意事項: 在使用此類上的任何其他方法之前,必須打開BLE。
- 函數(shù)原型:BLE.active(status)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
status | 布爾型 | 是 | True:打開BLE False: 關閉BLE |
- 返回值: 無
- 示例:
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
config - 獲取或配置BLE相關參數(shù)
-
函數(shù)功能: 獲取或設置 BLE 接口的配置值。要獲得一個值,參數(shù)名稱應為一個字符串,并且一次只查詢一個參數(shù)。要設置值,請使用關鍵字語法,并且一次可以設置一個或多個參數(shù)。
-
注意事項: 需確保BLE打開。如果不使用此函數(shù)配置將使用空值或默認值。
-
函數(shù)原型:BLE.config(‘param’ ) BLE.config(*, param=value, …)
-
參數(shù)說明: 當前支持的值是:
‘mac’:當前使用的地址,取決于當前的地址模式。這將返回一個元組。(addr_type, addr)
‘addr_mode’: 設置地址模式。值可以是:
0x00 - PUBLIC - 使用控制器的公共地址。 0x01 - RANDOM - 使用生成的靜態(tài)地址。 0x02 - RPA - 使用可解析的私有地址。 0x03 - NRPA - 使用不可解析的私有地址。 默認情況下使用 PUBLIC 地址,否則將使用 RANDOM 地址。
‘gap_name’: 獲取/設置服務0x1800使用的GAP設備名稱,特征0x2a00。這可以隨時設置并多次更改。
‘rxbuf’:獲取/設置用于存儲傳入事件的內部緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。該緩沖區(qū)對整個 BLE 驅動程序是全局的。此項配置值改大可以更好地處理突發(fā)傳入數(shù)據(例如掃描結果)和接收更大特征值的能力。
‘mtu’:獲取/設置將在 ATT MTU 交換期間使用的 MTU。生成的 MTU 將是該 MTU 和遠程設備的 MTU 中的最小值。ATT MTU 交換不會自動發(fā)生(除非遠程設備通過gattc_exchange_mtu啟動它)。
‘bond’:設置配對時是否啟用綁定。啟用后,配對請求將設置“綁定”標志,并且密鑰將由兩個設備存儲。
‘mitm’: 設置配對是否需要 MITM 保護。
‘io’:設置此設備的 I/O 功能。
可用選項有:
_IO_CAPABILITY_DISPLAY_ONLY = const(0) _IO_CAPABILITY_DISPLAY_YESNO = const(1) _IO_CAPABILITY_KEYBOARD_ONLY = const(2) _IO_CAPABILITY_NO_INPUT_OUTPUT = const(3) _IO_CAPABILITY_KEYBOARD_DISPLAY = const(4)
‘le_secure’:設置是否需要“LE Secure”配對。默認為 false(即允許“傳統(tǒng)配對”)。 -
返回值: 無
-
示例:
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
ble.config(rxbuf=1024)
irq - 事件處理
- 函數(shù)功能: 注冊一個BLE協(xié)議棧的事件回調。回調函數(shù)帶兩個參數(shù): event - 事件碼 和 data - 事件值的元組類型。
- 注意事項: 在元組中的addr, adv_data,char_data,notify_data,和uuid 是只讀的,指向bluetooth的內部ringbuffer,并且僅在IRQ處理函數(shù)的調用期間有效。如果程序需要保存這些值,以在 IRQ 處理程序返回后訪問(例如,通過將其保存在類實例或全局變量中),那么它需要通過使用bytes() 或bluetooth.UUID()等方式獲取數(shù)據的副本,像這樣:
connected_addr = bytes(addr) # equivalently: adv_data, char_data, or notify_data matched_uuid = bluetooth.UUID(uuid)
例如,掃描結果的 IRQ 處理程序可能會檢查adv_data 以決定它是否是正確的設備,然后才復制地址數(shù)據以在程序的其他地方使用。并且需要從 IRQ 處理程序中打印數(shù)據 print(bytes(addr))。
- 函數(shù)原型:BLE.irq(handler)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
handler | 函數(shù)型 | 是 | 函數(shù)帶兩個輸入參數(shù)event和data |
- 返回值: 無
- 示例:
def bt_irq(event, data):
if event == _IRQ_CENTRAL_CONNECT:
# A central has connected to this peripheral.
conn_handle, addr_type, addr = data
elif event == _IRQ_CENTRAL_DISCONNECT:
# A central has disconnected from this peripheral.
conn_handle, addr_type, addr = data
elif event == _IRQ_SCAN_RESULT:
# A single scan result.
addr_type, addr, adv_type, rssi, adv_data = data
elif event == _IRQ_SCAN_DONE:
# Scan duration finished or manually stopped.
pass
elif event == _IRQ_PERIPHERAL_CONNECT:
# A successful gap_connect().
conn_handle, addr_type, addr = data
elif event == _IRQ_PERIPHERAL_DISCONNECT:
# Connected peripheral has disconnected.
conn_handle, addr_type, addr = data
BLE.irq(bt_irq)
事件代碼是:
from micropython import const
_IRQ_CENTRAL_CONNECT = const(1)
_IRQ_CENTRAL_DISCONNECT = const(2)
_IRQ_GATTS_WRITE = const(3)
_IRQ_GATTS_READ_REQUEST = const(4)
_IRQ_SCAN_RESULT = const(5)
_IRQ_SCAN_DONE = const(6)
_IRQ_PERIPHERAL_CONNECT = const(7)
_IRQ_PERIPHERAL_DISCONNECT = const(8)
_IRQ_GATTC_SERVICE_RESULT = const(9)
_IRQ_GATTC_SERVICE_DONE = const(10)
_IRQ_GATTC_CHARACTERISTIC_RESULT = const(11)
_IRQ_GATTC_CHARACTERISTIC_DONE = const(12)
_IRQ_GATTC_DESCRIPTOR_RESULT = const(13)
_IRQ_GATTC_DESCRIPTOR_DONE = const(14)
_IRQ_GATTC_READ_RESULT = const(15)
_IRQ_GATTC_READ_DONE = const(16)
_IRQ_GATTC_WRITE_DONE = const(17)
_IRQ_GATTC_NOTIFY = const(18)
_IRQ_GATTC_INDICATE = const(19)
_IRQ_GATTS_INDICATE_DONE = const(20)
_IRQ_MTU_EXCHANGED = const(21)
_IRQ_L2CAP_ACCEPT = const(22)
_IRQ_L2CAP_CONNECT = const(23)
_IRQ_L2CAP_DISCONNECT = const(24)
_IRQ_L2CAP_RECV = const(25)
_IRQ_L2CAP_SEND_READY = const(26)
_IRQ_CONNECTION_UPDATE = const(27)
_IRQ_ENCRYPTION_UPDATE = const(28)
_IRQ_GET_SECRET = const(29)
_IRQ_SET_SECRET = const(30)
gap_advertise - 開啟或關閉BLE廣播
- 函數(shù)功能: 設置一個特定的廣播間隔(單位是微秒)開啟BLE廣播,此間隔最低為625us。 關閉BLE廣播時,將廣播間隔參數(shù)(interval_us)設為None。
- 注意事項: 廣播者角色時使用
- 函數(shù)原型:*BLE.gap_advertise(interval_us, adv_data=None, , resp_data=None, connectable=True)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
interval_us | 整型 | 是 | 廣播間隔,為None時關閉廣播 |
adv_data | string | 否 | adv_data可指向實現(xiàn)緩沖協(xié)議的任何類型(例如bytes,bytearray,str),為None時則使用上一次調用時候的值 |
resp_data | string | 否 | resp_data可指向實現(xiàn)緩沖協(xié)議的任何類型(例如bytes,bytearray,str),為None時則使用上一次調用時候的值 |
connectable | 布爾型 | 否 | 表示是否可連接 |
- 返回值: 無
- 示例:
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
# payload 需要具體定義
ble.gap_advertise(500000, adv_data=payload)
gap_scan - BLE掃描
- 函數(shù)功能: 以一個特定的間隔(interval_us)和 窗口(window_us)執(zhí)行BLE掃描操作; 掃描器將每interval_us微秒運行window_us 微秒,總共持續(xù)duration_ms毫秒。默認間隔和窗口分別為 1.28 秒和 11.25 毫秒(后臺掃描)
- 注意事項: 對于每個掃描結果,將觸發(fā)_IRQ_SCAN_RESULT事件,并帶有事件數(shù)據(addr_type, addr, adv_type, rssi, adv_data)。 當掃描停止時(由于持續(xù)時間完成或明確停止),將觸發(fā)_IRQ_SCAN_DONE事件。 觀察者角色時使用。
addr_type 值表示公共或隨機地址:
0x00 - 公共 0x01 - RANDOM(靜態(tài)、RPA 或 NRPA,類型在地址本身中編碼)
adv_type 值對應于藍牙規(guī)范:
0x00 - ADV_IND - 可連接和可掃描的無向廣告 0x01 - ADV_DIRECT_IND - 可連接的定向廣告 0x02 - ADV_SCAN_IND - 可掃描的無向廣告 0x03 - ADV_NONCONN_IND - 不可連接的無向廣告 0x04 - SCAN_RSP - 掃描響應
- 函數(shù)原型:BLE.gap_scan( duration_ms , interval_us=1280000 , window_us=11250 , active=False )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
duration_ms | 整型 | 是 | 掃描持續(xù)時間,單位為毫秒,當設為0時,無限期掃描;當設為None時停止掃描 |
interval_us | 整型 | 否 | 掃描間隔時間,單位為微秒 |
window_us | 整型 | 否 | 掃描窗口時間,單位為微秒 |
active | 布爾型 | 否 | 設為True時,表示要在結果中接受掃描響應(scan_rsp),默認為False |
- 返回值: 無
- 示例:
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
ble.gap_scan(2000, 30000, 20000)
gap_connect - 連接BLE外圍設備
- 函數(shù)功能: 連接BLE外圍設備
- 注意事項: 中央設備(Central)以觀察者角色通過gap_scan方法獲得外圍設備信息,或者已知外圍設備地址, 之后可通過設備信息觸發(fā)BLE連接請求。 成功后,將觸發(fā)_IRQ_PERIPHERAL_CONNECT事件,該事件data中帶有連接句柄。
- 函數(shù)原型:BLE.gap_connect( addr_type , addr , scan_duration_ms=2000 , min_conn_interval_us=None , max_conn_interval_us=None )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
addr_type | 枚舉型 | 是 | 0x00 - 公共地址;0x01 - 隨機地址 |
addr | string | 是 | 要連接的設備地址 |
scan_duration_ms | 整型 | 否 | 設備將等待最多scan_duration_ms以從設備接收廣播負載 |
min_conn_interval_us | 整型 | 否 | 連接間隔的最小值,單位為微秒 |
max_conn_interval_us | 整型 | 否 | 連接間隔的最大值,單位為微秒 |
- 返回值: 無
- 示例:
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
# addr = xx:xx:xx:xx:xx:xx
ble.connect(0x00, addr)
gap_disconnect - 斷開BLE外圍設備
-
函數(shù)功能:
斷開指定連接句柄的BLE連接??梢允菑闹醒朐O備發(fā)起,也可是由外圍設備發(fā)起。 -
注意事項:
成功后,將觸發(fā)_IRQ_PERIPHERAL_DISCONNECT 或者 _IRQ_CENTRAL_DISCONNECT事件 -
函數(shù)原型:
BLE.gap_disconnect(conn_handle)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
-
返回值:
False: 該連接句柄未連接;
True: 表示調用成功; -
示例:
import bluetooth
ble = bluetooth.BLE()
...
ble.gap_disconnect(handle)
gatts_register_services - 注冊GATT服務
一個 GATT 服務器有一組注冊服務。每個服務可能包含一個或多個特性,每個特性都有一個值。特征還可以包含描述符,描述符本身也具有值。 這些值存儲在本地,并由服務注冊期間生成的“值句柄”訪問。它們也可以從遠程客戶端設備讀取或寫入。此外,服務器可以通過連接句柄主動向連接的客戶端“通知”特征。 在大多數(shù)情況下,外圍設備充當GATT 服務器。文章來源:http://www.zghlxwxcb.cn/news/detail-808185.html
- 函數(shù)功能: 使用指定的服務配置服務器
- 注意事項: 在注冊服務之前必須停BLE廣播。每個服務都是一個兩個元素的元組,其中一個是UUID, 另一個是特征值的列表。 每個特征值都是一個兩個或三個元素的元組,包含一個UUID, 一個標示值,另一個可選的描述符列表; 每個描述符都一個兩個元素的元組,包含一個UUID, 一個標示值。 這些標示值是由下面定義的標示按位或的組合,他們設置了特征或者描述符的行為及安全和隱私要求。
from micropython import const
_FLAG_BROADCAST = const(0x0001)
_FLAG_READ = const(0x0002)
_FLAG_WRITE_NO_RESPONSE = const(0x0004)
_FLAG_WRITE = const(0x0008)
_FLAG_NOTIFY = const(0x0010)
_FLAG_INDICATE = const(0x0020)
_FLAG_AUTHENTICATED_SIGNED_WRITE = const(0x0040)
_FLAG_AUX_WRITE = const(0x0100)
_FLAG_READ_ENCRYPTED = const(0x0200)
_FLAG_READ_AUTHENTICATED = const(0x0400)
_FLAG_READ_AUTHORIZED = const(0x0800)
_FLAG_WRITE_ENCRYPTED = const(0x1000)
_FLAG_WRITE_AUTHENTICATED = const(0x2000)
_FLAG_WRITE_AUTHORIZED = const(0x4000)
- 函數(shù)原型:BLE.gatts_register_services( services_definition )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
services_definition | 列表 | 是 | 服務列表 |
- 返回值: 一個元組列表, 每個元組代表一個服務,元組中的每個元素對應一個值句柄,特征和描述符句柄按照定義的順序平展為同一個元組。 以下示例注冊了兩個服務(HR 和 UART),這三個值句柄(hr, tx, rx)可用于gatts_read, gatts_write, gatts_notify和gatts_indicate。
- 示例:
HR_UUID = bluetooth.UUID(0x180D)
HR_CHAR = (bluetooth.UUID(0x2A37), bluetooth.FLAG_READ | bluetooth.FLAG_NOTIFY,)
HR_SERVICE = (HR_UUID, (HR_CHAR,),)
UART_UUID = bluetooth.UUID('6E400001-B5A3-F393-E0A9-E50E24DCCA9E')
UART_TX = (bluetooth.UUID('6E400003-B5A3-F393-E0A9-E50E24DCCA9E'), bluetooth.FLAG_READ | bluetooth.FLAG_NOTIFY,)
UART_RX = (bluetooth.UUID('6E400002-B5A3-F393-E0A9-E50E24DCCA9E'), bluetooth.FLAG_WRITE,)
UART_SERVICE = (UART_UUID, (UART_TX, UART_RX,),)
SERVICES = (HR_SERVICE, UART_SERVICE,)
( (hr,), (tx, rx,), ) = bt.gatts_register_services(SERVICES)
gatts_read - 讀取本地值
- 函數(shù)功能: 讀取本地GATT服務中的特征值
- 注意事項: 這個值可能是通過本地gatts_write寫入的,也可能是通過遠程客戶端寫入的。
- 函數(shù)原型:BLE.gatts_read(value_handle)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
value_handle | 整型 | 是 | 值句柄 |
- 返回值: 無
- 示例: 無
gatts_write - 寫入本地值
- 函數(shù)功能: 寫入本地GATT服務中的特征值
- 注意事項: 寫入后,客戶端可以讀取該值。
- 函數(shù)原型:BLE.gatts_write( value_handle , data , send_update=False )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
value_handle | 整型 | 是 | 值句柄 |
data | string | 是 | 寫入數(shù)據 |
send_update | 布爾型 | 否 | 為True時,任何訂閱此值的此客戶端都將收到該特征值寫入的通知 |
- 返回值: 無
- 示例: 無
gatts_notify - 發(fā)送通知請求
- 函數(shù)功能: 向連接的客戶端發(fā)送通知請求
- 注意事項: 無論客戶端是否訂閱了此特征值,都會發(fā)送通知。
- 函數(shù)原型:BLE.gatts_notify( conn_handle , value_handle , data=None )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
value_handle | 整型 | 是 | 值句柄 |
data | string | 否 | 如果data不為None,則將該值發(fā)送給客戶端,本地值不會被修改。如果data為None,則將發(fā)送當前本地值給客戶端 |
- 返回值: 無
- 示例: 無
gatts_indicate - 發(fā)送指示請求
- 函數(shù)功能: 向連接的客戶端發(fā)送指示請求
- 注意事項: 無論客戶端是否訂閱了此特征值,都會發(fā)送通知。 在確認(或失敗,如超時)時,將觸發(fā)_IRQ_GATTS_INDICATE_DONE 事件
- 函數(shù)原型:BLE.gatts_indicate( conn_handle , value_handle )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
value_handle | 整型 | 是 | 值句柄 |
- 返回值: 無
- 示例: 無
gatts_set_buffer - 設置緩沖區(qū)
- 函數(shù)功能: 設置值的內部緩沖區(qū)大?。ㄅcByte為單位),默認值是20.
- 注意事項: 無
- 函數(shù)原型:BLE.gatts_set_buffer ( value_handle , len , append = False)
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
value_handle | 整型 | 是 | 值句柄 |
len | 整型 | 是 | 緩沖區(qū)大小 |
append | 布爾值 | 否 | 為True時,將使所有遠程寫入追加到當前值,而不是覆蓋當前值,執(zhí)行gatts_read讀取值后該值清零 |
- 返回值: 無
- 示例: 無
gattc_discover_services - 查詢服務
GATT 客戶端(Client)可發(fā)現(xiàn)和讀取/寫入遠程GATT服務上的特征。 一般情況下,Central 角色充當GATT 客戶端。文章來源地址http://www.zghlxwxcb.cn/news/detail-808185.html
- 函數(shù)功能: 查詢已連接GATT服務器的服務
- 注意事項: 每發(fā)現(xiàn)一個服務,都將觸發(fā) _IRQ_GATTC_SERVICE_RESULT 事件,服務操作完畢后,將觸發(fā)_IRQ_GATTC_SERVICE_DONE 事件。
- 函數(shù)原型:BLE.gattc_discover_services( conn_handle , uuid=None )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
uuid | string | 否 | 指定服務的uuid, 當uuid不為None時,僅查詢該服務 |
- 返回值: 無
- 示例: 無
gattc_discover_characteristics - 查詢特征
- 函數(shù)功能: 查詢連接的服務器以獲取指定范圍內的特征
- 注意事項: 每發(fā)現(xiàn)一個特征,都將觸發(fā) _IRQ_GATTC_CHARACTERISTIC_RESULT 事件,發(fā)現(xiàn)特征操作完畢后,將觸發(fā) _IRQ_GATTC_CHARACTERISTIC_DONE 事件。
- 函數(shù)原型:BLE.gattc_discover_characteristics( conn_handle , start_handle , end_handle , uuid=None )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
start_handle | 整型 | 是 | 起始的特征句柄 |
end_handle | 整型 | 是 | 結束的特征句柄 |
uuid | string | 否 | 指定特征的uuid, 當uuid不為None時,僅查詢該特征 |
- 返回值: 無
- 示例: 無
gattc_discover_descriptors - 查詢描述符
- 函數(shù)功能: 向連接的服務器查詢指定范圍內的描述符
- 注意事項: 每發(fā)現(xiàn)一個描述符,都將觸發(fā) _IRQ_GATTC_DESCRIPTOR_RESULT 事件,發(fā)現(xiàn)描述符操作結束后,將觸發(fā) _IRQ_GATTC_DESCRIPTOR_DONE 事件。
- 函數(shù)原型:BLE.gattc_discover_descriptors( conn_handle , start_handle , end_handle )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
start_handle | 整型 | 是 | 起始的特征句柄 |
end_handle | 整型 | 是 | 結束的特征句柄 |
- 返回值: 無
- 示例: 無
gattc_read - GATT遠程讀操作
- 函數(shù)功能: 向連接的服務器發(fā)出遠程讀取
- 注意事項: 當值可用時,將觸發(fā) _IRQ_GATTC_READ_RESULT 事件,里面帶有讀取的結果。此外,讀取完畢將觸發(fā)_IRQ_GATTC_READ_DONE 事件。
- 函數(shù)原型:BLE.gattc_read( conn_handle , value_handle )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
value_handle | 整型 | 是 | 要讀取的特征的句柄 |
- 返回值: 無
- 示例: 無
gattc_write - GATT遠程寫操作
- 函數(shù)功能: 向連接的服務器發(fā)出遠程寫
- 注意事項: 如果收到來自遠程服務器的響應,將觸發(fā) _IRQ_GATTC_WRITE_DONE 事件。
- 函數(shù)原型:BLE.gattc_write( conn_handle , value_handle , data , mode=0 )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
value_handle | 整型 | 是 | 要寫的特征的句柄 |
mode | 整型 | 是 | mode=0(默認值),是無響應寫入,對方不返回確認,也不會觸發(fā)任何事件; mode=1是 write-with-response,遠程服務器發(fā)送它收到數(shù)據的響應/確認 |
- 返回值: 無
- 示例: 無
gattc_exchange_mtu - 交換MTU
- 函數(shù)功能: 觸發(fā)MTU交換流程,使用之前config的MTU值。
- 注意事項: 當MTU交換完成后,將觸發(fā) _IRQ_MTU_EXCHANGED 事件。 MTU交換通常由Central 角色設備發(fā)起。有些底層協(xié)議棧不支持MTU交換功能。
- 函數(shù)原型:BLE.gattc_exchange_mtu( conn_handle )
- 參數(shù)說明:
參數(shù) | 類型 | 必選參數(shù)? | 說明 |
---|---|---|---|
conn_handle | 整型 | 是 | 連接句柄 |
- 返回值: 無
- 示例: 無
bluetooth.UUID
- 類功能: 創(chuàng)建具有指定值的UUID實例。
- 注意事項: UUID可以是一個16位整數(shù),例如 0x2908; 也可以是128位的UUID字符,例如’6E400001-B5A3-F393-E0A9-E50E24DCCA9E‘
- 示例:
HR_UUID = bluetooth.UUID(0x180D)
HR_CHAR = (bluetooth.UUID(0x2A37), bluetooth.FLAG_READ | bluetooth.FLAG_NOTIFY,)
HR_SERVICE = (HR_UUID, (HR_CHAR,),)
UART_UUID = bluetooth.UUID('6E400001-B5A3-F393-E0A9-E50E24DCCA9E')
UART_TX = (bluetooth.UUID('6E400003-B5A3-F393-E0A9-E50E24DCCA9E'), bluetooth.FLAG_READ | bluetooth.FLAG_NOTIFY,)
UART_RX = (bluetooth.UUID('6E400002-B5A3-F393-E0A9-E50E24DCCA9E'), bluetooth.FLAG_WRITE,)
UART_SERVICE = (UART_UUID, (UART_TX, UART_RX,),)
SERVICES = (HR_SERVICE, UART_SERVICE,)
( (hr,), (tx, rx,), ) = bt.gatts_register_services(SERVICES)
到了這里,關于物聯(lián)網AI MicroPython學習之語法 bluetooth藍牙的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!