Wie implementiert man eine Bluetooth-Verbindung im WeChat-Applet? In diesem Artikel wird Ihnen die Methode (die Schritte) des WeChat-Applets zur Implementierung einer Bluetooth-Verbindung vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Ein aktuelles Projekt erfordert die Verwendung der Bluetooth-Funktion des Miniprogramms, um eine Verbindung mit Hardwaregeräten herzustellen und Datenanweisungen untereinander zu übertragen. Während des gemeinsamen Debugging-Prozesses wurden einige Probleme entdeckt, daher dachte ich darüber nach, diese aufzuzeichnen zum späteren Nachschlagen!
1. Initialisieren Sie das Bluetooth-Gerät
Im Allgemeinen möchten Sie bei Verwendung der Bluetooth-Funktion unbedingt eine Verbindung zu einem bestimmten Bluetooth-Gerät herstellen Sie müssen den Namen des Bluetooth-Geräts kennen. Im Allgemeinen scannen Sie den QR-Code, um eine Verbindung herzustellen. Wenn Sie dann den QR-Code dieses Geräts scannen, müssen Sie das Bluetooth-Modul auf Ihrem Telefon initialisieren
/** * 初始化蓝牙设备 */ initBlue:function(){ var that = this; wx.openBluetoothAdapter({//调用微信小程序api 打开蓝牙适配器接口 success: function (res) { // console.log(res) wx.showToast({ title: '初始化成功', icon: 'success', duration: 800 }) that.findBlue();//2.0 }, fail: function (res) {//如果手机上的蓝牙没有打开,可以提醒用户 wx.showToast({ title: '请开启蓝牙', icon: 'fails', duration: 1000 }) } }) },
2. Nach Bluetooth-Geräten suchen
Nachdem die Bluetooth-Initialisierung des Mobiltelefons erfolgreich war, wird nach umliegenden Bluetooth-Geräten gesucht
/** *开始搜索蓝牙设备 */ findBlue(){ var that = this wx.startBluetoothDevicesDiscovery({ allowDuplicatesKey: false, interval: 0, success: function (res) { wx.showLoading({ title: '正在搜索设备', }) that.getBlue()//3.0 } }) },
3. Bluetooth-Geräteinformationen abrufen
Nach der Suche nach Bluetooth-Geräten müssen Sie die gesuchten Bluetooth-Geräteinformationen abrufen. Das WeChat-Applet bietet zwei Methoden, um das gesuchte Bluetooth zu erhalten Geräteinformationen, nämlich:
wx.onBluetoothDeviceFound: Hören Sie auf das Ereignis, bei dem ein neues Gerät gefunden wird, und geben Sie an, dass diese Methode einmal aufgerufen wird, solange ein neues Bluetooth-Gerät vorhanden ist gefunden.
wx.getBluetoothDevices: Alle erkannten Bluetooth-Geräte abrufen, während das Bluetooth-Modul aktiv ist, einschließlich der Geräte, die bereits mit der Maschine verbunden sind
Sehen Sie sich zwei Methoden an. Einführung Wir Wir kennen ihre Unterschiede, aber welche Art von Problemen wird es verursachen, wenn wir ihre Unterschiede nicht verstehen?
Als ich zum ersten Mal die Methode wx.onBluetoothDeviceFound zum gemeinsamen Debuggen verwendete, stellte ich fest, dass alles normal war. Da beim Debuggen nur ein Gerät vorhanden war, stellte ich fest, dass das Bluetooth-Gerät erneut gescannt wurde Zu diesem Zeitpunkt konnte es nicht gefunden werden, da es sich bei dieser Methode nicht um ein neues Gerät handelt und es bereits zuvor eine Verbindung hergestellt hat, oder wenn Ihnen bei der Übertragung von Datenbefehlen über Bluetooth aus irgendeinem Grund ein Fehler unterläuft und Sie eine erneute Verbindung herstellen müssen Kann es nicht finden, wenn Sie erneut eine Verbindung zum aktuellen Gerät herstellen, aus demselben Grund, da das aktuelle Gerät kein neues Gerät für diese Methode ist
Also habe ich die Methode wx.getBluetoothDevices verwendet
/** * 获取搜索到的设备信息 */ getBlue(){ var that = this wx.getBluetoothDevices({ success: function(res) { wx.hideLoading(); for (var i = 0; i < res.devices.length; i++){ /*that.data.inputValue:表示的是需要连接的蓝牙设备ID,简单点来说就是我想要连接这个蓝牙设备,所以我去遍历我搜索到的蓝牙设备中是否有这个ID*/ if (res.devices[i].name == that.data.inputValue || res.devices[i].localName == that.data.inputValue){ that.setData({ deviceId: res.devices[i].deviceId, consoleLog: "设备:" + res.devices[i].deviceId, }) that.connetBlue(res.devices[i].deviceId);//4.0 return; } } }, fail: function(){ console.log("搜索蓝牙设备失败") } }) },
4. Verbinden Sie das Bluetooth-Gerät
Nachdem Sie Bluetooth im vorherigen Schritt gefunden haben, stellen Sie die Bluetooth-Verbindung über die ID des Bluetooth-Geräts her
/** * 获取到设备之后连接蓝牙设备 */ connetBlue(deviceId){ var that = this; wx.createBLEConnection({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: deviceId,//设备id success: function (res) { wx.showToast({ title: '连接成功', icon: 'fails', duration: 800 }) console.log("连接蓝牙成功!") wx.stopBluetoothDevicesDiscovery({ success: function (res) { console.log('连接蓝牙成功之后关闭蓝牙搜索'); } }) that.getServiceId()//5.0 } }) },
5. Service-UUID abrufen
Nachdem Sie eine Verbindung zum erforderlichen Bluetooth-Gerät hergestellt haben, rufen Sie die Service-UUID ab
getServiceId(){ var that = this wx.getBLEDeviceServices({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, success: function (res) { var model = res.services[0] that.setData({ services: model.uuid }) that.getCharacteId()//6.0 } }) },
6. Zeigen Sie das Bluetooth-Gerät nach ID an. Charakteristischer Wert
Wenn ein Bluetooth-Gerät Daten schreiben und übertragen muss, muss es bestimmte charakteristische Werte haben, also die Die durch die obigen Schritte erhaltene ID kann verwendet werden, um den aktuellen Bluetooth-Charakteristikwert des Geräts anzuzeigen
getCharacteId(){ var that = this wx.getBLEDeviceCharacteristics({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 serviceId: that.data.services, 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({ notifyId: model.uuid//监听的值 }) that.startNotice(model.uuid)//7.0 } if (model.properties.write == true){ that.setData({ writeId: model.uuid//用来写入的值 }) } } } }) },
7. Vom Hintergrundserver erhaltene Anweisungen
startNotice(uuid){ var that = this; wx.notifyBLECharacteristicValueChange({ state: true, // 启用 notify 功能 // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 serviceId: that.data.services, // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 characteristicId: uuid, //第一步 开启监听 notityid 第二步发送指令 write success: function (res) { // 设备返回的方法 wx.onBLECharacteristicValueChange(function (res) { // 此时可以拿到蓝牙设备返回来的数据是一个ArrayBuffer类型数据,所以需要通过一个方法转换成字符串 var nonceId = that.ab2hex(res.value) //拿到这个值后,肯定要去后台请求服务(当前步骤根据当前需求自己书写),获取下一步操作指令写入到蓝牙设备上去 wx.request({ method: "POST", data: { xx:nonceId }, url: url, success: (res) => { //res.data.data.ciphertext:我这边服务返回来的是16进制的字符串,蓝牙设备是接收不到当前格式的数据的,需要转换成ArrayBuffer that.sendMy(that.string2buffer(res.data.data.ciphertext))//8.0 // 服务器返回一个命令 我们要把这个命令写入蓝牙设备 } }) } }) },
8. Wird aus dem Hintergrund bereitgestellt. Die erhaltenen Anweisungen werden in das Bluetooth-Gerät geschrieben.
sendMy(buffer){ var that = this wx.writeBLECharacteristicValue({ // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取 deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 serviceId: that.data.services, // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 characteristicId: that.data.writeId,//第二步写入的特征值 // 这里的value是ArrayBuffer类型 value: buffer, success: function (res) { console.log("写入成功") }, fail: function () { console.log('写入失败') }, complete:function(){ console.log("调用结束"); } }) },
Hinweis: Im Folgenden wird die Methode zum Konvertieren der beiden beschrieben Formate, die verwendet werden müssen
/** * 将字符串转换成ArrayBufer */ string2buffer(str) { let val = "" if(!str) return; let length = str.length; let index = 0; let array = [] while(index < length){ array.push(str.substring(index,index+2)); index = index + 2; } val = array.join(","); // 将16进制转化为ArrayBuffer return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) })).buffer }, /** * 将ArrayBuffer转换成字符串 */ ab2hex(buffer) { var hexArr = Array.prototype.map.call( new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2) } ) return hexArr.join(''); },
Hinweis: Das Obige ist eine Bluetooth-Verbindung Der gesamte Prozess, aber wir werden in der tatsächlichen Verwendung definitiv nicht so reibungslos sein, und die Geräte, die Befehle über Bluetooth senden, verfügen über eine Funktion, Das heißt, nachdem jemand eine Verbindung zum aktuellen Bluetooth-Gerät hergestellt hat, können andere Personen nicht nach diesem Bluetooth-Gerät suchen. Unter bestimmten Umständen muss der Code die Bluetooth-Verbindung aktiv trennen und das Gerät für andere Benutzer freigeben Darüber hinaus kann es beim Schreiben von Anweisungen auf das Bluetooth-Gerät leicht zu Problemen kommen, sodass ein Rückruf mehrmals eingegeben werden muss. Erfolg garantiert!
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird. .
Empfohlene verwandte Video-Tutorials:
Entwicklungsdokument für das WeChat Mini-Programm
Umfassendes und detailliertes Analyse-Video-Tutorial für das WeChat Mini-Programm
WeChat Mini-Programmentwicklung CMS-System-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWie implementiert man eine Bluetooth-Verbindung im WeChat-Applet? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!