无法将minicom的输出保存到文件中

31

当我使用Minicom从串口捕获数据时,需要将大量数据保存到一个名为minicom.cap的文件中。然而,如果我按下Ctrl+A和L来捕获文件,它会失败。没有文件被创建(minicom.cap之前不存在)。我的下载目录已经正确创建。我的操作系统是Mint,并且我从Arduino nano v3.0读取数据。


这听起来可能是一个权限问题。尝试以root身份运行minicom。如果这解决了问题,请告诉我,这样我就可以将其发布为答案 :) - ZnArK
谢谢你的帮助 :-). 我现在知道原因了。看起来是我配置minicom时出了问题,导致它将输出保存在默认目录中。 - Kerwong
6
请将文本从英语翻译成中文。仅返回已翻译的文本:请将您的解决方案作为答案发布,以便标记为已解决,并可帮助其他遇到相同问题的人。 - ZnArK
5个回答

82

你尝试以如下方式启动minicom了吗?

minicom -C capturefile

除非我理解错了,否则它应该立即开始捕获传入数据。


1
手册同意:https://linux.die.net/man/1/minicom: “-C filename。在启动时打开捕获文件。” - GeminiDakota

8

在写入后,OP可能会错过“Shift + L”步骤,因此总体过程如下:

1(在minicom中)

2 Ctrl A + Z

3 Shift + L

4(等待写入...)

5 Shift + L

6(检查您已经写入的文件,默认为minicom.cap,您可能希望在/root/minicom.cap中找到它)


用户已经在原问题的评论中指出了一个解决方案。 - Nic3500

1
chown root:dialout /etc/minicom/minirc.dfl
chmod 664 /etc/minicom/minirc.dfl

现在,dialout组的任何成员都可以写入minirc.dfl文件。


0

minicom需要一个配置文件,该文件需要在root权限下存储,并存储在/etc/minicom/下,命名为minirc.dfl

通常情况下,当您第一次以sudo身份运行minicom时,您可以保存minirc.dfl,如果您以任何其他用户身份运行,则无法保存。

这可能是您的问题所在。


1
您可以将配置文件放在~/.minirc.X中,其中X可以是dfl表示默认或符号名称 - 无需使用sudo,但可能需要检查实际串行端口的权限(在许多Linux发行版中,您需要加入dialout组)- 但不确定Mint是否需要。 - nhed
正如@nhed所说,它保存在您的用户目录中,而不是根用户目录中。是的,当以root身份运行时,您是正确的,但是当以普通用户身份运行时则不是。 - CodingInTheUK

0

这比问题的范围要大一些,但既然已经有答案了,我想有人可能希望做一些更加“用户友好”的事情。

如果您经常打开多个设备的串行连接,那么您可能会对此感兴趣。您可以使用桌面快捷方式来实现这一点。

我用它来连接交换机和路由器,我有两种不同的控制台电缆,一个是 USB 转 mini USB,另一个是带有 USB A 适配器到 rj45 的 db9。

在这里使用快捷方式意味着我不需要每次切换设备时手动重新配置 minicom。快捷方式将正确的配置文件作为参数(标识符)以及捕获文件(-C)提供。我所需要做的就是确保我的设备使用电缆连接到我的计算机上。

如果您需要这个功能,请从终端(而不是从 minicom)以普通用户身份运行以下命令。配置文件将保存在您的主目录中,minicom 可以找到它们。

创建日志文件目录:您可以选择只在 /var/log 中记录日志,但我希望快速访问日志文件。

mkdir ~/minicom 

查找您的设备:

dmesg | grep tty

如果你的电缆使用像一些 USB 转 mini USB 控制台电缆这样的 RS-232 芯片,那么你的 tty 设备可能会在 ttyACM* 上而不是 ttyUSB* 上。

使用 nano 创建 minicom 配置文件。根据需要调整大写部分,如果出现奇怪的字符或无输出,则波特率可能设置不正确。你可以创建尽可能多的配置文件以及桌面快捷方式,只需更改标识符即可。

nano ~/.minirc.IDENTIFIER

pu port            /dev/ttyDEVICE
pu baudrate        9600
pu rtscts          No
pu logfname        /home/USER/minicom/IDENTIFIER.log

创建一个桌面快捷方式。
nano ~/Desktop/IDENTIFIER.desktop

[Desktop Entry]
Encoding=UTF-8 
Name=Minicom IDENTIFIER
Comment=Something relevant to your connection/device name maybe
Exec=minicom IDENTIFIER -C/home/USER/minicom/IDENTIFIER.log
Terminal=1
Type=Application

使其可执行
chmod +x ~/Desktop/IDENTIFIER.desktop

现在测试连接,双击您的新快捷方式。

关于IDENTIFIER部分的说明,它可以是任何东西。路由器或交换机型号、设备名称或类型。按照您的喜好进行操作,但最好使用连字符代替空格,我没有测试过,但我想它们可能会引起问题,例如仅获取第一个空格之前的名称或更糟糕的是,尝试加载多个minicom.identifier文件。

创建第一个连接后,打开另一个终端:

tail -fn25 ~/minicom/IDENTIFIER.log

因为你已经设置了minicom来捕获输出,通过tail命令查看log/capture文件,你可以向后滚动尽需要的距离,这对于路由器/交换机等配置文件可能有数千行的情况非常有用。只需在tailed文件中滚动到你正在处理的部分,作为在minicom中进行更改时的参考,tail终端仍会收集数据,但不像当你开始键入时minicom会自动跳转到新行。
如果有比我更熟悉shell的人想要添加一些内容,以便编写一个接受所需参数以设置新连接配置文件、日志等的shell脚本,我不会有太大的不满:)
此外,我想在minicom运行之前添加一个命令到快捷方式中,使用标识符为终端窗口应用标题,但我无法在发布此帖子时的Ubuntu 20.04中使其工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接