日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小程序蓝牙BLE——自动连接设备(手环)

發布時間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小程序蓝牙BLE——自动连接设备(手环) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解小程序藍牙API:

/** *藍牙API: * 1.初始化藍牙(判斷藍牙是否可用);openBluetoothAdapter* 2.獲取藍牙設備狀態(藍牙是否打開);getBluetoothAdapterState* 3.監控藍牙打開/關閉的動作;onBluetoothAdapterStateChange* 4.開始搜索周圍是否有設備;startBluetoothDevicesDiscovery* 5.獲取周圍設備列表;getBluetoothDevices* 6.停止搜索周圍設備,減少消耗資源;stopBluetoothDevicesDiscovery* 7.過濾目標設備;* 8.是否已經連接藍牙設備:* a.獲取已經連接的藍牙設備;getConnectedBluetoothDevices* b.創建新的低功耗藍牙設備連接deviceId;createBLEConnection* 9.獲取設備的信息* a.獲取藍牙設備的服務碼;getBLEDeviceServices* b.獲取藍牙設備的特征值;getBLEDeviceCharacteristics* c.獲取藍牙設備的write和notify服務;readBLECharacteristicValue* 10.向藍牙設備寫入指令;writeBLECharacteristicValue* 11.只有,開啟藍牙設備的notify提醒功能;notifyBLECharacteristicValueChange* 12.才能,監聽接受藍牙設備返回的數據;onBLECharacteristicValueChange* 13.斷開低功耗的藍牙連接;closeBLEConnection* 14.關閉藍牙,釋放資源:closeBluetoothAdapter* * */

?編程邏輯步驟:

/*** 第一部分:藍牙設配器* 1.微信小程序:是否支持* 2.手機藍牙:是否可用;* 3.手機藍牙:是否開啟* 4.監聽開啟手機藍牙狀態的事件* */ /*** 第二部分:開啟搜索、過濾、連接、關閉搜索* 1.搜索設備;* 2.獲取設備列表;* 3.連接設備,成功后關閉實時搜索;** *//*** 第三部分:服務值、特征、write和notify服務* 1.獲取服務值;* 2.特征;* 3.write和notify服務* * *//*** 第四部分:向藍牙寫入指令、監控接受數據* 1.寫入指令;* 對應命令轉為16進制的形式* START = [83, 84, 65, 82, 84]+時間戳* STOP = [83, 84, 79, 80]* REQDATA = [82, 69, 81, 68, 65, 84, 65]* AUTO_ACC= [ ...] * 2.監控接收數據;* * *//*** 第五部分:斷開連接* 1.斷開藍牙;* 2.清楚緩存* */

?

?斷開后、自動連接(半成熟):

?wx.onBluetoothAdapterStateChange();//監聽藍牙適配器狀態變化事件,判斷連接狀態;

?wx.getConnectedBluetoothDevices();//是否有已連接設備,否根據安卓deviceId||蘋果uuid唯一識別符重新: wx.getBLEDeviceServices()-->....-->wx.createBLEConnection()?重新自動連接;

?

附錄:藍牙設備的硬件的知識點:

硬件字節

ArrayBuffer:類型化數組,JavaScript操作二進制數據的一個接口。 WebGL,指瀏覽器與顯卡之間的通信接口,為了滿足JavaScript與顯卡之間大量的、實時的數據交換,它們之間的數據通信必須是二進制的,而不能是傳統的文本格式。 比如,以文本格式傳遞一個32位整數,兩端的JavaScript腳本與顯卡都要進行格式轉化,將非常耗時。這時要是存在一種機制,可以像C語言那樣,直接操作字節,然后將4個字節的32位整數,以二進制形式原封不動地送入顯卡,腳本的性能就會大幅提升。 類型化數組(Typed Array)就是在這種背景下誕生的。它很像C語言的數組,允許開發者以數組下標的形式,直接操作內存。有了類型化數組以后,JavaScript的二進制數據處理功能增強了很多,接口之間完全可以用二進制數據通信。

