如何优雅地使用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
如何优雅地使用minicom的更多相关文章
- linux下检测可用串口并使用minicom打开
目前使用minicom作为串口软件.但使用过程中,有一点感觉不方便的地方,就是我需要使用多个串口,当使用的不是串口0时,就要手动修改minicom的配置. 于是考虑实现脚本,自动列出当前串口,选择后调 ...
- [Egret]优雅的写http
首先,自从使用链式调用的写法后,就一发不可收拾的喜爱上了这种优雅的方式.不管是写架构还是写模块,我都会不自觉的使用这种最优雅的方式.链式写法既减少了代码量,又非常优雅的. 在使用 egret 的htt ...
- 如何优雅地使用Sublime Text
Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...
- doT js 模板引擎【初探】要优雅不要污
js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...
- PostCSS一种更优雅、更简单的书写CSS方式
Sass团队创建了Compass大大提升CSSer的工作效率,你无需考虑各种浏览器前缀兼,只需要按官方文档的书写方式去写,会得到加上浏览器前缀的代码,如下: .row { @include displ ...
- 【swift学习笔记】五.使用枚举优雅的管理Segue
在做页面转跳的时候,我们要给Segue命名,如果Segue多了,管理他们就是一个恶梦.我们可以枚举更优雅的管理这些Segue. 1.我们先来建立一个protocol,他的功能就是让实现类实现一个Seg ...
- 使用Minicom基于串口调试HiKey
虽然通过adb shell调试方便,但是有些时候不得不借助于串口进行调试,比如测试suspend to ram之类的功能时,adb服务被关闭. 同时在minicom中也可以进入shell,进行操作. ...
- 安装minicom
安装配置过程: 1.sudo apt-get install minicom 2.执行:sudo minicom -s 配置minicom 切记加sudo 3.然后选择Serial port setu ...
随机推荐
- 虚拟现实-VR-UE4-LEAP-Motion手势识别
点击打开链接今天到手一个新东西,LEAP手势识别仪. 关于LEAP Leap是一家面向PC以及Mac的体感控制器制造公司. 具体信息百度百科http://baike.baidu.com/link?ur ...
- 做小Leader的心得体会
只是自己的工作心得体会,代码属于也不够专业,大家不喜勿喷. 8月份来到这家新公司,没过一个月给派了个活:带着两个小弟给某银行开发一个小工具.功能很简单,就是用Java做一个windows上的C端工具, ...
- parity的使用
parity --chain dev --port 8045 ps aux | grep "parity" ps -elf | grep "pari"
- 走进Android系统
一.Android背景 [Android定义] Android是Google公司在2007年11月5日公布的基于Linux平台的开源手机操作系统. [发展历程] 2005年,Google收购企业And ...
- vs2017切换设计、拆分假死的解决
今天安装了vs2017版把vs2015卸载了,原因就是vs2015运行webform后ajaxpro总是会出现time out现象.太难受了,所以决定体验一下新版本. 安装了vs2017后ajaxpr ...
- 【bzoj3653】谈笑风生 DFS序+树状数组
题目描述 给出一棵以1为根的有根树,q次询问,每次询问给出a和k,求点对 (b,c) 的数目,满足:a.b.c互不相同,b与a距离不超过k,且a和b都是c的祖先. 输入 输入文件的第一行含有两个正整数 ...
- 【bzoj1180】[CROATIAN2009]OTOCI LCT
题目描述 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出“no”.否则输出“yes”,并且在结点 ...
- (补漏)Springboot2.0 集成shiro权限管理
原文Springboot2.0 集成shiro权限管理 一.关于停止使用外键. 原本集成shiro建立用户.角色.权限表的时候使用了外键,系统自动创建其中两个关联表,用@JoinTable.看起来省事 ...
- Java操作Redis存储对象类型数据
背景描述 关于JAVA去操作Redis时,如何存储一个对象的数据,大家是非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用.存储一个对象是是 ...
- Android tips tool 发现的性能问题(转载翻译)
先翻译刚好在研究到的一段,其余的无限期待续. 1.ObsoleteLayoutParam不起作用的标签 Invalid layout param in a LinearLayout: layout_c ...