導航:首頁 > 設備說明 > 小程序藍牙過濾設備

小程序藍牙過濾設備

發布時間:2022-12-13 12:28:14

① 小程序藍牙搜不到設備ID

系統問題。
1、小程序藍牙搜不到設備ID是因為兩者系統不符。
2、導致搜索不到該設備,可以更換一下藍牙設備就可以了。

② vivos12pro微信小程序藍牙連不上

可參考以下無法連接藍牙設備處理步驟:
1、確認藍牙設備電量與連接范圍
確認藍牙設備電量充足,藍牙連接有效距離一般為10米左右,如果雙方設備距離較遠或中間存在障礙物,則可能搜索不到藍牙設備。
2、確認藍牙設備連接狀態
確保沒有其他手機連接此藍牙設備。
3、重新配對藍牙設備
請參考藍牙設備說明書操作,確保設備處於可配對狀態,並重新配對設備。
註:
1)vivo TWS 1/vivo TWS Neo/vivo TWS 2/vivo TWS 2e配對方法:將兩只耳機放入充電盒內,打開盒蓋,長按充電盒功能鍵2秒直至指示燈呈白色閃爍,手機藍牙搜索配對。或者長按充電盒功能鍵15秒,指示燈呈橙色並快速閃爍,耳機恢復出廠設置並重新進入配對狀態。
2)vivo WATCH配對方法:【初次配對】通過手機掃描手錶屏幕二維碼,下載安裝「健康」App,打開軟體,注冊登錄vivo帳號,點擊設備頁,添加設備,配對vivo WATCH。健康App是連接管理手錶的必備應用,vivo手機用戶前往應用商店下載並安裝App,蘋果手機用戶前往App Store搜索下載安裝App。【後期配對】按壓vivo WATCH上鍵--設置--系統菜單--恢復配對,通過健康App搜索連接,或按壓vivo WATCH上鍵--設置--系統菜單--恢復出廠,再通過健康App搜索連接。
3)其他品牌和型號的藍牙設備,可以查看對應產品說明書了解配對方法。
4、進行對比測試
同時使用兩個無配對記錄的手機搜索,如果其他手機也不能搜索到設備,則可能是藍牙設備故障。
5、重置網路設置
進入設置--系統管理--備份與重置--重置網路設置--重置設置,再使用查看。


7、再次點擊已配對的藍牙設備進行連接時,會提示「請確認「XX設備」已打開,在通信范圍內,且未連接其他設備」:兩台設備的藍牙進行配對成功即可使用藍牙的相關功能,不需要再次點擊藍牙設備進行連接,此提示並非手機異常,請您放心使用。
8、服務中心檢測
若以上方法未能解決問題,請提前備份好手機數據,攜帶手機和購機憑證前往vivo客戶服務中心檢測,進入瀏覽器搜索vivo官網--服務--服務中心--查看全部--選擇省市查詢當地的服務中心地址以及聯系方式。

③ 小程序 藍牙連接

