我有一个通过以下命令在Linux上运行的蓝牙RFCOMM服务:
sdptool add --channel 1 SP
rfcomm watch hci0 1 "$COMMAND" {}
# ^ here
< p > $COMMAND
将二进制数据写入作为参数传递的文件中。我已经测试过它的行为是否正确,方法是执行:
FIFO=$(tempfile)
mkfifo "$FIFO"
"$COMMAND" "$FIFO" &
cat "$FIFO" | hexdump -C # <- output is correct
然��,当通过SPP / RFCOMM发现(UUID
00001101-0000-1000-8000-00805F9B34FB
)从不同的设备连接到服务时,我发现在流中,每个0x0A
(LF
)实例都被替换为0x0D
0x0A
(CR
LF
)。问题不在接收端,因为我尝试连接到一个也发送二进制数据的硬件串行设备,在那里转换没有发生。必须是第一个代码片段中的命令(# ^ here
线上面的命令),执行了这种替换。
为什么rfcomm
工具要进行此替换,如何禁用它?