我正在尝试连接到不提供蓝牙驱动程序的 Totalstation。由于我这样做纯粹是出于诊断原因,所以我想查看已建立串行连接的原始输出。
我需要做什么才能管道全部从蓝牙连接到终端的输出?
答案1
这是我继续连接插在 arduino 上的 HC-05 蓝牙设备的方法。它不需要像 Brian 的回答中那样写入文件,但想法是类似的。我已经在 HC-05 设备上使用波特率 9600 的设置对其进行了测试。
第一步:配对设备并提供 PIN
我尝试从 GUI 设置配对,但不起作用。以下是适合我的命令行方法。首先,让我们从命令行配对设备。运行:
sudo bluetoothctl
确保蓝牙设备已启动:
# power on
我们现在启动“记住密码”的代理rfcomm
:
# agent on
现在我们启用扫描模式来找到我们的设备并将其配对:
# scan on
几秒钟后,您的设备的 MAC 地址就会出现。我们将其标记为“之后”。然后,您只需像这样配对设备:
# pair <MAC>
系统会要求您输入 PIN 码,默认情况下,它位于1234
我的 HC-05 设备上。您可以注意到,您的设备可能会连接然后断开连接,并显示如下消息:
[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no
但这不是问题。您不需要连接,因此现在可以bluetoothctl
通过输入来退出Ctrl + D
。
提供可用的文件/dev/rfcomm0
首先,请确保您之前没有运行过任何 rfcomm 命令。事实上,即使您关闭Ctrl+C
该程序,它仍然在后台运行。
sudo killall rfcomm
现在你可以运行
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
请注意,如果您尝试在 rfcom 的输入端写入,则不会发生任何事情。您需要使用另一个程序。
第三步也是最后一步:写入/dev/rfcomm0
有几种方法可以写入文件,但请注意,所有方法都需要 root 权限。我在这里描述了几个可以执行此操作的程序(以便您可以根据需要或系统上安装的内容进行选择)。如果您忘记以 root 身份运行该程序,则可能会出现错误:
stty: /dev/rfcomm0: Device or resource busy
第一个选项:使用连接screen
Screen 是一款非常强大的工具。您可以使用以下命令安装它(它始终有用):
sudo apt-get install screen
然后运行
sudo screen /dev/rfcomm0
如果你忘记以 root 身份运行它,你将会得到类似 Aleksander 的错误:
[screen is terminating]
要退出,请输入“(CTRL + A)+ :quit”
第二种选择:使用连接minicom
安装
sudo apt-get install minicom
然后运行
sudo minicom -D /dev/rfcomm0
如果你忘记以 root 身份运行它,你将遇到类似以下错误
minicom: cannot open /dev/rfcomm0: Device or resource busy
要退出它,请输入“Ctrl + A X”。
第三种选择:python 脚本 miniterm
下载这个脚本,然后运行:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
直接写入文件
首先运行以下命令(9600 是波特率):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
现在你可以像在经典文件中一样在此文件中写入:
sudo su -c "echo 'message' > /dev/rfcomm0"
理论上使用以下方法读取
sudo tail -f /dev/rfcomm0
但我不知道读取是否有效,如果你们有想法......
答案2
1)用于hcitool scan
查找设备的Mac地址。
设备应设置为具有已知引脚的从属模式。如果您不使用已知引脚,ubuntu 会创建一个,您通常没有时间在测量工具的笨重菜单中输入它。
2) 我不完全确定这是否必要,但在蓝牙 GUI 菜单中,配对该设备。
3)在/etc/bluetooth/rfcomm.conf中
rfcomm0 {
bind no;
device 00:07:80:44:4F:37;
channel 1;
comment "Serial Port";
}
“绑定号”很重要,否则它会尝试自动绑定,这会给实际访问设备带来各种问题(因为它对关联时间非常挑剔)
4)sudo rfcomm connect 0
如果出现错误,请重新启动蓝牙服务。
5)screen /dev/rfcomm0
对于以这种方式传输的实际串行命令,请联系您的供应商并请求。
答案3
作为 Brian 答案的补充。屏幕对我来说不起作用,立即显示[screen is terminating]
所以我找到了这个 miniterm python脚本。用法类似:
sudo miniterm.py /dev/rfcomm0