ArrayBuffer作為內存區域,可以存放多種類型的數據。不同數據有不同的存儲方式,這就叫做“視圖”。目前,JavaScript提供以下類型的視圖:

Int8Array:8位有符號整數,長度1個字節。

Uint8Array:8位無符號整數,長度1個字節。

Int16Array:16位有符號整數,長度2個字節。

Uint16Array:16位無符號整數,長度2個字節。

Int32Array:32位有符號整數,長度4個字節。

Uint32Array:32位無符號整數,長度4個字節。

Float32Array:32位浮點數,長度4個字節。

Float64Array:64位浮點數,長度8個字節。

?

parseInt(s, 16)//十六進制字符串轉字節數組

str.toString(16)//字節數組轉十六進制字符串

float:浮點數
unsigned:無符號
int :向下取整
char:字符

ArrayBuffer:類型化數組

客戶端要產生一個唯一的標識符:deviceId、MAC地址、AndroidId:

AndroidId:

  獲取AndroidId是不需要權限的但是AndroidId是可能變的,AndroidId是在用戶第一次激活這個設備時產生的所以當用戶重置手機時AndroidId會產生變化,理論上這個AndroidId是可以接受的畢竟重置手機這個事發生也不會太頻繁;

MAC地址:

  可以使用WIFI的MAC地址來作為標識符,感覺現階段這種方式比較可靠總結如下:Mac地址是唯一的,直接產生在硬件上基本上不會變更;

DeviceId:

  區別設備唯一設備ID。

?其他:

1、profile?

  profile可以理解為一種規范,一個標準的通信協議,它存在于從機中。藍牙組織規定了一些標準的profile,例如 HID OVER GATT ,防丟器 ,心率計等。每個profile中會包含多個service,每個service代表從機的一種能力。藍牙設備可以包括多個Profile,一個Profile中有多個Service,

2、service服務

  service可以理解為一個服務,在ble從機中,通過有多個服務,例如電量信息服務、系統信息服務等,每個service中又包含多個characteristic特征值。每個具體的characteristic特征值才是ble通信的主題。比如當前的電量是80%,所以會通過電量的characteristic特征值存在從機的profile里,這樣主機就可以通過這個characteristic來讀取80%這個數據;一個Service中有多個Characteristic,

3、characteristic特征

  characteristic特征值,例如:read、notify、write等特征…;ble主從機的通信均是通過characteristic的read、write來實現,可以 理解為一個標簽,通過這個標簽可以獲取或者寫入想要的內容。

4、UUID

  UUID,統一識別碼,我們剛才提到的service和characteristic,都需要一個唯一的uuid來標識

  每個從機都會有一個叫做profile的東西存在,不管是上面的自定義的simpleprofile,還是標準的防丟器profile,他們都是由一些列service組成,然后每個service又包含了多個characteristic,主機和從機之間的通信,均是通過characteristic來實現。

  實際產品中,每個藍牙4.0的設備都是通過服務和特征來展示自己的,服務和特征都是用UUID來唯一標識的。一個設備必然包含一個或多個服務,每個服務下面又包含若干個特征。特征是與外界交互的最小單位。藍牙設備硬件廠商通常都會提供他們的設備里面各個服務(service)和特征(characteristics)的功能,比如哪些是用來交互(讀寫),哪些可獲取模塊信息(只讀)等。比如說,一臺藍牙4.0設備,用特征A來描述自己的出廠信息,用特征B來與收發數據等。

?

參考:

藍牙核心技術了解(藍牙協議、架構、硬件和軟件筆記)
實戰分享,教你藍牙在小程序中的應用

?

轉載于:https://www.cnblogs.com/yancongyang/p/9724037.html

總結

以上是生活随笔為你收集整理的小程序蓝牙BLE——自动连接设备(手环)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。