1. 程式人生 > >如何優雅地使用minicom

如何優雅地使用minicom

else sta 復制 編輯 ports 實用 訪問 進行 生成

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

如果覺得本文對你有幫助的的話,順手點下推薦哦~~

如何優雅地使用minicom