使用不同的协议通过蓝牙发送数据



我有一个与蓝牙设备通信的应用程序,我正在尝试用一些代码替换该应用程序。

我试着使用C#InTheHand nuget、微软的蓝牙LE Explorer、python的套接字和其他工具来发送数据,看看会发生什么。

但有一点我仍然不明白——在使用不同库的各个方面,我在wireshark中看到了不同的协议:ATT、RFCOMM、L2CAP。。。

当我使用前面提到的应用程序从手机中嗅探蓝牙流量时,我看到的主要是HCI_CMD协议流量。

如何选择要发送的协议?有简单的包装吗?读点什么?

我需要自己制作包吗?包括页眉之类的?

谢谢!

更新:使用微软的蓝牙LE Explorer,我能够发送一个点亮我的灯的数据包,从02010e10000c00040012开始(数据(
使用crushe,我能够发出一个从02010E10000c000400m52开始的数据包(数据(差异使灯不亮,我不确定我是否可以通过crushe更改它,因为它不是我发送的数据的一部分

我认为您所展示的是,萧瑟执行write without response,而MS BLE Explorer执行write_with_response

查看write_gatt_char的Bleak文档,该文档似乎是一致的,因为默认情况下responseFalse

write_gatt_char参数:

  • char_specifier(BleakGATTCharacteristic、int、str或UUID(。要写入的特征,由整数句柄、UUID指定或者直接通过代表它的BleakGATT特征对象。

  • data(字节或字节数组(–要发送的数据。

  • response(bool(–如果应该执行带响应的写入操作。默认为False。

我希望以下内容能达到预期效果:

await   client.write_gatt_char(LIGHT_CHARACTERISTIC, b"x55xaax03x08x02xffx00xffxf5", True)

相关内容

  • 没有找到相关文章

最新更新