minicom基础知识
Easul Lv6

相关简介

minicom 是一个命令行工具,主要用作 linux 下的串口调试。
由于是命令行工具,所以相关的调试可能操作难度较高,如果需要使用带 GUI 界面的工具,可以使用 cutecom 来进行测试。
以下主要以 minicom 的介绍为主, cutecom 也会简单说一些。

MINICOM使用流程

折叠代码块BASH 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 先查看当前串口的文件地址,一般为 /dev/ttyUSB*
ls -al /dev/ttyUSB*
# 如果文件地址为 /dev/ttyUSB0
# 则使用如下命令进行连接
# 因为设备一般在 root 用户下,所以需要使用 sudo
# 其他参数
# -H 如需进行 十六进制 数据的输出,则可加该参数
# -C 用于将数据保存到某文件
sudo minicom -D /dev/ttyUSB0

# 下边为主要的使用方式,注意命令行界面放的大一些,不然可能部分的字符位置就会被命令行窗口挡住
# 进入之后,先按 CTRL + A,进入到菜单模式,然后按 Z 查看帮助
#
# 接着可以按 o 进行配置设置
# 使用下箭头选择 Serial port setup 并回车,进行 串口的信息配置
# 按 a,然后设置串口的文件地址,操作后回车
# 按 e,然后进行波特率(Speed),校验位(Parity),数据位(Data),停止位(Stopbits)的选择,操作后回车
# 按 f 和 g,将硬件流控制和软件流控制都设置为 No,然后回车
#
# 接下来可以下箭头选择 Screen and keyboard,进行一些默认的键盘和屏幕显示配置
# 按 Q, 可以进行字符回显,保证输入的数据能够显示
# 选择好后,回车
#
# 下箭头选择 Save setup as dfl,将可以把数据保存到默认的配置文件。
# 这里是使用 sudo 来启动的,所以配置文件在 root 用户的根目录,为 .minirc.dfl
# 然后 esc 退到上一界面
#
# 再 CTRL + A,进入到菜单模式,然后按 Z 查看帮助,还有一些常用的操作
# 按 c 清屏
# 按 e 进行本地回显
# 按 n 打印时间戳
# 按 w 可保证数据多的情况下能够折行
#
# 一些其他注意事项
# 如果需要回车换行,则 CTRL+ M 进行回车, CTRL + J 进行换行
# CTRL + A 之后,下边显示 Offline,并不代表没有连接到设备,也还是可以进行数据的发送的

CUTECOM的使用

折叠代码块BASH 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 进入软件界面
# 因为设备一般在 root 用户下,所以需要使用 sudo
sudo cutecom
# 在 settings 中设置好
# 波特率(Baudrate)
# 数据位(Data bits)
# 校验位(Parity)
# 停止位(StopBits)
# 流控制 设置为 显示时间戳 可以勾上
# 然后选择号设备的文件路径,之后就可以点 Open 了

# 如果需要发送普通的字符串,那么需要选择 行结尾符号 为 回车(CR) or 换行(LF) or 回车换行(CR/LF) or 什么都不需要
# 上边这几种情况都是发送普通的字符串
# 如果发送十六进制的数据,那么需要将类型选为 HEX,然后在 input 框输入数据 回车 即可
# 输出结果默认是普通的字符串,如果需要显示十六进制的数据,可以选择 Hex output

串口调试时的一些注意

  • 如果是专用设备,那么设备的 地址码 可能需要使用特殊的软件去进行检测,否则的话,可以使用如下脚本进行检测
    折叠代码块BASH 复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #!/bin/bash

    # modpol可以从这里下载
    # https://www.modbusdriver.com/modpoll.html
    # 串口设备路径
    serial_port="/dev/ttyUSB0"
    # 波特率
    baud_rate=9600
    # 数据位
    data_bits=8
    # 停止位
    stop_bits=1
    # 校验位
    parity="none"
    # 超时时间
    timeout=10
    # 起始检测的寄存器地址
    register_address=0
    # 读取的寄存器数量
    register_count=1

    # 轮询遍历 从设备 地址
    for address in {1..247}
    do
    echo "尝试地址 $address..."
    # 使用 modpoll 查询数据, timeout 命令用于超时停止进程
    output=$(sudo timeout ${timeout}s ./modpoll -m rtu -a $address -r $register_address -c $register_count -b $baud_rate -d $data_bits -s $stop_bits -p $parity $serial_port)
    if [[ $output != *"Reply time-out"* ]]; then
    echo "设备响应在地址 $address:"
    echo "$output"
    else
    echo "地址 $address 没有响应。"
    fi
    done
  • 设备发送了命令没有任何响应,可能是命令有问题。
  • 如果发送了命令,设备会响,且只返回无用数据,那么可能是 地址码 使用错误。
 评论
来发评论吧~
Powered By Valine
v1.5.2