我正在尝试连接到不提供蓝牙驱动程序的 Totalstation。因为我这样做纯粹是出于诊断原因,所以我想查看已建立的串行连接的原始输出。
我必须做什么才能将所有输出从蓝牙连接传输到终端?
tob*_*ora 13
这是我继续连接到插入我的 arduino 上的 HC-05 蓝牙设备的方法。它不需要像布赖恩的回答那样编写文件,但想法是相似的。我已经在 HC-05 设备上使用波特率 9600 设置对其进行了测试。
我试图从 GUI 设置配对,但它不起作用。这是对我有用的命令行方式。首先,让我们从命令行配对设备。跑 :
sudo bluetoothctl
Run Code Online (Sandbox Code Playgroud)
确保蓝牙设备已启动:
# power on
Run Code Online (Sandbox Code Playgroud)
我们现在启动将“记住引脚”的代理rfcomm:
# agent on
Run Code Online (Sandbox Code Playgroud)
现在我们启用扫描模式以找到我们的设备并能够对其进行配对:
# scan on
Run Code Online (Sandbox Code Playgroud)
几秒钟后,您的设备的 MAC 应该会出现。我们将其表示为之后。然后,您只需要像这样配对设备:
# pair <MAC>
Run Code Online (Sandbox Code Playgroud)
系统会要求您输入 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
Run Code Online (Sandbox Code Playgroud)
但这不是问题。您不需要连接,因此您现在可以bluetoothctl通过键入退出Ctrl + D。
/dev/rfcomm0首先,请确保您之前没有运行过任何 rfcomm 命令。事实上,即使你关闭Ctrl+C程序,它仍然在后台运行。
sudo killall rfcomm
Run Code Online (Sandbox Code Playgroud)
现在,你可以运行
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Run Code Online (Sandbox Code Playgroud)
请注意,如果您尝试在 rfcom 的输入上写入,则什么也没有发生。您需要使用另一个程序。
/dev/rfcomm0有多种写入文件的方法,但请注意,所有进行操作的方法都涉及 root。我在这里描述了几个可以做到这一点的程序(例如,您可以根据需要或系统上安装的内容进行选择)。如果您忘记以 root 身份运行程序,您可能会遇到错误:
stty: /dev/rfcomm0: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
screen屏幕是一个非常强大的工具。您可以使用以下命令安装它(它总是有用的):
sudo apt-get install screen
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo screen /dev/rfcomm0
Run Code Online (Sandbox Code Playgroud)
如果您忘记以 root 身份运行它,您将收到类似 Aleksander got 的错误:
[screen is terminating]
Run Code Online (Sandbox Code Playgroud)
要退出它,请输入“(CTRL + A) + :quit”
minicom安装它
sudo apt-get install minicom
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo minicom -D /dev/rfcomm0
Run Code Online (Sandbox Code Playgroud)
如果您忘记以 root 身份运行它,则会出现类似的错误
minicom: cannot open /dev/rfcomm0: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
要退出它,请键入“Ctrl + A X”。
下载这个脚本,然后运行:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Run Code Online (Sandbox Code Playgroud)
首先运行以下命令(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
Run Code Online (Sandbox Code Playgroud)
现在您可以像在经典文件中一样写入此文件:
sudo su -c "echo 'message' > /dev/rfcomm0"
Run Code Online (Sandbox Code Playgroud)
并在理论上使用它从中读取
sudo tail -f /dev/rfcomm0
Run Code Online (Sandbox Code Playgroud)
但我不知道 read 不起作用,如果你们中有人有想法的话......
Bri*_*ton 12
1)hcitool scan用于查找设备的 Mac 地址。
应使用已知引脚将设备设置为从模式。如果您不使用已知的 pin,ubuntu 会自己制作一个,您通常没有时间在测量工具的笨拙菜单中输入它。
2) 我不完全确定这是必要的,但在蓝牙 gui 菜单中,配对设备。
3)在/etc/bluetooth/rfcomm.conf
rfcomm0 {
bind no;
device 00:07:80:44:4F:37;
channel 1;
comment "Serial Port";
}
Run Code Online (Sandbox Code Playgroud)
“绑定否”很重要,否则它会尝试自动绑定,这会为实际访问设备带来各种问题(因为它对何时关联非常挑剔)
4) sudo rfcomm connect 0
如果出现错误,请重新启动蓝牙服务。
5) screen /dev/rfcomm0
对于以这种方式传输的实际串行命令,请联系您的供应商并请求。
小智 5
作为布莱恩答案的补充。屏幕对我不起作用,立即显示[screen is terminating]
所以我找到了这个 miniterm python脚本。用法类似:
sudo miniterm.py /dev/rfcomm0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74852 次 |
| 最近记录: |