【发布时间】:2013-02-22 16:37:55
【问题描述】:
我有一个通过命令在 Linux 上运行的蓝牙 RFCOMM 服务:
sdptool add --channel 1 SP
rfcomm watch hci0 1 "$COMMAND" {}
# ^ here
$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 ( CRLF) 在流中。问题不在接收端,因为我尝试连接到也发送二进制数据的硬件串行设备,但没有发生转换。执行替换的必须是第一个 sn-p(# ^ here 行上方)中的命令。
为什么rfcomm 工具会进行此替换,如何禁用它?
【问题讨论】:
标签: linux bluetooth serial-port newline