如何将原始串行终端连接到蓝牙连接?

我正在尝试连接到不提供蓝牙驱动程序的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 

但我不知道阅读不起作用,如果你们有任何想法…