如何将原始串行终端连接到蓝牙连接?
我正在尝试连接到不提供蓝牙驱动程序的Totalstation。 由于我出于纯粹的诊断原因这样做,我希望看到已建立的串行连接的原始输出。
如何将蓝牙连接的所有输出传输到终端?
作为Brian的答案的补充。 屏幕对我没用,立即显示[screen is terminating]
所以我找到了这个miniterm python脚本。 用法类似:
sudo miniterm.py /dev/rfcomm0
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
对于以这种方式传输的实际串行命令,请与供应商联系并乞求
这是我继续连接到插在我的arduino上的HC-05蓝牙设备的方法。 它不需要像Brian的答案那样编写文件,但这个想法是类似的。 我在HC-05设备上使用波特9600速率设置进行了测试。
第一步:配对设备并提供PIN
我试图从GUI设置配对,但它没有工作。 这是继续运行的命令行方式。 首先,让我们从命令行配对设备。 跑 :
sudo bluetoothctl
确保蓝牙设备已启动:
# power on
我们现在启动将为rfcomm
“记住引脚”的代理:
# agent on
现在我们启用扫描模式以查找我们的设备并能够配对它:
# scan on
几秒钟后,应显示设备的MAC。 我们将其表示为。 然后,你只需要像这样配对设备:
# pair
系统会要求您输入PIN,默认情况下,我的HC-05设备上输入的是1234
。 您可以注意到,设备可能会连接,然后断开与这样的消息:
[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
但这不是问题。 您无需连接,因此您现在可以通过键入Ctrl + D
退出bluetoothctl
。
提供可用的文件/def/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
连接
屏幕是一个非常强大的工具。 您可以使用以下命令安装它(它总是有用的):
sudo apt-get install screen
然后跑
sudo screen /dev/rfcomm0
如果您忘记以root身份运行它,您将收到类似Aleksander的错误:
[screen is terminating]
要退出,请输入“Ctrl A +:exit”
第二种选择:使用minicom
连接
安装它
sudo apt-get install minicom
然后跑
sudo minicom -D /dev/rfcomm0
如果您忘记以root身份运行它,则会出现类似的错误
minicom: cannot open /dev/rfcomm0: Device or resource busy
要退出,请键入“Ctrl + AX”。
第三个选项: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
但我不知道阅读不起作用,如果你们有任何想法…