封装微信小程序蓝牙模块

const logFlag = true;//是否显示日志
let timeoutID;
//搜索设备
function startBluetoothDevicesDiscovery() {
  return new Promise((resolve, reject) => {
    timeoutID = setTimeout(() => {
      stopBluetoothDevicesDiscovery();
    }, 15000);

    wx.startBluetoothDevicesDiscovery({
      services: [],
      success: function (res) {
        if(logFlag){
          console.log("success startBluetoothDevicesDiscovery:", res)
        }
        resolve(res);
      },
      fail: function (res) {
        if(logFlag){
          console.log("fail startBluetoothDevicesDiscovery:", res)
        }
        reject({
          message: "开始搜索设备失败"
        })
      }
    })
  }).catch((res) => {
    stopBluetoothDevicesDiscovery();
    clearTimeout(timeoutID);
    myShowToast(res.message);
  })
}

function getBluetoothDevices(bluetoothName) {
  return new Promise((resolve, reject) => {
    wx.getBluetoothDevices({
      success: (res) => {
        console.log(res)
        let devices = res.devices;
        if(logFlag){
          console.log("success getBluetoothDevices:", devices)
        }
        let device_id;
        for (let device of devices) {
          if (device.name == bluetoothName || device.localName == bluetoothName) {
            device_id = device.deviceId;
            console.log('utils',device_id)
            stopBluetoothDevicesDiscovery();
            clearTimeout(timeoutID);
            resolve(device_id);
          }
        }
        if (!device_id) {
          resolve(undefined);
        }
      },
    })
  })
}

function onBluetoothDeviceFound(bluetoothName) {
  return new Promise((resolve, reject) => {
    wx.onBluetoothDeviceFound(function (res) {
      let devices = res.devices;
      if(logFlag){
        console.log("success onBluetoothDeviceFound:", devices);
      }
      for (let device of devices) {
        if (device.name == bluetoothName || device.localName == bluetoothName) {
          let device_id = device.deviceId;
          stopBluetoothDevicesDiscovery();
          clearTimeout(timeoutID);
          resolve(device_id);
        }
      }
    });
  })
}

function stopBluetoothDevicesDiscovery() {
  wx.stopBluetoothDevicesDiscovery({
    success: (res) => {
      console.log('关闭蓝牙停止搜索成功');
    },
    fail: (res) => {
      console.log('关闭蓝牙停止搜索失败');
    },
  })
}

function createBLEConnection(deviceID) {
  return new Promise((resolve, reject) => {
    wx.createBLEConnection({
      deviceId: deviceID,
      timeout: 10000,
      success: function (res) {
        console.log('蓝牙连接成功')
        if(logFlag){
          console.log("success createBLEConnection:", res);
        }
        stopBluetoothDevicesDiscovery();
        resolve(res);
        
      },
      fail: function (res) {
        if(logFlag){

          console.log("fail createBLEConnection:", res);
        }
        stopBluetoothDevicesDiscovery();
        resolve();
      }
    })
  })
}

function getBLEDeviceServices(deviceID) {
  return new Promise((resolve, reject) => {
    wx.getBLEDeviceServices({
      deviceId: deviceID,
      success: function (res) {
        if(logFlag){
          // console.log("success getBLEDeviceServices:", res);
        }
        resolve(res)
      },
      fail: function (res) {
        if(logFlag){
          console.log("fail getBLEDeviceServices:", res);
        }
        resolve();
      }
    })
  })
}

function filterService(services) {
  return new Promise((resolve, reject) => {
    let serviceIndex = 0;
    let servicesInfo = {};
    for (let service of services) {
      if (service.uuid.toUpperCase().indexOf("FFE5") != -1) {
        servicesInfo.writeServiceID = service.uuid;
        serviceIndex++;
      } else if (service.uuid.toUpperCase().indexOf("FFE0") != -1) {
        servicesInfo.readServiceID = service.uuid;
        serviceIndex++;
      }
    }
    console.log(servicesInfo)
    if (serviceIndex == 2) {
      if(logFlag){
        console.log("success filterService:", servicesInfo);
      }
      resolve(servicesInfo);
    } else {
      if(logFlag){
        console.log("fail filterService:", servicesInfo);
      }
      resolve();
    }

  })
}

function getDeviceCharacter(deviceID, serviceID) {
  return new Promise((resolve, reject) => {
    wx.getBLEDeviceCharacteristics({
      deviceId: deviceID,
      serviceId: serviceID,
      success: function (res) {
        if(logFlag){
          console.log("success getDeviceCharacter:", res);
        }
        resolve(res);
      },
      fail: function (res) {
        if(logFlag){
          console.log("fail getDeviceCharacter:", res);
        }
        resolve();
      }
    })
  })
}

function notifyBLECharacteristicValueChange(deviceID, serviceID, characteristicID) {
  return new Promise((resolve, reject) => {
    wx.notifyBLECharacteristicValueChange({
      state: true,
      deviceId: deviceID,
      serviceId: serviceID,
      characteristicId: characteristicID,
      success: function (res) {
        if(logFlag){
          console.log("success notifyBLECharacteristicValueChange:", res);
        }
        resolve(res);
      },
      fail: function (res) {
        if(logFlag){
          console.log("fail notifyBLECharacteristicValueChange:", res);
        }
        resolve();
      },
    })
  })
}

// function closeBLEConnection(deviceID) {
//   return new Promise((resolve, reject) => {
//     wx.closeBLEConnection({
//       deviceId: deviceID,
//       success: function (res) {
//         if(logFlag){
//           console.log("success closeBLEConnection:", res);
//         }
//         resolve(res);
//       },
//       fail: function (res) {
//         if(logFlag){
//           console.log("fail closeBLEConnection:", res);
//         }
//         resolve();
//       }
//     });
//   })
// }

function closeBluetoothAdapter() {
  return new Promise((resolve, reject) => {
    wx.closeBluetoothAdapter({
      success: function (res) {
        if(logFlag){
          console.log("success closeBluetoothAdapter:", res);
        }
        resolve(res);
      },
      fail: function (res) {
        if(logFlag){
          console.log("fail closeBluetoothAdapter:", res);
        }
        resolve();
      },
    })
  })
}


module.exports = {

  startBluetoothDevicesDiscovery,
  getBluetoothDevices,
  onBluetoothDeviceFound,
  stopBluetoothDevicesDiscovery,
  createBLEConnection,
  getBLEDeviceServices,
  filterService,
  getDeviceCharacter,
  notifyBLECharacteristicValueChange,
  closeBLEConnection,
  closeBluetoothAdapter,
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值