uniapp连接蓝牙电子秤

news/2024/12/15 1:38:09/

uniapp连接蓝牙电子秤(一)

可查阅文档微信 uniapp
一,蓝牙电子秤

最近公司有这么个需求,电子秤和小程序进行对接,实现实时监听电子秤的数据,对于这块的需求它的限制有些高,必须是低功耗蓝牙而且还是4.0的。价格上还偏高,但是没办法买了几台进行测试,来挑战下第一次整处处都是坑

首先初始化蓝牙模块(切记要把faill也写上,有时候他不走success,就以为他不触发,其实他在faill里)
初始化蓝牙

                let that = thiswx.openBluetoothAdapter({success(res) {console.log("初始化蓝牙模块")..........自己的逻辑}})

初始化蓝牙之后就可以去搜索监听新的设备判断适配器能不能用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

先初始化下蓝牙,然后去监听新设备,监听到之后存储起来放到数组中获取他的deviceId和name,

seach_searchBle() {var that = thisconsole.log("initBule")uni.openBluetoothAdapter({success(res) {console.log("初始化蓝牙模块")console.log(res)that.seach_onDevice()uni.getBluetoothAdapterState({success: function(res) {console.log('触发了一次')console.log(res)if (res.available) {if (res.discovering) {that.stopFindBule()}//搜索蓝牙//开始搜寻附近的蓝牙外围设备console.log("开始搜寻附近的蓝牙外围设备")uni.startBluetoothDevicesDiscovery({success(res) {uni.showToast({title: '扫码设备成功',icon: 'none'})}})} else {console.log('本机蓝牙不可用')}},})}})},
	seach_onDevice() {console.log("监听寻找到新设备的事件---------------")var that = this//监听寻找到新设备的事件uni.onBluetoothDeviceFound(function(devices) {console.log('--------------new-----------------------' + JSON.stringify(devices))var re = JSON.parse(JSON.stringify(devices))let name = re.devices[0].namelet deviceId = re.devices[0].deviceId that.devices.push({name: name,deviceId: deviceId,services: [],RSSI: re.devices[0].RSSI})})},

之后我们就可以通过储存的列表里的设备进行对接蓝牙的操作我们获取到了它的name和deviceId就去对他进行连接

let that = thiswx.createBLEConnection({deviceId: uni.getStorageSync('ble').deviceId,success(res) {if (res.errMsg == "createBLEConnection:ok") {uni.showLoading({title: '连接蓝牙中',})// that.connId = uni.getStorageSync('currDev').deviceId;// that.currDev = itemsetTimeout(function() {that.lianjielanya(uni.getStorageSync('ble').deviceId)}, 2000)} else {//uni.removeStorageSync('currDev')console.log(res)}},fail(res) {console.log(res)}})

创建成功之后就可以对他进行连接操作,是不是很简单,就剩最后一步输出蓝牙给我们发送的数据

wx.getBLEDeviceServices({// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接deviceId: deviceId,success(res) {console.log(res)let serviceId = ""for (var s = 0; s < res.services.length; s++) {console.log(res.services[s].uuid)let serviceId = res.services[s].uuidwx.getBLEDeviceCharacteristics({// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接deviceId: deviceId,// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取serviceId: serviceId,success(res) {var re = JSON.parse(JSON.stringify(res))console.log('deviceId = [' + deviceId + ']  serviceId = [' + serviceId + ']')for (var c = 0; c < re.characteristics.length; c++) {if (re.characteristics[c].properties.write == true) {let uuid = re.characteristics[c].uuidconsole.log(' deviceId = [' + deviceId + ']  serviceId = [' + serviceId + '] characteristics=[' +uuid)for (var index in that.devices) {if (that.devices[index].deviceId == deviceId) {that.devices[index].services.push({serviceId: serviceId,characteristicId: uuid})break}}console.log(JSON.stringify(that.devices))setTimeout(() => {wx.hideLoading()}, 2000)uni.showToast({title: '连接成功',icon: 'none'})// uni.navigateBack() }}that.notifyBLECharacteristicValueChange(deviceId)var lanta = true}})}},fail(res) {console.log(res)},})

读取蓝牙给的数据操作,注意这里的serviceId 和characteristicId
读数据操作是统一的所以写死,还有传过来的数据还得需要进行处理格式转换,里面有写

	notifyBLECharacteristicValueChange() {var that = thiswx.notifyBLECharacteristicValueChange({state: true, // 启用 notify 功能// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接deviceId: uni.getStorageSync('ble').deviceId,// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取serviceId: '0000FFE0-0000-1000-8000-00805F9B34FB',// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取characteristicId: '0000FFE1-0000-1000-8000-00805F9B34FB',success: (res) => {console.log(res)wx.onBLECharacteristicValueChange((res) => {const buffer = new Uint8Array(res.value);console.log(buffer)})},fail: (res) => {console.log('获取失败')}})},

这样就可以实时监听到蓝牙数据,他会一直给你发送数据,是不是很简单,
有不懂的私信我,后面会对需求做优化处理,敬请期待。。。


http://www.ppmy.cn/news/244747.html

相关文章

基于Arduino的蓝牙电子秤

2022.3——2022.5课设项目&#xff0c;电子小白入门作品 目录 一、各模块使用 LCD1602模块 矩阵按键模块 HC—05蓝牙模块 二、待改进之处 LCD1602模块 在项目后期使用IIC&#xff0c;省去了连一堆杜邦线的麻烦事。主要可操作的地方在于设置光标位置&#xff0c;清除功能…

基于51单片机的简易电子秤

首先看看题目要求&#xff1a; 1.方案论证 &#xff08;1&#xff09;压力传感器的论证与选择 方案一&#xff1a;采用惠更斯电桥&#xff0c;当电阻应变片承受载荷产生变形时&#xff0c;其阻值将发生变化。从而使电桥失去平衡&#xff0c;产生相应的差动信号&#xff0c;但…

电子秤c语言编程,基于AT89C51的数字电子秤的设计最终版(样例3)

《基于AT89C51的数字电子秤的设计.doc》由会员分享,可免费在线阅读全文,更多与《基于AT89C51的数字电子秤的设计(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。 1、defineucharunsignedchardefineuintunsignedintsbitADCS=P^;sbitADDI=P^;sbitADD…

梅特勒托利多xk3124电子秤说明书_托利多电子秤详细说明书

个人收集整理 -ZQ 1 / 5 对于一台新条码秤,需要做以下工作 . 一、在秤上操作 、 格式化 开机后依次按 “ 代码 ”→“” →“*” , (屏幕显示-) ,输入 “” →“*” (屏幕显示 ) , → (屏幕显示 ) →“*” , 条码秤初始化后自动重启即可 . 注:此操作将条码秤中地数据、格…

基于Arduino的电子秤设计

设计背景 电子秤是一种较为方便&#xff0c;简单&#xff0c;称量精确的仪器。与日常生活中各个行业息息相关&#xff0c;广泛应用于各种商业&#xff0c;市场及零售业等公共场所。本设计是结合了传感器&#xff0c;基于Ardunio和HX711的多功能电子秤的设计。在Arduino平台&am…

基于51单片机的电子秤设计

摘要 电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。它与我们日常生活紧密结合息息相关。 电子称主要以单片机作为中心控制单元&#xff0c;通过称重传感器进行模数转换单元&#xff0c;在配以键盘、显示电路及强大软件来组成。…

基于单片机的智能电子秤系统设计(#0507)

电子秤是称重技术中的一种新型仪表&#xff0c;广泛应用于各种场合。电子秤与机械秤比较有体积小、重量轻、结构简单、价格低、实用价值强、维护方便等特点&#xff0c;可在各种环境工作&#xff0c;重量信号可远传&#xff0c;易于实现重量显示数字化&#xff0c;易于与计算机…

梅特勒托利多xk3124电子秤说明书_托利多电子秤说明书

托利多条码秤设置 对于一台新条码秤&#xff0c;需要做以下工作。 一、在秤上操作 1 、 格式化 开机后依次按“代码”→“24681357” →“*”&#xff0c; (屏幕显示 SERVICE &#xff0d; MODE ) &#xff0c; 输入“15” →“*”(屏幕显示 WORK CONFIG )&#xff0c;→1(屏幕…