评论

低功耗蓝牙使用API设计封装函数模式示例

低功耗蓝牙使用API设计封装函数模式示例

var bluetooth = {



    RESETfunction(){
        // 基础数据配置



        this.btName = "";
        this.deviceId = "";
        this.serviceId = "";
        this.write_characteristicId = "";
        this.read_characteristicId = "";



    },
    STARTasync function () {
        // 启动蓝牙,并用户判断用户是否已开启蓝牙


    },
    SEARCHasync function () {
        // 搜索设备是否在附近,wx.onBluetoothDeviceFound


        await this.START(); 
        return new Promise((reslove, reject)=>{
            reslove();
        })
    },
    CONNECTasync function () {
        // 连接设备


        // if(self.btName == device.btName)
        let sameName = self.btName == device.btName ? true : false// 记录蓝牙连接是否多次同时快速触发


        if(this.waitConnect && sameName){
            console.log("正在连接,请稍等...")
            return;
        }


        this.waitConnect = true;


        await this.SEARCH(); 
        return new Promise((reslove, reject)=>{
            
            this.waitConnect = false;
            reslove();


        })
    },
    SENDasync function (device, data, callback{
        // 发送数据
        
        await this.CONNECT();  


        return new Promise((reslove, reject)=>{


            device.sendEnd();


            callback();


        })


    },
    receiveDataCallbackfunction(){
        // 接收设备返回的数据到前台
        callback(value)


    },
    CLOSEasync function () {
        // 关闭蓝牙线程
    },
    DISCONNECTfunction(){
        // 断开指定设备连接
    },
    STOPfunction(){


        // 停止搜索监听
    },
    ERRORfunction(){
        /***
       * ERROR 错误
       * err @params {} 
       * err.ercode @params Number
       *  0 ok  正常
       * 10000  not init    未初始化蓝牙适配器
       * 10001  not available   当前蓝牙适配器不可用
       * 10002  no device   没有找到指定设备
       * 10003  connection fail 连接失败
       * 10004  no service  没有找到指定服务
       * 10005  no characteristic   没有找到指定特征值
       * 10006  no connection   当前连接已断开
       * 10007  property not support    当前特征值不支持此操作
       * 10008  system error    其余所有系统上报的异常
       * 10009  system not support  Android 系统特有,系统版本低于 4.3 不支持 BLE
       * 10012  operate time out    连接超时
       * 10013  invalid_data    连接 deviceId 为空或者是格式不正确
       */


  },
}


var device = {
    btName"btName",
    deviceId"00:00:00:AB:CD:EF",  
    passChecknew Date().getTime(),  // 记录触发跟设备返回是否为同一事件
    sendEndfunction(res){
        // 用于记录发送数据给设备成功后,设备一直未返回执行相关命令
        clearTimeout(bluetooth.sendTimer);  
        bluetooth.sendTimer = setTimeout(() => {
            
            clearTimeout(bluetooth.sendTimer);


            bluetooth.CLOSE();


        }, timeout);
    },
    onBLEConnectionStateChangefunction(res){
        // 用于监听蓝牙设备操作过程中,突然把设备断电或手动断开蓝牙捕获异常处理


        // if(this.passCheck == )


    },
    capturefunction(err){
        // 用于获取操作过程中,未启动,蓝牙连接失败等问题处理


        // if(this.passCheck == )


    }
}


// 使用示例
let data = "00 11 22";
bluetooth.START(device);
bluetooth.SEARCH(device);
bluetooth.CONNECT(device);
bluetooth.SEND(device, data, function (value{
    console.log("value=>",value)  // 用于收到设备返回数据回调处理
    if(value){
        bluetooth.passCheck = "";
        bluetooth.CLOSE();
    }
})
最后一次编辑于  10-15  
点赞 1
收藏
评论

1 个评论

  • 康斌
    康斌
    10-15

    写的真棒,收藏了

    10-15
    赞同
    回复 1
    • 同步
      同步
      10-16
      谢谢,你也有做蓝牙开发?
      10-16
      回复
登录 后发表内容