zoukankan      html  css  js  c++  java
  • 如何优雅地使用minicom

    minicom简介

    安装

    minicom是linux下一款常用的串口调试工具。ubuntu环境下,使用如下命令安装

    sudo apt-get install minicom
    

    配置

    使用前需要进行配置,执行

    sudo minicom -s
    

    可打开minicom并进入配置模式,使用方向键,选择需要配置的项目,如 Serial port setup ,回车进入配置,可以看到多个配置项,此时光标在最下方。

    需要修改某个配置,则输入对应的字母,光标即会跳转到对应的项,编辑后,回车确认,光标再次回到最下方。

    一般而言,需要修改

    A -    Serial Device
    E -    Bps/Par/Bits
    F -    Hardware Flow Control
    

    A配置项,指定USB设备。一般USB转串口会生成设备/dev/ttyUSBx,x是数字序号。可以执行以下命令确认下

    ls -l /dev/ttyUSB*
    

    E配置项,根据实际情况,指定波特率等参数

    F配置项,硬件流控,要看你的设备是否有。如果没有,或者你不确定的话,可以先关掉,将默认的Yes切换为No.

    修改好之后,回车退到上一个界面,此时记得往下,选择 Save setup as dfl 将刚刚的修改保存为默认配置,避免下次使用还需要再次配置。

    最后,选择 Exit 会退出配置界面,并打开minicom。选择 Exit from Minicom 则会直接退出minicom。

    退出

    minicom使用前缀按键 Ctrl-A,即执行特殊操作时,都需要先按 Ctrl+A,再按某个按键使用对应的功能。

    Ctrl+A,再按 Z, 可查看帮助,从帮助可以看到,退出时,要先按 Ctrl+A,再按 X

    配置权限

    minicom 本身不需要sudo权限,但因为要打开串口设备/dev/xxx ,所以一般会需要使用sudo来启动minicom。

    这里我们可以修改下串口设备的权限,这样以后就不用使用sudo了。

    方式一:使用命令更改

    简单粗暴地使用chmod命令修改

    sudo chmod 666 /dev/ttyUSB0
    

    方式二:配置udev规则(推荐)

    修改配置文件

    sudo vim /etc/udev/rules.d/70-ttyusb.rules
    

    增加一行

    KERNEL=="ttyUSB[0-9]*", MODE="0666"
    

    修改后,需要重新插拔设备,以重新生成设备节点。

    自动设置设备名

    如果日常只用一个设备,设备名固定是/dev/ttyUSB0,那每次直接打开minicom即可。

    但当你可能需要使用多个串口时,问题就来了,每次需要先查看下设备名

    ls /dev/ttyUSB* 
    

    再配置下minicom,手工改成这个设备,才能使用。一点都不方便。

    这里给出两种解决方式

    方式一:自动修改配置文件

    首先建立配置文件

    sudo vim /etc/minicom/minirc.ttyUSBx
    

    内容如下

    # Machine-generated file - use "minicom -s" to change parameters.
    pu port             /dev/ttyUSB0
    pu rtscts           No
    

    编写脚本~/.myminicom.sh,自动检测设备,并根据选择的设备,修改配置文件,再打开minicom

    com() {
    ports=`ls /dev/ttyUSB*`
    select port in $ports;do
        if [ $port ]; then
            echo "You select the choice '$port'"
            port=${port##*/}
            sed -i "s/(pu port .*/dev/).*/1$port/" /etc/minicom/minirc.ttyUSBx
            exec minicom ttyUSBx $@
            break
        else
            echo "Invaild selection"
        fi
    done
    }
    

    在~/.bashrc中引入此函数

    echo 'source ~/.myminicom.sh' >> ~/.bashrc
    source ~/.bashrc
    

    即可直接使用命令 com 调用此函数,自动列出设备,按数字键选择即可。

    方式二:使用参数指定设备(推荐)

    研究下mincom的参数后,发现有更简单的实现方式,使用minicom的-D参数。

    同样编写脚本~/.myminicom.sh

    com() {
    	ports_USB=$(ls /dev/ttyUSB*)
    	ports_ACM=$(ls /dev/ttyACM*)  #arduino
    	ports="$ports_USB $ports_ACM"
    	select port in $ports;do
    		if [ "$port" ]; then
    		    echo "You select the choice '$port'"
    		    minicom -D "$port" $@"
    		    break
    		else
    		    echo "Invaild selection"
    	    fi
    	done
    }
    

    在~/.bashrc中引入此函数

    echo 'source ~/.myminicom.sh' >> ~/.bashrc
    source ~/.bashrc
    

    添加完毕后,可使用 com 命令调用。

    使用效果

    zhuangqiubin@zhuangqiubin-PC:~$ com
    1) /dev/ttyUSB0
    2) /dev/ttyUSB1
    #?
    

    此时输入数字,选择要的打开的串口设备,回车即可。

    自动保存log

    让 minicom 自动保存log,可以方便调试。

    查看参数,minicom可以使用 -C 参数指定保存log文件。于是完善脚本,自动把log以日期命名,保存到/tmp目录下。

    注意,tmp目录关机即清空,如果想持久保存log,需要修改到其他目录。

    修改后脚本如下

    com() {
    	ports_USB=$(ls /dev/ttyUSB*)
    	ports_ACM=$(ls /dev/ttyACM*)  #arduino
    	ports="$ports_USB $ports_ACM"
    	datename=$(date +%Y%m%d-%H%M%S)
    	select port in $ports;do
    		if [ "$port" ]; then
    		    echo "You select the choice '$port'"
    		    minicom -D "$port" -C /tmp/"$datename".log "$@"
    		    break
    		else
    		    echo "Invaild selection"
    	    fi
    	done
    }
    

    暂停输出

    Ctrl+A 是mimicom的特殊功能前缀按键,但还有另一个很实用的作用,就是暂停屏幕输出。

    在设备开始大量输出log时,基本看不清屏幕内容。此时可以按 Ctrl+A,暂停输出,方便查看所需log。

    打开minicom时间戳

    在minicom中,按下 Ctrl+A,再按 N,即可激活时间戳,在每行log前添加当前系统的时间戳。

    用于观察启动时间之类的,还是比较方便。

    发送接收文件

    设备端支持的话,按下 Ctrl+A,再按 S,即可向设备端发送文件。

    按 Ctrl+A,再按 R,可接收文件。

    自动换行

    当你的log中可能存在,单行长度超过屏幕宽度的log时(比如启动时打印的kernel cmdline),可以使用mimicom的自动换行功能。

    在启动minicom时加上 -w 选项,或者在minicom中,按 Ctrl+A 再按 W。

    更多功能

    可以使用 minicom -h 查看,也可在mincon中,按 Ctrl+A 再按 Z 查看。

    有什么其他使用功能或技巧,也欢迎留言告诉我。

    源码

    文中的代码非最新版本,请访问 https://github.com/zqb-all/EasierMinicom 获取带有更多功能的最新版本。

    如果觉得本文对你有帮助的的话,顺手点下推荐哦~~

    本文地址:https://www.cnblogs.com/zqb-all/p/9786836.html
    公众号:https://sourl.cn/Xcq4eW

  • 相关阅读:
    BZOJ1299 [LLH邀请赛]巧克力棒
    BZOJ1046 [HAOI2007]上升序列
    BZOJ1798 [Ahoi2009]Seq 维护序列seq
    BZOJ2045 双亲数
    BZOJ2301 [HAOI2011]Problem b
    BZOJ1021 [SHOI2008]Debt 循环的债务
    BZOJ2618 [Cqoi2006]凸多边形
    BZOJ1069 [SCOI2007]最大土地面积
    BZOJ1051 [HAOI2006]受欢迎的牛
    2017年09月23日普级组 环
  • 原文地址:https://www.cnblogs.com/zqb-all/p/9786836.html
Copyright © 2011-2022 走看看