# serial-tester **Repository Path**: dooson/serial-tester ## Basic Information - **Project Name**: serial-tester - **Description**: 一款Linux下的串口设备测试程序,支持RS232/RS485/RS422: 1. normal模式,简单的类似于minicom功能,在命令行下即发即收测试,用于简单测试。 2. send only模式,测试发送功能。 3. read only模式,测试串口接收功能。 4. auto模式,自动模式,自动发送接收到的数据 5. loop模式,回环测试,将串口收发短接自动发送接收数据并校验正确性 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2023-06-09 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # serial-tester #### 介绍 一款Linux下的串口设备测试程序: 1. 接收测试 2. 发送测试 3. 回环测试 4. 对话测试 5. 压力测试(尚未完成) #### 怎么编译 ```shell $ git clone --recurse-submodules https://gitee.com/Linux-APP-chuckie/serial-tester.git $ cd serial-tester $ make ``` #### 使用说明 ```shell $ LANG=zh_CN.UTF8 ./serial-tester serial-tester V1.0.3,Linux下的串口测试程序,构建于 May 14 2023 21:52:19。 在运行本程序前,你可能需要将你的用户名通过命令 'sudo usermod -a -G dialout $USER' 添加到'dialout'用户组下, 或者通过'sudo'提权运行本程序(sudo ./serial-tester), 否则程序无法获取访问串口设备的权限。 USAGE: ./serial-tester [option] [arg], optional mode: normal: Normal mode recv : Receive only mode send : Send only mode loop : Loopback mode stress: Stress test mode Refer to following helps. ./serial-tester normal [option] 正常模式,类似于minicom基本功能,在控制台下实时收发数据。 --device,-F 指定串口设备,例如'/dev/ttyUSB0'。 --options,-o 设置串口设备参数,参数格式: [baudrate[,data bits[,parity[,stop bits[,hardware flow]]]]] baudrate : 默认值为115200。 data bits: 可选值为5~8,默认为8。 parity : 可选值'o','O','e','E','N','n', 默认为'n'。 stop bits: 可选值为1~2, 默认为1。 hw flow : 硬件流控开关。可选值为'on'/'off',默认为'off'。 --rs485,-R 启用RS485模式,并设置RS485参数。参数格式: [delay before send[,delay after send[,level on sending]]] delay before send: 发送前提前使能RTS的时间,毫秒单位 delay after send : 发送后延迟关闭RTS的时间,毫秒单位 level on sending : 控制发送的RTS电平,可选值0-1。 e.g. Normal模式,并设置串口参数为115200,8,n,1 关闭流控: ./serial-tester normal -F /dev/ttyS0 -o 115200,8,n,1,off ./serial-tester recv [option] 仅接收模式,仅接收数据并打印输出或者保存到文件中。 --device,-F 指定串口设备,例如'/dev/ttyUSB0'。 --options,-o 设置串口设备参数,参数格式: [baudrate[,data bits[,parity[,stop bits[,hardware flow]]]]] baudrate : 默认值为115200。 data bits: 可选值为5~8,默认为8。 parity : 可选值'o','O','e','E','N','n', 默认为'n'。 stop bits: 可选值为1~2, 默认为1。 hw flow : 硬件流控开关。可选值为'on'/'off',默认为'off'。 --rs485,-R 启用RS485模式,并设置RS485参数。参数格式: [delay before send[,delay after send[,level on sending]]] delay before send: 发送前提前使能RTS的时间,毫秒单位 delay after send : 发送后延迟关闭RTS的时间,毫秒单位 level on sending : 控制发送的RTS电平,可选值0-1。 --dump,-D 输打印输出模式。可选值:0/none/n,1/ascii/a,2/hex/h。 0/none/n : 不打印输出,默认值。 1/ascii/a:打印字符串。 2/hex/h :打印十六进制。 --file,-f 指定文件保存接收数据。 --max-len,-l 指定接收数据的最大长度(字节),<=0 表示一直接收。 e.g. 1. 仅接收数据并打印输出到控制台,指定最大接收长度为4K字节: ./serial-tester recv -F /dev/ttyS0 -o 115200,8,n,1,off -l 4096 -D ascii 2. 仅接收数据并保存到文件中: ./serial-tester recv -F /dev/ttyS0 -o 115200,8,n,1,off -f recv.txt ./serial-tester send [option] 仅发送模式,发送文件。若未指定发送文件,将会随机生成数据后发送。 --device,-F 指定串口设备,例如'/dev/ttyUSB0'。 --options,-o 设置串口设备参数,参数格式: [baudrate[,data bits[,parity[,stop bits[,hardware flow]]]]] baudrate : 默认值为115200。 data bits: 可选值为5~8,默认为8。 parity : 可选值'o','O','e','E','N','n', 默认为'n'。 stop bits: 可选值为1~2, 默认为1。 hw flow : 硬件流控开关。可选值为'on'/'off',默认为'off'。 --rs485,-R 启用RS485模式,并设置RS485参数。参数格式: [delay before send[,delay after send[,level on sending]]] delay before send: 发送前提前使能RTS的时间,毫秒单位 delay after send : 发送后延迟关闭RTS的时间,毫秒单位 level on sending : 控制发送的RTS电平,可选值0-1。 --dump,-D 输打印输出模式。可选值:0/none/n,1/ascii/a,2/hex/h。 0/none/n : 不打印输出,默认值。 1/ascii/a:打印字符串。 2/hex/h :打印十六进制。 --file,-f 指定待发送文件。 --max-len,-l 指定发送数据的最大长度(字节),<=0 表示一直发送。该值在'-f'选项有效时会被忽略。 --block,-B 指定单次发送数据块的大小,可选值为1~64*1024,默认值为1024。 --interval,-i 指定发送间隔,单位毫秒,可选值:0~60*1000;0表示无间隔发送,默认0。 e.g. 1. 随机生成数据发送,并在控制台输出已发送数据: ./serial-tester send -F /dev/ttyS0 -o 115200,8,n,1,off -l 4096 -D hex 2. 发送文件中的数据: ./serial-tester send -F /dev/ttyS0 -o 115200,8,n,1,off -f sent.dat ./serial-tester loop [option] 回环模式,接收数据并回送出去同时将接收数据打印输出或者保存到文件中。 --device,-F 指定串口设备,例如'/dev/ttyUSB0'。 --options,-o 设置串口设备参数,参数格式: [baudrate[,data bits[,parity[,stop bits[,hardware flow]]]]] baudrate : 默认值为115200。 data bits: 可选值为5~8,默认为8。 parity : 可选值'o','O','e','E','N','n', 默认为'n'。 stop bits: 可选值为1~2, 默认为1。 hw flow : 硬件流控开关。可选值为'on'/'off',默认为'off'。 --rs485,-R 启用RS485模式,并设置RS485参数。参数格式: [delay before send[,delay after send[,level on sending]]] delay before send: 发送前提前使能RTS的时间,毫秒单位 delay after send : 发送后延迟关闭RTS的时间,毫秒单位 level on sending : 控制发送的RTS电平,可选值0-1。 --dump,-D 输打印输出模式。可选值:0/none/n,1/ascii/a,2/hex/h。 0/none/n : 不打印输出,默认值。 1/ascii/a:打印字符串。 2/hex/h :打印十六进制。 --file,-f 指定文件保存接收数据。 --max-len,-l 指定接收数据的最大长度(字节),<=0 表示一直接收。 --block,-B 指定单次发送数据块的大小,可选值为1~64*1024,默认值为1024。 --interval,-i 指定发送间隔,单位毫秒,可选值:0~60*1000;0表示无间隔发送,默认0。 e.g. 1. 接收数据并回传数据,同时打印输出到控制台,指定最大接收长度为4K字节: ./serial-tester loop -F /dev/ttyS0 -o 115200,8,n,1,off -l 4096 -D ascii 2. 接收数据并回传数据,同时保存到文件中: ./serial-tester loop -F /dev/ttyS0 -o 115200,8,n,1,off -f recv.txt ``` 1. normal/普通模式 此模式下类似于minicom/picocom,实时收发数据. 2. recv/接收模式 此模式下仅接收数据,如果开启了`-D`选项,会输出接收到的数据到屏幕,此模式还支持如下选项: - `--max-len,-l` 最大读取字节数,默认为0(一直读取)。若设置该参数,则读取指定字节数的数据后自动退出。 - `--file,-f` 保存接收到的数据到指定文件 3. send/发送模式 此模式下仅发送数据,如果开启了`-D`选项,会输出已发送的数据到屏幕,此模式还支持如下选项: - `-B` 一次发送数据的大小(1-64*1024字节),默认1024字节。 - `-i` 两次发送之间的间隔,以百毫秒为单位,默认为0,也就是无间隔。 - `--max-len,-l` 最大发送字节数,默认为0(一直发送)。若设置该参数,则发送指定字节数的数据后自动退出。 - `--file,-f` 从指定文件读取数据并发送,发送完成自动退出。 4. loop/回环模式 从模式下自动将接收到的数据回传给发送者,如果开启了`-D`选项,会输出接收/发送的数据到屏幕,此模式还支持如下选项: - `--max-len,-l` 最大读取字节数,默认为0(一直读取)。若设置该参数,则读取指定字节数的数据后自动退出。 - `--file,-f` 保存接收到的数据到指定文件 - `-B` 一次发送数据的大小(1-64*1024字节),默认1024字节。 - `-i` 两次发送之间的间隔,以百毫秒为单位,默认为0,也就是无间隔。