背景

 要在linux下写一个c++串口收发的程序,目的是通过某个串口接收数据,再通过另一个串口发出去。

制作串口和下载串口助手

  1. 首先找四个串口和两条杜邦线
    在这里插入图片描述
    接线方式为 GND-GND,TX-RX,RX-TX,因为是接地通讯,所以不需要高电平(这是为了避免与目标设备上的供电冲突。)。如果只有一个串口,那么将TX,RX短接起来就行。串口知识学习区分:串口,COM口,UART,USART
    这里我简单概括一下串口知识:
    串口:1B的8个位在一条线上逐个传
    并口:1B的8个位在8条线同时传,但高速通讯各个连接线易互相干扰,所以高速下难以同步,成本也因为线多所以比串口高。
    串口包括:USB | I2C | SPI | RJ-45 | UART | USART 等
    串口的电平标准:TTL,232,485

单片机与电脑的连接

  既然单片机有串口(UART/USART),电脑也有串口(COM口),那么两者就可以通过串口进行通信。

 如果电脑有实体COM口,由于COM口使用的RS-232电平跟单片机的UART/USART使用的TTL电平不一样,这时就需要使用MAX232之类的电平转换芯片,将TTL电平转换成RS-232电平,连接示意如下:

旧电脑COM口(RJ-232) <—> MAX232 <—> (TTL)单片机UART/USART

  如果电脑没有COM口,就要通过CH340之类的USB转TTL串口芯片,来实现用USB模拟COM口,这样电脑的USB口就变成了一个TTL串口,可以跟单片机的UART/USART通信,连接示意如下:

新电脑USB口 <—> CH340 <—> (TTL)单片机UART/USART

在这里插入图片描述
2. 下载linux下的串口助手cutecom

sudo apt-get install cutecom
cutecom

setting
在这里插入图片描述
查看串口

ls /dev/tty*
chmod 777 /dev/ttyUSB5

对于不知道是哪一个串口的话可以通过将串口的RX,TX短接,然后随便发送数据,如果能收到自己的数据,那么就能确定是这个USB设备号了。

  1. 寻找代码

 太菜了,所以到Github找轮子改造一下。参考代码地址在这

修改代码

在这里插入图片描述
没修改代码是对同一个串口之间收发的。
修改代码后,我通过win下的xcom串口助手,对com30发送“com30”到linux下的/dev/ttyUSB5,再通过/dev/ttyUSB6,发送返回的数据到com20。
在这里插入图片描述
在这里插入图片描述
先简单的实现,以后再优化和理解。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