无法通过 Web 蓝牙获取中央设备名称 API
Unable to get central Device Name via Web-Bluetooth API
我正在尝试获取中央设备名称,其中中央设备是基于 Javascript 的网络应用程序,外围设备是 Nano ble 33。
我正在使用 web-bluetooth API 并且我能够在这个 enter link description here
之后获得外围设备名称
另一方面,我可以使用 central.address() 获取中心地址,但是当我使用 central.deviceName() 或 central.localName( ).
我想知道我应该在中央哪里设置设备名称()。是必须的吗?
提前致谢。
根据 https://docs.arduino.cc/retired/archived-libraries/CurieBLE#example-1 上的 arduino 示例,您似乎可以使用以下代码获得 BLECentral
:
void loop() {
// listen for BLE peripherals to connect:
BLECentral central = blePeripheral.central();
// if a central is connected to peripheral:
if (central) {
Serial.print("Connected to central: ");
Serial.println(central.address());
}
}
但是BLECentral不允许您根据https://github.com/arduino/ArduinoCore-arc32/blob/master/libraries/CurieBLE/src/BLECentral.h
获取中心设备名称信息
class BLECentral {
public:
bool connected(void); // is the central connected
const char* address(void) const; // address of the Central in string form
bool disconnect(void); // Disconnect the central if it is connected
void poll(void); // Poll the central for events
...
如果您需要,我建议您使用地址并使用 "Central 00:11:22:33:44:55"
作为名称。
需要说明的是,Web Bluetooth 不允许您获取中央设备名称。它允许处于中心角色的网页 运行 通过蓝牙连接连接到 GATT 服务器。
话虽如此,但没有什么能阻止您在 BLE 外围设备上拥有自定义蓝牙特性,即 returns Central 的设备地址作为值,以便您可以从网页访问它。请参阅下面的 JS 示例:
const yourServiceUuid = 0x1234;
const yourCharacteristicUuid = 0x5678;
const device = await navigator.bluetooth.requestDevice({
// filters: [...] <- Prefer filters to save energy & show relevant devices.
acceptAllDevices: true,
optionalServices: [yourServiceUuid]});
const server = await device.gatt.connect();
const service = await server.getPrimaryService(yourServiceUuid);
const characteristic = await service.getCharacteristic(yourCharacteristicUuid);
const value = await characteristic.readValue();
const decoder = new TextDecoder('utf-8');
console.log(`> Central name: "Central ${decoder.decode(value)}"`);
我正在尝试获取中央设备名称,其中中央设备是基于 Javascript 的网络应用程序,外围设备是 Nano ble 33。
我正在使用 web-bluetooth API 并且我能够在这个 enter link description here
之后获得外围设备名称另一方面,我可以使用 central.address() 获取中心地址,但是当我使用 central.deviceName() 或 central.localName( ).
我想知道我应该在中央哪里设置设备名称()。是必须的吗?
提前致谢。
根据 https://docs.arduino.cc/retired/archived-libraries/CurieBLE#example-1 上的 arduino 示例,您似乎可以使用以下代码获得 BLECentral
:
void loop() {
// listen for BLE peripherals to connect:
BLECentral central = blePeripheral.central();
// if a central is connected to peripheral:
if (central) {
Serial.print("Connected to central: ");
Serial.println(central.address());
}
}
但是BLECentral不允许您根据https://github.com/arduino/ArduinoCore-arc32/blob/master/libraries/CurieBLE/src/BLECentral.h
获取中心设备名称信息class BLECentral {
public:
bool connected(void); // is the central connected
const char* address(void) const; // address of the Central in string form
bool disconnect(void); // Disconnect the central if it is connected
void poll(void); // Poll the central for events
...
如果您需要,我建议您使用地址并使用 "Central 00:11:22:33:44:55"
作为名称。
需要说明的是,Web Bluetooth 不允许您获取中央设备名称。它允许处于中心角色的网页 运行 通过蓝牙连接连接到 GATT 服务器。
话虽如此,但没有什么能阻止您在 BLE 外围设备上拥有自定义蓝牙特性,即 returns Central 的设备地址作为值,以便您可以从网页访问它。请参阅下面的 JS 示例:
const yourServiceUuid = 0x1234;
const yourCharacteristicUuid = 0x5678;
const device = await navigator.bluetooth.requestDevice({
// filters: [...] <- Prefer filters to save energy & show relevant devices.
acceptAllDevices: true,
optionalServices: [yourServiceUuid]});
const server = await device.gatt.connect();
const service = await server.getPrimaryService(yourServiceUuid);
const characteristic = await service.getCharacteristic(yourCharacteristicUuid);
const value = await characteristic.readValue();
const decoder = new TextDecoder('utf-8');
console.log(`> Central name: "Central ${decoder.decode(value)}"`);