关键词:
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 [email protected]
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" [email protected]"
break
else
echo "Invaild selection"
fi
done
在~/.bashrc中引入此函数
echo 'source ~/.myminicom.sh' >> ~/.bashrc
source ~/.bashrc
添加完毕后,可使用 com 命令调用。
使用效果
[email protected]:~$ 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 "[email protected]"
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
如果觉得本文对你有帮助的的话,顺手点下推荐哦~~
如何在国内优雅地使用rancher(代码片段)
本文来源RancherLabs Rancher进入中国已经4年,并在今年2月份完成了中国本土化和国产化。作为一款开源的企业级Kubernetes管理平台,我们一直十分关注Rancher社区用户的各种诉求。在我们的技术社区中,我们常常收到这样的... 查看详情
如何优雅地使用rm防止误删除?(代码片段)
IT界的有一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了......于是...据新华社北京8月20日电,北京一软件工程师徐某离职后因公司未能如期结清工资,便利用其在所设计的网站中安... 查看详情
如何在vue中优雅地使用v-if判断(代码片段)
情况一:做vue项目,有的时候会遇到有几个元素都使用同一个v-if条件。下面这种方法虽然可以实现,但是整体代码看起来有点笨拙,我们可以用<template>标签进行优化一下。<template><divclass="card"... 查看详情
vue3中如何优雅地在setup使用globalproperties(代码片段)
一、前言vue3已经发布到v3.2.x版了,在项目中也使用上了vue3,总体感觉还是不错的。vue3中使用Proxy来实现响应式数据,解决了vue2中的部分性能损耗、无法监听动态添加的属性的值变化、无法监听数组元素对象的属性的值的变化问... 查看详情
如何优雅地关闭资源(代码片段)
很多时候我们都会用到io资源,比如文件、网络、各种连接等。比如有时候我们需要从一个文本文件中读取数据,一般的步骤是:用FileReader打开文件包装成BufferReader循环地从BufferReader中读取内容,直接读出来的内容为空关闭Buffer... 查看详情
javapoet-优雅地生成代码(代码片段)
JavaPoet-优雅地生成代码JavaPoet-优雅地生成代码一项目简介二项目总览1大体结构图2关键类说明三相关使用1API使用2一个简单示例四源码浅析五使用场景1根据编译时注解生成代码11前言12一个简单示例2根据协议文件生成对应代码3更... 查看详情
如何优雅地实现环形缓冲区?(代码片段)
循环缓冲区是嵌入式软件工程师在日常开发过程中的关键组件。多年来,互联网上出现了许多不同的循环缓冲区实现和示例。我非常喜欢这个模块,可以GitHub上找到这个开源的CBUF.h模块。地址:https://github.com/barraq/BRBr... 查看详情
如何在国内优雅地使用rancher(代码片段)
本文来源RancherLabs Rancher进入中国已经4年,并在今年2月份完成了中国本土化和国产化。作为一款开源的企业级Kubernetes管理平台,我们一直十分关注Rancher社区用户的各种诉求。在我们的技术社区中,我们常常收到这样的... 查看详情
如何优雅地记录操作日志?(代码片段)
...统日志不一样,操作日志必须要做到简单易懂。所以如何让操作日志不跟业务逻辑耦合,如何让操作日志的内容易于理解,如何让操作日志的接入更加简单?上面这些都是本文要回答的问题。我们主要围绕着如何... 查看详情
多线程如何优雅地初始化全局变量?(代码片段)
需求场景如果使用多线程,那么几乎都会用到全局变量,这时初始化全局变量的技巧就很重要了。通常初始化全局变量时就是像下面这样的,先判断是否已经初始化过了,然后才去初始化。在单线程场景下,lazy初始化(就是用到... 查看详情
如何优雅地运用位运算实现产品需求?(代码片段)
如何优雅地运用位运算实现产品需求?在开始正文之前,我们先来说一下Linux的系统权限设计。在Linux系统中,为了保证文件的安全,对文件所有者、同组用户、其他用户的访问权限进行了分别管理。其中,文件所有者,即建立... 查看详情
如何优雅地使用sublimetext
如何优雅地使用SublimeTextBy 晚晴幽草轩轩主发表于2015-12-15SublimeText:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比于... 查看详情
如何优雅地创建可选值列表?(代码片段)
考虑以下功能annotate::AST->[MetaInfo]annotate(ArgDeclnamenameReqmaybeVal)=concat[[m[Name]name],ifnameReqthen[m[Operator]"!"]]else[],casemaybeValofJustv->[annotatev]Nothing->[]]...这看起来很优雅。有没有比使用concat和空列表更好的方法来创建可能存在或不存... 查看详情
如何优雅地使用sublimetext
...感无比的编辑器是Coding和Writing最佳的选择,没有之一。如何优雅地使用 查看详情
优雅地`async/await`(代码片段)
async/await虽然取代了回调,使用类似同步的代码组织方式让代码更加简洁美观,但错误处理时需要加try/catch。比如下面这样,一个简单的Node.js中使用async/await的场景:constfetch=require("node-fetch");asyncfunctiongetData()consturl="https://api.githu... 查看详情
优雅地把html解析为java/kotlin实体对象(代码片段)
使用Java如何优雅地爬取网页内容,并解析为实体对象呢?由于我对Android平台比较熟悉,在项目中我们使用的Retrofit、Okhttp、Kotlin协程、LoganSquare解析把Server返回的Json解析为实体对象。那爬网页的时候是不是也可以使... 查看详情
优雅地使用macos开发(代码片段)
1MacOS终端利器-iTerm2MacOS自带的Terminal命令都保存在.bash_profile文件中iTerm2命令都保存在.zshrc中所以我们将很多命令保存且编辑2Ohmyzsh安装方法有两种,可以使用curl或wget,看自己环境或喜好:#curl安装方式sh-c"$(curl-fsSLh... 查看详情
如何在uniapp中优雅地使用webview(代码片段)
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助从webview页面传值到uniapp中官方文档已经很详细了,这里给大家上我的实战代码,首先在webview页面中引入相关依赖:<!--uniapp各平台依赖--><scriptt... 查看详情