Linux通过控制台shell命令实现串口数据的收发

本文详细介绍了如何通过Linux控制台进行串口配置,包括设置波特率、数据位等参数。并通过实例演示了如何使用echo命令发送数据到串口设备,以及如何使用cat命令循环接收串口数据,并将其保存到文件中供后续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 控制台串口配置

stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10

2. 控制台发送数据

echo "hello world" > /dev/ttyUSB0

3. 控制台接收数据

cat /dev/ttyUSB0

4. 用脚本循环接收数据

stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10
while [ 1 -eq 1 ]
do
    cat /dev/ttyUSB0 >> "tmpFile"
    do something
done

 

### 树莓派5B与电脑之间串口通信设置 #### 配置UART串口 为了使树莓派5B能够通过UART与其他设备(如计算机)进行数据交换,在`/boot/config.txt`文件中添加如下配置项以启用硬件串口[^3]: ```bash dtoverlay=pi3-miniuart-bt ``` 此操作会将蓝牙模块使用的mini UART切换到PL011 UART上,从而释放前者供应用程序使用。 #### 关闭串口登录服务 默认情况下,Linux系统可能会占用UART作为控制台终端来显示启动消息或允许远程shell访问。这一步骤旨在防止这种情况发生并确保串口可用于自定义应用。执行命令进入Raspberry Pi Configuration工具,并禁用串行端口登录 shell 功能: ```bash sudo raspi-config ``` 选择 `Interfacing Options` -> `Serial Port` 并按提示完成设置。 #### 安装必要的软件包 安装用于调试和测试串行连接的工具,例如`minicom` 或者 `screen`: ```bash sudo apt-get update && sudo apt-get install minicom screen -y ``` #### 连接线路 物理连接方面,需注意不同平台间电平转换问题。通常PC机上的RS232接口电压范围较大(-12V~+12V),而树莓派采用的是TTL逻辑电平(0V~3.3V)。因此建议使用带有电平转换功能的USB转TTL适配器来进行两者间的可靠通讯。 #### 测试通信链路 假设已经正确设置了上述各项参数,则可以通过以下方式验证基本收发能力: - 使用`echo`指令向指定TTY设备发送字符串: ```bash echo "Hello from Raspberry Pi!" > /dev/ttyAMA0 ``` - 利用`cat`读取来自同一TTY的数据流 ```bash cat </dev/ttyAMA0 ``` 更进一步地,可以借助之前提到过的图形界面程序(minicom/screen)建立更加友好的交互环境。 #### 编写简单的C语言程序实现持续性的双向交流 考虑到实际应用场景可能涉及到较为复杂的协议解析以及高效能需求,下面给出一段基于wiringPi库编写的小例子展示如何构建稳定可靠的客户端服务器架构下的异步I/O处理机制[^2]。 ```c #include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <termios.h> #define BAUDRATE B9600 #define MODEMDEVICE "/dev/ttyAMA0" #define _POSIX_SOURCE 1 /* POSIX compliant source */ int set_interface_attribs(int fd, int speed); void main(void){ struct termios tty; memset(&tty, 0, sizeof(tty)); // 打开串口 int fd = open(MODEMDEVICE, O_RDWR|O_NOCTTY); if (fd < 0){ printf("Error %d opening %s: %s\n", errno, MODEMDEVICE, strerror(errno)); return ; } // 设置波特率等属性 set_interface_attribs(fd,BAUDRATE); char write_buffer[]="Hello World!"; write(fd,write_buffer,strlen(write_buffer)); close(fd); } // 设置串口参数函数体省略... ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值