const manager = require('./manager'); module.exports = { BleUtil } class BleUtil { static _instance = new BleUtil(); static getInstance() { return BleUtil._instance; } constructor() { var that = this; that.manager = new manager(); } ///获取比较的数据 getCompareList() { var that = this; return that.manager.getCompareList(); } getDissmissDevice() { var that = this; return that.manager.getDissmissDevice(); } getCallBackConnect() { var that = this; return that.manager.getCallBackConnect(); } ///初始化蓝牙适配器 initBluetoothAdapter() { var that = this; that.manager.initBlueAdapter(); } ///获取蓝牙设备 connect:true,去连接,false,去对比 listenBlueDevices() { var that = this; that.manager.listenBlueDevices(); } ///搜索蓝牙设备 startScan(connectWillDevice, boolean, callBackConnect) { var that = this; that.manager.startScan( connectWillDevice, boolean, callBackConnect, ); } ///停止搜索蓝牙设备 async stopScan() { var that = this; await that.manager.stopScan(); } ///开始连接设备 async startConnect(device, onChanged) { var that = this; await that.stopScan(); await that.disconnect(device); var res = await that.manager.startConnect(device); if (!res) { onChanged(false, device); return; } const strings = require('./../../utils/strings'); var services = await that.manager.getNotifyServices(device); if (strings.isEmpty(services)) { onChanged(false); return; } that.manager.getCharacteristics(device, services, 0, false, false, false, async function (notifyServiceId, notifyCharaterId) { var isTrue = that.manager.monitorCharacteristicValueChange(device, notifyServiceId, notifyCharaterId); if (!isTrue) { onChanged(false); return; } ///解决连接之后会有一段时间显示离线,先添加进去就不会了 var has = false; var compareList = that.bleManager.getCompareList(); for (var j = 0; j < compareList.length; j++) { if (compareList[j].deviceId == device.deviceId) { has = true; break; } } if (!has) { compareList.unshift(device); that.manager.setCompareList(compareList); } onChanged(true); const hex_util = require('./../../utils/hex_util'); const bt_parse = require('./../../devices/bluetooth/bt_parse'); that.manager.onBLECharacteristicValueChange(function (value) { var receiveText = hex_util.buf2string(value); console.log('接收到数据文字:' + receiveText); var buffer = new DataView(value); var result = [] for (let i = 0; i < buffer.byteLength; i++) { result.push(buffer.getUint8(i)) } bt_parse.parseTLV(result); }); }, function () { onChanged(false); return; }); } ///发送数据 async sendData(device, text) { var isTrue = await that.manager.sendData(device, text); ///发送数据成功 if (isTrue) { } } ///断开设备连接 async disconnect(device) { var that = this; await that.manager.disconnect(device); } }