使用 Noble 与 BLE 设备通信

问题描述

过去几天我一直在研究和了解 GATT 来控制我的新可调床,我目前只能通过制造商的应用程序控制它,但我想通过我的智能家居设置进行控制。

我能够获得有/无响应的读写特征,所以我知道我在正确的轨道上并且我已经在 OSX 上使用 PacketLogger 来获取我现在知道当我自己使用 IOS 应用程序发送时可以接受的值称为 BLE 扫描仪,它只要求将十六进制或文本值发送到设备(床)的特征,并且我已经发送了我在使用制造商的应用程序 (5212 006E 0100 4EBD) 时从 PacketLogger 中提取的值作为单独的十六进制并且它会振动床!

我现在只需要通过直接发送到peripheral.writeHandle 函数或通过characteristic.write 函数来使用Noble 自己完成此操作。我尝试了很多不同的东西,但是当它以十六进制单独发送值时,我没有得到与 BLE Scanner 应用程序相同的效果,所以我知道设备对我发送的内容不满意。我注意到为我认为的 L2CAP 添加了一些填充,但正如我所说,BLE 扫描仪仅适用于 (5212 006E 0100 4EBD),只要它们以十六进制单独发送即可。

非常感谢帮助我完成任务。

到目前为止,我已经尝试写入特性并尝试直接写入外围设备,因为在通过 BLE Scanner 写入时,PacketLogger 日志中没有提及特性 UUID,而在使用 Manaufacturer 应用程序时,PacketLogger 显示写入特性 UUID所以我认为两者都会起作用。 我尝试了很多

peripheral.writeHandle(18,Buffer.from("5212006E01004EBD","hex"),true,function(err) { console.log('writehandle'+err) });

characteristic.write(Buffer.from("5212006E01004EBD",function (error) {
        if (!error) {
            console.log("write succesful");
        } else {
            console.log("write unsuccesful");
        }
    }.bind(this));

我确实看到 BLE 扫描仪应用程序的 ATT Send PacketLogger 条目存在差异,该条目与我在 Noble 中的尝试不同,但它不起作用 - 写入请求 - 句柄:0x0012 - 值:5212 006E 0100 4EBD 操作码是 0x0012 BLE 扫描仪的工作包记录器条目,而我的尝试显示每次尝试的多个条目,第一个条目始终是 Exchange MTU 请求 - MTU:104,操作码为 0x0002。无论我在 Noble 中发生什么变化,操作码都保持不变。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...