Linux下uart通讯——cutetom的使用

前几天给林某人安排了一个基于 uart 实现串口通讯的任务,之后也是不断修改不断优化,最后使用 cutecom 软件进行发送和接收,因此在这里记录一下 cutecom 的使用。

(看别人的代码比自己写代码要难多了TvT)

具体的程序代码可以参考这个人的这篇博客。这里主要讲解 cutecom 的使用。


1. 连接 USB 转 TTL

启动 Ubuntu,把两个 USB to TTL 模块连接好插到自己电脑上,如下图所示:

Linux下uart通讯——cutetom的使用_第1张图片
之后可以看到,/dev 目录下多了两个文件: ttyUSB0 和 ttyUSB1。这两个文件就对应着两个先后插入的串口。

注:这么做的目的是为了自发自收,即用 cutecom 和 程序之间相互通信,用于检测我们写的程序是否正常。除此之外,这么

之后输入以下命令给这两个串口权限,才能在 cutecom 中打开:

sudo chmod 777 /dev/ttyUSB*

(注意:如果拔插串口的话,需要重新赋予权限)

2. 打开 cutecom

如果未安装,须执行:

sudo apt install cutecom

执行以下命令打开cutecom:

cutecom

打开 cutecom 后,选择对应的串口,点击open,即可打开串口。打开后的串口可以用于发送数据,同时会实时接收数据。

3. 使用 cutecom

3.1 接收数据

界面的下方是接收数据的显示区,会实时显示接收到的数据。点击左下角的 clear 按钮可以清空屏幕。

通常默认会将接收到的字节按照 ASCII 码表转化为对应的字符显示出来。如果想要将接收到的原始数据显示出来,可以勾选 clear 按钮右侧的 Hex output 按钮,即可将接收到的原始数据以 16 进制显示出来。

3.2 发送数据

在界面的中间部分有一个 Input 输入框,在里面输入完数据按回车即可发送。

在这个输入框右侧有一栏选项,表示数据是以什么格式发送的,有:LF、CR、CR/LF、None、Hex。因为上次没有注意这里,导致没问题的代码一次又一次地收不到数据,差点就要崩溃了(TwT)。所以在这里也记录一下吧

3.2.1 LF

将输入的每个字符按照 ASCII 表编码后发出去,并在最后插入 LF(ASCII 码值为 0x0A)。有下面一个例子:

发送:12
按照 Hex output 接收:31 32 0a

输出说明:31 在 ASCII 码上对应 1、 32对应2 、0a 对应 LF。

3.2.2 CR

将输入的每个字符按照 ASCII 表编码后发出去,并在最后插入 CR(ASCII 码值为 0x0D)。有下面一个例子

发送:12
按照 Hex output 接收:31 32 0d

3.2.3 CR/LF

将输入的每个字符按照 ASCII 表编码后发送出去,并在最后插入 CR 和 LF.

有下面一个例子:

发送:12
按照 Hex Output 接收:31 32 0d 0a

3.2.4 None

将输入的每个字符按照 ASCII 表编码后发送出去,不添加任何结束符。

有下面一个例子

发送:12
按照 Hex Output 接收:31 32

3.2.5 Hex

将输入的数据两两一组,看做两位16进制数,组成一个字节发送出去。如果长度为奇数则在最高位补0

有下面一个例子

发送:123
接收:01 23

发送:aaff
接收:aa ff

最后在测试的时候,就是因为没有留意到这个选项,导致原本应以 Hex 发送的数据变成了以 CR 形式发送出去,然后程序一直接收不到数据,还以为是林某人的代码出问题了。(真是气得我给了桌子一拳。希望桌子没事)

此事再次证明:想要让程序员崩溃,往往只需要一个很小的 bug。(TwT)

你可能感兴趣的:(笔记,linux,c++,ubuntu,驱动开发)