h5蓝牙连接

h5蓝牙连接

嵌入手机app通过原生方法去启动蓝牙功能
封装蓝牙模块

export const connectData = {
    /**
     * 连接蓝牙
     */
    openBluetooth(){
        // 判断手机蓝牙状态
        jsInjection.openBluetoothAdapter()
        jsInjection.getBluetoothAdapterState("getBluetoothAdapterState");
        // 注册蓝牙连接的回调方法
        jsInjection.onBleConnectionStateChange("changeBleConnectionState");
        // 注册发现服务的回调方法
        jsInjection.onBleServicesDiscovered("changeServiceDiscoverState");
        // 连接蓝牙
        jsInjection.createBleConnection(deviceId);
        // 开启定时器,定时器1s执行1次
        timer = setInterval(judgeTimeout, 1000);
    },
    /**
     * 断开蓝牙
     */
    beforeDestroy() {
        // 断开蓝牙连接
        jsInjection.closeBleConnection(deviceId);
        if (timer) {
            clearInterval(timer);
        }
    },
    /**
     * 监听
     */
    monitor(){
        // 注册发现服务的回调方法
        jsInjection.onBleServicesDiscovered("changeServiceDiscoverState");
        // 连接蓝牙
        jsInjection.createBleConnection(deviceId);
    },
    /**
     * 写入
     */
    writeCharacter(text){
        let value = '';
        if(text.substr(0,2)=='A5'){
            value = text.substr(0,text.length)
        }else{
            value = parseInt(text,16)
        }
        for(let i=0;i<value.length;i+=40){
            window.writeCharacteristicCallback  =  writeCharacteristicCallback;
            jsInjection.writeBLECharacteristicValue(
                deviceId,
                globalData.SERVICE_ID,
                globalData.WRITE_CHARACTERISTIC_ID,
                value.substring(i,i+40),
                "writeCharacteristicCallback"
            )
            command = value.substring(i,i+40)
            // console.log('发送'+value.substring(i,i+40))
        }

    },
    /**
     * 读取
     */
    read(){
        window.readBLECharacteristicValueCallback = readBLECharacteristicValueCallback;
        jsInjection.readBLECharacteristicValue(
            deviceId,
            globalData.BATTERY_SERVICE_ID,
            globalData.BATTERY_CHARACTERISTIC_ID,
            "readBLECharacteristicValueCallback"
        )
        //console.log("读取")
    },
    /**
     * 发送命令
     */
    sendCommand(c,t,d){
        typeNo++;
        let text = ''
        let cmd = c
        store.state.cmd = cmd
        let cmd1 = parseInt(255-parseInt(cmd,16)).toString(16)
        if(cmd1.split('').length<2){
            cmd1 = '0' + cmd1
        }
        let type = t

        let len = '0000'
        let data = d
        if(data!=''){
            if(parseInt(data.length/2).toString(16).length<2){
                len =  '0'+parseInt(data.length/2).toString(16) + '00'
            }else{
                len =  parseInt(data.length/2).toString(16) + '00'
            }
        }
        let no = parseInt(typeNo).toString(16)
        if(no.length<2){
            no = '0'+no
        }else{
            no = no
        }
        if(typeNo >= 254){
            typeNo = 0
        }
        let crc = Crc8.calculationCrc8('A5'+ cmd + cmd1 + type + no + len + data)
        text = 'A5' + cmd + cmd1 + type + no + len + data + crc
        //console.log('A5'+',' + cmd+',' + cmd1+',' + type+',' + no+',' + len+',' + data+',' + crc)
        return text
    },
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值