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


10

我正在尝试连接到不提供蓝牙驱动程序的Totalstation。当我出于纯粹出于诊断原因而这样做时,我希望看到已建立的串行连接的原始输出。

将蓝牙连接的所有输出通过管道传输到终端,我该怎么办?


您是在做蓝牙->串行,串行->蓝牙还是双向?
nanofarad 2013年

Totalstation蓝牙<-> Ubuntu蓝牙。鉴于totalstation具有通过USB进行的标准串行配置,我怀疑它正在通过Bluetooth建立串行连接。当然,我可能完全错了,这时我完全错了并且蓝牙使用XYZ的答案是完全允许的。
Brian Ballsun-Stanton

就双向证明而言,我设法通过“屏幕”建立了一个空白的串行连接,当我敲击键盘上的一个键时,该连接会在设备上发出错误的哔哔声。所以我怀疑我已经中途了,我只是不知道哪一半。
Brian Ballsun-Stanton

您可以绘制一个快速图表吗?我不知道是串行传输还是蓝牙传输,还有谁将数据传递到哪里。只需使用GIMP或其他方式执行并将其上传到此处
nanofarad 2013年

效果很好,但是我遇到了RFCOMM的一些故障。当我用SCREEN连接时,某些AT序列会自动键入“ ATE1 E0” <RETURN>三次。因此,在Raspi端出现一些“登录失败”。之后,我可以成功登录并使用终端会话,而不会出现任何其他故障。
科迪

Answers:



12

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
当我尝试运行“ rfcomm connect 0”时,我收到“ Missing dev parameter”(Missing开发参数)
someonewithpc

您是否正确编辑了conf文件?
Brian Ballsun-Stanton'Mar

5
尝试sudo rfcomm connect rfcomm0 00:07:80:44:4F:37
elopio '16

@elopia的oneliner非常简单。它为我工作
ptetteh227 '18

10

这是继续连接到我的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

屏幕是一个非常强大的工具。您可以使用安装它(它总是有用的了):

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

但我不知道阅读不可行,如果你们有什么主意...


/def/rfcomm0应该是/dev/rfcomm0
stewSquared
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.