//初始化藍牙
initBlue() {
var that = this;
wx.openBluetoothAdapter({ //調用微信小程序api 打開藍牙適配器介面
success: function (res) {
console.log('1.初始化藍牙成功')

},
//監聽手機藍牙的開關
monitorTheBlue:function(){
var that =this;
wx.onBluetoothAdapterStateChange(function(res){

})
},

//開始獲取附近的藍牙設備
//. 獲取到附近的藍牙數組 通過藍牙特定的名稱獲取自己想要連接的藍牙設備
//. 獲取附近藍牙設備的數組
findBlue() {
console.log(new Date())
var that = this
wx.({
allowDuplicatesKey: false,
interval: 0,
success: function (res) {
console.log('2.正在搜索設備.............')
if (that.data.isFirestShow) {
wx.showLoading({
title: '正在搜索設備'
})
}

},

//搜索獲取附近的所有藍牙設備 獲取附近所有的藍牙設備的相關信息 獲取需要連接藍牙設備的deviceID
//. 通過bluetoothDeviceName 和 localName 來確定製定藍牙
//. 一般根據制定設備的名字去連接 設備的名字 是出產廠家設定
getBlue() {
var that = this
wx.getBluetoothDevices({
success: function (res) {
console.log('3.找到設備列表........')
wx.hideLoading()
// return false
var index = 10
for (var i = 0; i < res.devices.length; i++) {
if (res.devices[i].name && res.devices[i].localName) {
var arr = res.devices[i].name.split("-")
var secArr = res.devices[i].localName.split("-")
if (arr[0] == that.data.bluetoothDeviceName || secArr[0] == that.data.bluetoothDeviceName) {

},
//連接藍牙設備
//通過deviceId 連接藍牙
/**

},
//6 連接上需要的藍牙設備之後,獲取這個藍牙設備的服務uuid
//獲取設備的uuid
getServiceId() {
var that = this
wx.getBLEDeviceServices({
// 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接
deviceId: that.data.deviceId,
success: function (res) {
var model = res.services[1]
that.setData({
servicesUUID: model.uuid
})
console.log('7.獲取設備 uuid 成功....')
that.getCharacteId() //6.0
}
})
},
//7 如果一個藍牙設備需要進行數據的寫入以及數據傳輸,就必須具有某些特徵值,所以通過上面步驟獲取的id可以查看當前藍牙設備的特徵值
//notify write read 當只有 notify為true的時候才能 接收藍牙設備傳來的數據,
//write 為true 才能傳入數據
//read 為true 才能讀取設備數據

getCharacteId() {
var that = this
wx.getBLEDeviceCharacteristics({
// 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接
deviceId: that.data.deviceId,
// 這里的 serviceId 需要在上面的 getBLEDeviceServices 介面中獲取
serviceId: that.data.servicesUUID,
success: function (res) {
for (var i = 0; i < res.characteristics.length; i++) { //2個值
var model = res.characteristics[i]
if (model.properties.notify == true) {
that.setData({
characteristicId: model.uuid //監聽的值
})
console.log('8.model.properties.notify == true')
that.startNotice(model.uuid) //7.0
}
// if (model.properties.read == true) {
// that.readData(model.uuid)
// }
// if (model.properties.write == true) {
// that.setData({
// writeId: model.uuid//用來寫入的值
// })
// }
}
}
})
},
fordateTime1(){
let now = new Date(),hour = now.getHours()
console.log(hour)
let str = ''
if(hour < 7){str = '早餐前'}
else if ((7< hour) && (hour<= 9)){str = '早餐後'}
else if ((9< hour) && (hour<= 11)){str = '午餐前'}
else if ((11< hour) && (hour<= 13)){str = '午餐後'}
else if ((13< hour) && (hour<= 17)){str = '晚餐前'}
else if ((17< hour) && (hour<= 19)){str = '晚餐後'}
else if ((19< hour) && (hour<= 24)){str = '睡覺前'}
return str
},
//8 如果一個藍牙設備需要進行數據的寫入以及數據傳輸,就必須具有某些特徵值,所以通過上面步驟獲取的id可以查看當前藍牙設備的特徵值
//開啟設備數據監聽 監聽藍牙設備返回來的數據
startNotice(uuid) {
var that = this;
wx.({
state: true, // 啟用 notify 功能
deviceId: that.data.deviceId,
serviceId: that.data.servicesUUID,
characteristicId: uuid, //第一步 開啟監聽 notityid 第二步發送指令 write
success: function (res) {
// that.closeConnect(that.data.deviceId)
// 設備返回的方法
let tip = 0
wx.(res1 => {

},

/**

//監聽藍牙設備是否會異常斷開
() {

},
// 斷開設備連接
closeConnect: function(v) {
var that = this
if (v) {
wx.closeBLEConnection({
deviceId: v,
success: function(res) {
console.log("藍牙斷開連接")
that.closeBluetoothAdapter()
},
fail(res) {
}
})
} else {
that.closeBluetoothAdapter()
}
},
// 關閉藍牙模塊
closeBluetoothAdapter:function () {

wx.closeBluetoothAdapter({
success: function(res) {
console.log("關閉藍牙模塊")
},
fail: function(err) {
}
})
},

④ 微信小程序藍牙教程--完整版親測

#使用mpvue 開發小程序過程中 簡單介紹一下微信小程序藍牙連接過程

#在藍牙連接的過程中部分api需要加定時器延時1秒到2秒左右再執行,原因為何不知道,小程序有這樣的要求

#1.首先是要初始化藍牙:openBluetoothAdapter()

```js

if (wx.openBluetoothAdapter) {

wx.openBluetoothAdapter({

        success: function(res) {

            /* 獲取本機的藍牙狀態 */

            setTimeout(() => {

                getBluetoothAdapterState()

            }, 1000)

        },

        fail: function(err) {

            // 初始化失敗

        }

    })

    } else {    

    }

```

#2.檢測本機藍牙是否可用:

#  要在上述的初始化藍牙成功之後回調里調用

```js

getBluetoothAdapterState() {

    var that= this;

    that.toastTitle= '檢查藍牙狀態'

wx.getBluetoothAdapterState({

        success: function(res) {

()

},

        fail(res) {

            console.log(res)

}

})

}

```

#3. 開始搜索藍牙設備:

```js

() {

    var that= this;

    setTimeout(() => {

wx.({

            success: function(res) {

/* 獲取藍牙設備列表 */

                that.getBluetoothDevices()

},

            fail(res) {

}

})

}, 1000)

}

```

#4. 獲取搜索到的藍牙設備列表

# /* that.deviceName 是獲取到的藍牙設備的名稱, 因為藍牙設備在安卓和蘋果手機上搜到的藍牙地址顯示是不一樣的,所以根據設備名稱匹配藍牙*/

```js

getBluetoothDevices() {

    var that= this;

    setTimeout(() => {

wx.getBluetoothDevices({

            services: [],

            allowDuplicatesKey: false,

            interval: 0,

            success: function(res) {

                if (res.devices.length> 0) {

                    if (JSON.stringify(res.devices).indexOf(that.deviceName) !== -1) {

                        for (let i = 0; i < res.devices.length; i++) {

                            if (that.deviceName === res.devices[i].name) {

/* 根據指定的藍牙設備名稱匹配到deviceId */

                                that.deviceId = that.devices[i].deviceId;

                                setTimeout(() => {

                                    that.connectTO();

}, 2000);

};

};

} else {

}

} else {

}

},

            fail(res) {

                console.log(res, '獲取藍牙設備列表失敗=====')

}

})

}, 2000)

},

```

#5.連接藍牙

# 匹配到的藍牙設備ID 發送連接藍牙的請求, 連接成功之後 應該斷開藍牙搜索的api,然後去獲取所連接藍牙設備的service服務

```js

connectTO() {

wx.createBLEConnection({

        deviceId: deviceId,

        success: function(res) {

            that.connectedDeviceId = deviceId;

/* 4.獲取連接設備的service服務 */

that.getBLEDeviceServices();

wx.stopBluetoothDevicesDiscovery({

                success: function(res) {

                    console.log(res, '停止搜索')

},

                fail(res) {

}

})

},

        fail: function(res) {

}

})

}

```

#6. 獲取藍牙設備的service服務,獲取的serviceId有多個要試著連接最終確定哪個是穩定版本的service 獲取服務完後獲取設備特徵值

```js

getBLEDeviceServices() {

    setTimeout(() => {

wx.getBLEDeviceServices({

            deviceId: that.connectedDeviceId,

            success: function(res) {

                that.services= res.services

/* 獲取連接設備的所有特徵值 */

that.getBLEDeviceCharacteristics()

},

            fail: (res) => {

}

})

}, 2000)

},

```

#7.獲取藍牙設備特徵值

# 獲取到的特徵值有多個,最後要用的事能讀,能寫,能監聽的那個值的uuid作為特徵值id,

```js

getBLEDeviceCharacteristics() {

            setTimeout(() => {

wx.getBLEDeviceCharacteristics({

                    deviceId: connectedDeviceId,

                    serviceId: services[2].uuid,

                    success: function(res) {

                        for (var i = 0; i < res.characteristics.length; i++) {

                            if ((res.characteristics[i].properties.notify || res.characteristics[i].properties.indicate) &&

                                (res.characteristics[i].properties.read && res.characteristics[i].properties.write)) {

                                console.log(res.characteristics[i].uuid, '藍牙特徵值 ==========')

/* 獲取藍牙特徵值 */

                                that.notifyCharacteristicsId = res.characteristics[i].uuid

// 啟用低功耗藍牙設備特徵值變化時的 notify 功能

that.()

}

}

},

                    fail: function(res) {

}

})

}, 1000)

},

```

#8.啟動notify 藍牙監聽功能 然後使用 wx.用來監聽藍牙設備傳遞數據

#接收到的數據和發送的數據必須是二級制數據, 頁面展示的時候需要進行轉換

```js

() { // 啟用低功耗藍牙設備特徵值變化時的 notify 功能

            var that= this;

            console.log('6.啟用低功耗藍牙設備特徵值變化時的 notify 功能')

wx.({

                state: true,

                deviceId: that.connectedDeviceId,

                serviceId: that.notifyServicweId,

                characteristicId: that.notifyCharacteristicsId,

                complete(res) {

/*用來監聽手機藍牙設備的數據變化*/

wx.(function(res) {

/**/

                        that.balanceData += that.buf2string(res.value)

                        that.hexstr += that.receiveData(res.value)

})

},

                fail(res) {

                    console.log(res, '啟用低功耗藍牙設備監聽失敗')

                    that.measuringTip(res)

}

})

},

/*轉換成需要的格式*/

buf2string(buffer) {

                    var arr = Array.prototype.map.call(new Uint8Array(buffer), x => x)

                    return arr.map((char, i) => {

                        return String.fromCharCode(char);

                    }).join('');

},

receiveData(buf) {

return this.hexCharCodeToStr(this.ab2hex(buf))

},

/*轉成二進制*/

ab2hex (buffer) {

              var hexArr = Array.prototype.map.call(

                  new Uint8Array(buffer), function (bit) {

                      return ('00' + bit.toString(16)).slice(-2)

}

)

              return hexArr.join('')

},

/*轉成可展會的文字*/

hexCharCodeToStr(hexCharCodeStr) {

              var trimedStr = hexCharCodeStr.trim();

              var rawStr = trimedStr.substr(0, 2).toLowerCase() === '0x' ? trimedStr.substr(2) : trimedStr;

              var len = rawStr.length;

              var curCharCode;

              var resultStr= [];

              for (var i = 0; i < len; i = i+ 2) {

                  curCharCode = parseInt(rawStr.substr(i, 2), 16);

                  resultStr.push(String.fromCharCode(curCharCode));

}

              return resultStr.join('');

},

```

# 向藍牙設備發送數據

```js

sendData(str) {

    let that= this;

    let dataBuffer = new ArrayBuffer(str.length)

    let dataView = new DataView(dataBuffer)

    for (var i = 0; i < str.length; i++) {

        dataView.setUint8(i, str.charAt(i).charCodeAt())

}

    let dataHex = that.ab2hex(dataBuffer);

    this.writeDatas = that.hexCharCodeToStr(dataHex);

wx.writeBLECharacteristicValue({

        deviceId: that.connectedDeviceId,

        serviceId: that.notifyServicweId,

        characteristicId: that.notifyCharacteristicsId,

        value: dataBuffer,

        success: function (res) {

            console.log('發送的數據:' + that.writeDatas)

            console.log('message發送成功')

},

        fail: function (res) {

},

        complete: function (res) {

}

})

},

```

# 當不需要連接藍牙了後就要關閉藍牙,並關閉藍牙模塊

```js

// 斷開設備連接

closeConnect() {

if (that.connectedDeviceId) {

wx.closeBLEConnection({

            deviceId: that.connectedDeviceId,

            success: function(res) {

that.closeBluetoothAdapter()

},

            fail(res) {

}

})

} else {

that.closeBluetoothAdapter()

}

},

// 關閉藍牙模塊

closeBluetoothAdapter() {

wx.closeBluetoothAdapter({

        success: function(res) {

},

        fail: function(err) {

}

})

},

```

#在向藍牙設備傳遞數據和接收數據的過程中,並未使用到read的API 不知道有沒有潛在的問題,目前線上運行為發現任何的問題

#今天的藍牙使用心得到此結束,謝謝

⑤ 微信小程序連接藍牙血壓儀

此方法可以檢測中心設備是否支持藍牙功能,是否打開藍牙開關,如不符合上述條件,返回失敗建wx.openBluetoothAdapter(OBJECT)和wx.closeBluetoothAdapter(OBJECT)成對使用wx.closeBluetoothAdapter:關閉藍牙模塊,使其進入未初始化狀態。調用該方法將斷開所有已建立的鏈接並釋放系統資源;

2.搜索指定設備
wx.(OBJECT)開始搜尋附近的藍牙外圍設備
wx.getBluetoothDevices(OBJECT)獲取在小程序藍牙模塊生效期間所有已發現的藍牙設備
wx.onBluetoothDeviceFound(CALLBACK) 監聽尋找到新設備的事件

注意: 搜索藍牙wx.(OBJECT)操作比較耗費系統資源,在搜索並連接到設備後調用 wx.stopBluetoothDevicesDiscovery(OBJECT) 方法停止搜索。

正確的流程是
初始化藍牙wx.openBluetoothAdapter(OBJECT)

開始搜索藍牙 wx.(OBJECT)

所有已發現的藍牙設備wx.getBluetoothDevices(OBJECT)

監聽尋找到新設備的事件wx.onBluetoothDeviceFound(CALLBACK)

連接低功耗藍牙設備wx.createBLEConnection(OBJECT)

獲取藍牙設備所有 service(服務) wx.getBLEDeviceServices(OBJECT)

獲取藍牙設備某個服務中的所有 characteristic(特徵值)wx.getBLEDeviceCharacteristics(OBJECT)

啟用低功耗藍牙設備特徵值變化時的 notify 功能wx.(OBJECT)

寫入wx.writeBLECharacteristicValue(OBJECT)

⑥ 微信小程序藍牙入坑總結

   微信小程序的藍牙流程按著官網的說明寫就可以了,具體參看文檔: 小程序開發文檔

坑列表:

    1.成對調用需要注意, wx.openBluetoothAdapter 與 wx.closeBluetoothAdapter

                                        wx. 與 wx.stopBluetoothDevicesDiscovery

     2.安卓與IOS的區別:安卓可以根據藍牙標識直接連接,IOS則必須先搜索才能進行連接;

     3.許可權問題:IOS的系統不能僅僅打開系統的藍牙許可權,因為IOS新版本針對藍牙做了應用及的限制,因此需要給微信藍牙許可權才可以使用;對於安卓系統,部分手機必須打開定位許可權才能搜索到藍牙設備

     4.創建連接API( wx.createBLEConnection )調用失敗:

            超時報錯:{"errCode":10012,"errMsg":"createBLEConnection:fail:operate time out"}

            連接超時:{"errCode":10003,"errMsg":"createBLEConnection:fail connect time out."}

            連接失敗:{"errCode":10003,"errMsg":"createBLEConnection:fail:connection fail status:133"}

           基本都是安卓手機出現以上問題,針對這些報錯,需編寫重試連接操作,很大概率能解決此問題;

     5.搜索不到任何設備,安卓手機可能是定位許可權的問題造成,蘋果手機基本就是設備出問題了

     6.網路請求與藍牙請求盡量分開,因為藍牙連接會受到影響,造成一些異常信息;

     7.所有API調用針對fail函數最好都做一次重試,因為再次重試可能就會成功;、

     8.API調用之間最好有一定毫秒數的間隔,目前懷疑api部分機型會存在延時;

總之微信的藍牙連接就那些已知的介面,調用時多考慮異常的情況下的重試,簡單總結下,以便查閱。

           

    

閱讀全文

與小程序藍牙過濾設備相關的資料

熱點內容
雷克薩斯ls空氣濾芯怎麼更換 瀏覽:917
凈水水機先按哪個濾芯 瀏覽:222
污水處理檢測哪些方面 瀏覽:409
A0池出水易堵塞管式超濾 瀏覽:222
海爾凈水器有味道怎麼辦 瀏覽:594
污水svi怎麼計算 瀏覽:47
大眾19速騰怎麼換空調濾芯 瀏覽:657
過濾紅外線和紫外線材料 瀏覽:165
施工樓層衛生間漏水處理方案 瀏覽:854
mac地址過濾類型選什麼 瀏覽:506
我一回家就寫作業用英語怎麼說 瀏覽:974
市長調研污水廠 瀏覽:511
五噸納濾設備 瀏覽:929
100立方污水報價 瀏覽:334
直飲水機保溫功率是多少 瀏覽:951
老安吉爾飲水機不通電是怎麼回事 瀏覽:15
污水蓋間隔 瀏覽:38
污水提升泵WQ型 瀏覽:530
污水廠機修工 瀏覽:108
污水脫色和什麼因素有關 瀏覽:772