使用不同的协议通过蓝牙发送数据
Send data using over bluetooth using different protocols
我有一个与蓝牙设备通信的应用程序,我正在尝试用一些代码替换该应用程序。
我尝试使用 C# InTheHand nuget、Microsoft 的蓝牙 LE Explorer、python 的套接字和其他工具发送数据,看看会发生什么。
但有些事情我仍然不明白 - 我在 wireshark 中看到的使用不同库的每种方式都有不同的协议:ATT、RFCOMM、L2CAP...
当我使用前面提到的应用从 phone 嗅探蓝牙流量时,我看到的主要是 HCI_CMD 协议流量。
如何选择要发送的协议?有一个简单的包吗?有什么要读的吗?
我需要自己构建数据包吗?包括 headers 等等?
谢谢!
更新:
使用 Microsoft 的 Bluetooth LE Explorer,我能够发送一个点亮我的 lamp 的数据包,从 02010e10000c00040012(data)
开始
使用 bleak 我能够发送一个以 02010e10000c00040052(data)
开头的数据包
差异使 lamp 不亮,我不确定我是否可以通过 bleak 更改它,因为它不是我发送的数据的一部分
我认为你所展示的是 bleak 做了 write without response
而 MS BLE Explorer 做了 write_with_response
.
查看 write_gatt_char
的 Bleak documentation 似乎与 response
默认一致 False
write_gatt_char Parameters:
char_specifier (BleakGATTCharacteristic, int, str or UUID). The characteristic to write to, specified by either integer handle, UUID
or directly by the BleakGATTCharacteristic object representing it.
data (bytes or bytearray) – The data to send.
response (bool) – If write-with-response operation should be done. Defaults to False.
我希望以下内容能达到预期的效果:
await client.write_gatt_char(LIGHT_CHARACTERISTIC, b"\x55\xaa\x03\x08\x02\xff\x00\xff\xf5", True)
我有一个与蓝牙设备通信的应用程序,我正在尝试用一些代码替换该应用程序。
我尝试使用 C# InTheHand nuget、Microsoft 的蓝牙 LE Explorer、python 的套接字和其他工具发送数据,看看会发生什么。
但有些事情我仍然不明白 - 我在 wireshark 中看到的使用不同库的每种方式都有不同的协议:ATT、RFCOMM、L2CAP...
当我使用前面提到的应用从 phone 嗅探蓝牙流量时,我看到的主要是 HCI_CMD 协议流量。
如何选择要发送的协议?有一个简单的包吗?有什么要读的吗?
我需要自己构建数据包吗?包括 headers 等等?
谢谢!
更新:
使用 Microsoft 的 Bluetooth LE Explorer,我能够发送一个点亮我的 lamp 的数据包,从 02010e10000c00040012(data)
开始
使用 bleak 我能够发送一个以 02010e10000c00040052(data)
开头的数据包
差异使 lamp 不亮,我不确定我是否可以通过 bleak 更改它,因为它不是我发送的数据的一部分
我认为你所展示的是 bleak 做了 write without response
而 MS BLE Explorer 做了 write_with_response
.
查看 write_gatt_char
的 Bleak documentation 似乎与 response
默认一致 False
write_gatt_char Parameters:
char_specifier (BleakGATTCharacteristic, int, str or UUID). The characteristic to write to, specified by either integer handle, UUID or directly by the BleakGATTCharacteristic object representing it.
data (bytes or bytearray) – The data to send.
response (bool) – If write-with-response operation should be done. Defaults to False.
我希望以下内容能达到预期的效果:
await client.write_gatt_char(LIGHT_CHARACTERISTIC, b"\x55\xaa\x03\x08\x02\xff\x00\xff\xf5", True)