BLE 扫描在发现少数设备后停止
BLE Scan stops after discovering few devices
在 运行 之后第一次 以下代码来自我的 Raspberry Pi 4 上给出的 here 示例之一,它工作正常并找到许多设备。但是当我重新运行时扫描功能坏了,只找到几个设备:
noble.on('stateChange', function(state) {
if (state === 'poweredOn') {
noble.startScanning();
} else {
noble.stopScanning();
}
});
noble.on('discover', function(peripheral) {
console.log('peripheral discovered (' + peripheral.id +
' with address <' + peripheral.address + ', ' + peripheral.addressType + '>,' +
' connectable ' + peripheral.connectable + ',' +
' RSSI ' + peripheral.rssi + ':');
console.log('\thello my local name is:');
console.log('\t\t' + peripheral.advertisement.localName);
console.log('\tcan I interest you in any of the following advertised services:');
console.log('\t\t' + JSON.stringify(peripheral.advertisement.serviceUuids));
var serviceData = peripheral.advertisement.serviceData;
if (serviceData && serviceData.length) {
console.log('\there is my service data:');
for (var i in serviceData) {
console.log('\t\t' + JSON.stringify(serviceData[i].uuid) + ': ' + JSON.stringify(serviceData[i].data.toString('hex')));
}
}
if (peripheral.advertisement.manufacturerData) {
console.log('\there is my manufacturer data:');
console.log('\t\t' + JSON.stringify(peripheral.advertisement.manufacturerData.toString('hex')));
}
if (peripheral.advertisement.txPowerLevel !== undefined) {
console.log('\tmy TX power level is:');
console.log('\t\t' + peripheral.advertisement.txPowerLevel);
}
console.log();
});
如果我重置设备,问题就会消失。如果我通过 bluetoothctl
然后 scan on
扫描,则完全没有问题。我可以根据需要扫描和关闭。所以我的猜测是这个问题与 noble.js
有关
这是 sudo btmon
扫描停止的输出。
这是 scan on
挂起的图像。
BlueZ 版本为 5.50。
问题是当 duplicates 设置为 false
时,我只是在没有停止扫描的情况下退出脚本。因此,当我重新运行时,只发现了一些新设备。
在 运行 之后第一次 以下代码来自我的 Raspberry Pi 4 上给出的 here 示例之一,它工作正常并找到许多设备。但是当我重新运行时扫描功能坏了,只找到几个设备:
noble.on('stateChange', function(state) {
if (state === 'poweredOn') {
noble.startScanning();
} else {
noble.stopScanning();
}
});
noble.on('discover', function(peripheral) {
console.log('peripheral discovered (' + peripheral.id +
' with address <' + peripheral.address + ', ' + peripheral.addressType + '>,' +
' connectable ' + peripheral.connectable + ',' +
' RSSI ' + peripheral.rssi + ':');
console.log('\thello my local name is:');
console.log('\t\t' + peripheral.advertisement.localName);
console.log('\tcan I interest you in any of the following advertised services:');
console.log('\t\t' + JSON.stringify(peripheral.advertisement.serviceUuids));
var serviceData = peripheral.advertisement.serviceData;
if (serviceData && serviceData.length) {
console.log('\there is my service data:');
for (var i in serviceData) {
console.log('\t\t' + JSON.stringify(serviceData[i].uuid) + ': ' + JSON.stringify(serviceData[i].data.toString('hex')));
}
}
if (peripheral.advertisement.manufacturerData) {
console.log('\there is my manufacturer data:');
console.log('\t\t' + JSON.stringify(peripheral.advertisement.manufacturerData.toString('hex')));
}
if (peripheral.advertisement.txPowerLevel !== undefined) {
console.log('\tmy TX power level is:');
console.log('\t\t' + peripheral.advertisement.txPowerLevel);
}
console.log();
});
如果我重置设备,问题就会消失。如果我通过 bluetoothctl
然后 scan on
扫描,则完全没有问题。我可以根据需要扫描和关闭。所以我的猜测是这个问题与 noble.js
这是 sudo btmon
扫描停止的输出。
这是 scan on
挂起的图像。
BlueZ 版本为 5.50。
问题是当 duplicates 设置为 false
时,我只是在没有停止扫描的情况下退出脚本。因此,当我重新运行时,只发现了一些新设备。