Bluetooth Chrome:不支持蓝牙L2CAP协议

Bluetooth Chrome:不支持蓝牙L2CAP协议,bluetooth,bluetooth-lowenergy,google-chrome-app,l2cap,Bluetooth,Bluetooth Lowenergy,Google Chrome App,L2cap,我想用chrome应用程序连接我的蓝牙遥控器,但出现以下错误“蓝牙L2CAP协议不受支持” 我想在不使用windows支持的情况下使用chrome应用程序连接我的蓝牙遥控器或手机。 请帮忙 问候 var main=(函数(){ //GATT设备信息服务UUIDs var装置信息服务ID='0000180a-0000-1000-8000-00805f9b34fb'; 变量制造商名称字符串ID='00002a29-0000-1000-8000-00805f9b34fb'; 变量序列号字符串ID='

我想用chrome应用程序连接我的蓝牙遥控器,但出现以下错误“蓝牙L2CAP协议不受支持” 我想在不使用windows支持的情况下使用chrome应用程序连接我的蓝牙遥控器或手机。 请帮忙 问候

var main=(函数(){
//GATT设备信息服务UUIDs
var装置信息服务ID='0000180a-0000-1000-8000-00805f9b34fb';
变量制造商名称字符串ID='00002a29-0000-1000-8000-00805f9b34fb';
变量序列号字符串ID='00002a25-0000-1000-8000-00805f9b34fb';
var硬件版本字符串ID='00002a27-0000-1000-8000-00805f9b34fb';
var固件版本字符串UUID='00002a26-0000-1000-8000-00805f9b34fb';
var软件版本字符串UUID='00002a28-0000-1000-8000-00805f9b34fb';
var PNP_ID_UUID='00002a50-0000-1000-8000-00805f9b34fb';
函数DeviceInfo演示(){
//找到的设备的从设备地址到设备名称的映射
//公开电池服务。
this.deviceMap{};
//当前选择的服务及其特征。
this.service=空;
this.chrcMap{};
this.discovering=false;
}
/**
*设置给定服务的UI。
*/
DeviceInfo demo.prototype.selectService=功能(服务){
//根据是否隐藏或显示适当的元素
//| serviceId |未定义。
UI.getInstance().resetState(!service);
这个服务uu=服务;
this.chrcMap{};
如果(!服务){
log('未选择任何服务');
返回;
}
console.log('选择的GATT服务:'+服务.instanceId);
//获取所选服务的特征。
var self=这个;
chrome.bluetoothLowEnergy.getCharacteristics(service.instanceId,
功能(chrcs){
if(chrome.runtime.lastError){
log(chrome.runtime.lastError.message);
返回;
}
//确保仍选择了相同的服务。
if(service.instanceId!=self.service\uuux.instanceId)
返回;
如果(chrcs.length==0){
log('服务没有特征:'+服务.instanceId);
返回;
}
forEach(函数(chrc){
变量fieldId;
var valueDisplayFunction=UI.getInstance().setString值;
如果(chrc.uuid==制造商\u名称\u字符串\u uuid){
console.log('设置制造商名称字符串特征:'+
chrc.instanceId);
fieldId='制造商名称字符串';
}else if(chrc.uuid==序列号\u字符串\u uuid){
console.log('设置序列号字符串特征:'+
chrc.instanceId);
fieldId='序列号字符串';
}else if(chrc.uuid==硬件\u版本\u字符串\u uuid){
console.log('设置硬件修订字符串特征:'+
chrc.instanceId);
fieldId='硬件修订字符串';
}else if(chrc.uuid==固件\u版本\u字符串\u uuid){
console.log('设置固件修订字符串特征:'+
chrc.instanceId);
fieldId='固件修订字符串';
}else if(chrc.uuid==软件版本字符串){
console.log('设置软件修订字符串特征:'+
chrc.instanceId);
fieldId='软件修订字符串';
}else if(chrc.uuid==PNP\u ID\u uuid){
console.log('设置PnP ID特征:'+chrc.instanceId);
fieldId='pnp id';
valueDisplayFunction=UI.getInstance().setPnpIdValue;
}
if(fieldId==未定义){
console.log('忽略特征')+chrc.instanceId+
“带UUID”+chrc.UUID);
返回;
}
self.chrcMap_[fieldId]=chrc;
//读取特征值并存储。
chrome.bluetoothLowEnergy.readCharacteristicValue(chrc.instanceId,
函数(readChrc){
if(chrome.runtime.lastError){
log(chrome.runtime.lastError.message);
返回;
}
//确保仍选择了相同的特征。
if(!self.chrcMap_u2;hasOwnProperty(fieldId)||
self.chrcMap.[fieldId].instanceId!=readChrc.instanceId)
返回;
self.chrcMap_[fieldId]=readChrc;
valueDisplayFunction(fieldId,readChrc.value);
});
});
});
};
DeviceInfo demo.prototype.updateDiscoveryToggleState=函数(发现){
if(this.discovering!==discovering){
this.discovering=发现;
UI.getInstance().setDiscoveryToggleEstate(this.discovering);
}
};
DeviceInfo demo.prototype.init=函数(){
//将UI设置为初始未选择任何设备。
选择服务(空);
//将API回调使用的| this |存储在下面。
var self=这个;
//请求在中显示有关本地蓝牙适配器的信息
//用户界面。
var updateAdapterState=函数(adapterState){
UI.getInstance().setAdapterState(adapterState.address,adapterState.name);
self.updateDiscoveryToggleState(adapterState.Discovery);
};
chrome.bluetooth.getAdapterState(函数(适配器状态){
if(chrome.runtime.lastError)
log(chrome.runtime.lastError.message);
self.updateDiscoveryToggleState(adapterState.Discovery);
UpdateDapterState(适配器状态);
});
chrome.bluetooth.onAdapterStateChanged.addListener(updatedapterstate);
//下面使用的助手函数。
var isKnownDevice=函数(设备地址){
返回self.deviceMap\uuu0.hasOwnProperty(deviceAddress);
};
var st