① 斷網了,如何讓微信小程序,可以用藍牙
微信小程序怎麼實現藍牙連接?(代碼示例)
微信小程序 2022-03-13
微信小程序如何實現藍牙連接?本篇文章給大家帶來的內容是介紹微信小程序實現藍牙連接的方法(步驟)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。
最近的項目需要使用小程序的藍牙功能與硬體設備進行連接相互傳送數據指令,聯調過程中發現一些問題,於是想著記錄下來,方便以後查看!
1、初始化藍牙設備
一般使用藍牙功能肯定是想連接某一個藍牙設備,所以需要知道這個藍牙設備的名稱,一般來說都是掃描二維碼連接,那麼當你掃描這個設備二維碼的時候,就需要去初始化你手機上的藍牙模塊了
/**
* 初始化藍牙設備
*/
initBlue:function(){
var that = this;
wx.openBluetoothAdapter({//調用微信小程序api 打開藍牙適配器介面
success: function (res) {
// console.log(res)
wx.showToast({
title: '初始化成功',
icon: 'success',
ration: 800
})
that.findBlue();//2.0
},
fail: function (res) {//如果手機上的藍牙沒有打開,可以提醒用戶
wx.showToast({
title: '請開啟藍牙',
icon: 'fails',
ration: 1000
})
}
})
},
2、搜索藍牙設備
手機藍牙初始化成功之後,就會去搜索周邊的藍牙設備
/**
*開始搜索藍牙設備
*/
findBlue(){
var that = this
wx.({
allowDuplicatesKey: false,
interval: 0,
success: function (res) {
② 微信小程序手持彈幕如何投影到電視機上
首先,保證使用的電視是智能電視,其次手機和電視需要保持在同一個Wi-Fi網路狀態下才能進行投屏。不同手機型號有不同的方式。
安卓手機:
第一步,在電視上安裝並打開「無線投屏」的軟體或類似Miracast的應用。
第二步,在手機的無線連接方式中打開「無線顯示」。
第差耐三步,手機上就會出現電視的名稱,點擊連接。之後手機打開小程序就可以與電視同屏顯示了。
蘋果手機:
第一步,開啟蘋果手機,從屏幕底部向上調出「控制界面」,選擇界面中的「AirPlay鏡像」選項。
第二步,「含滾AirPlay鏡像」界面搜索電視ID名,並點擊連接即可。手機打開小程序即可投影虛老春。
③ 微信小程序無法連接藍牙列印機
方法指州如下:
1、打開微信小程序,點擊設置,選擇藍牙開放拍侍。
2、打開藍牙列印機,點擊藍牙開放。
3、用微信搜索附近藍牙即可連接到藍牙列印機。列印機(Printer)是計算機的輸出設備之一,用於將計算機處理結果列印在相關介襲逗吵質上。
④ 微信小程序如何連接飛鵝列印機
方法/步驟
登錄瀏覽器進入茂兔微信小程序的官網,點擊右上角登陸按鈕,並登陸自己的賬號。
⑤ 微信小程序藍牙教程--完整版親測
#使用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 不知道有沒有潛在的問題,目前線上運行為發現任何的問題
#今天的藍牙使用心得到此結束,謝謝
⑥ 愛普生列印機怎麼連接微信小程序列印
1、首先打開微信,並搜索小程序愛普生雲列印。
2、其次點擊進入,在首頁點擊添加列印吵鎮胡機設備。
3、升攔最後選擇旅滑掃描添加,掃描愛普生列印機二維碼即可連接微信小程序。