在使用经典蓝牙(spp)模块进行蓝牙连接时,系统报错{“code”:2900003,“message”:“BussinessError 2900003: Bluetooth switch is off.”}
我这边目前的流程是,手机作为客户端发起配对,配对成功之后我会去连接打印机,但是连接之后就会报这个错{“code”:2900003,“message”:“BussinessError 2900003: Bluetooth switch is off.”}
示例代码:
connection.pairDevice(deviceId);
connection.on('bondStateChange', (bondState: connection.BondStateParam) => { // data为回调函数入参,表示配对的状态
if (bondState.state == connection.BondState.BOND_STATE_BONDED) {
let sppOption: socket.SppOptions = {
uuid: '00001810-0000-1000-8000-00805F9B34FB',
secure: false,
type: 0
};
socket.sppConnect(deviceId, sppOption, (err: BusinessError, number: number) => {
console.log(JSON.stringify(err))
});
} else if (bondState.state == connection.BondState.BOND_STATE_BONDING) {
console.log("配对中...")
} else {
failCallback && failCallback({ errCode: -1, errMsg: "蓝牙配对失败" });
}
});
关于2900003问题: 首先,远端设备是什么设备?是否适配socked模块功能? 正常情况下,socket通过sppConnect连接的对端设备,是需要对端设备已经通sppListen和sppAccept接口创建服务监听、等待客户端连接的,这一点需要确认一下。
其次,若对端设备已经通过sppListen和sppAccept接口创建服务监听、等待客户端连接,请确保对端设备创建监听时的uuid和客户端使用到的uuid保持一致。
最后,若是上述都不行的话,请尝试清除与对端设备的基本蓝牙连接信息,重新建立基础连接,然后再进行socket连接测试。
如果打印机已经具备socket模块功能,只需要调用sppConnect连接打印机即可。
如下写法:
连接时请检查蓝牙开启状态,deviceId和uuid配置是否有误