打印
[学习资料]

C语言串口通信的示例代码

[复制链接]
536|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
v26g7l|  楼主 | 2024-2-29 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口通信的基本原理相对通用,而具体的实现方式可能因使用的硬件、编程语言或通信协议而异。基本的串口通信的示例代码,使用的是C语言:

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>

int main() {
    // 打开串口设备
    int serial_port = open("/dev/ttyUSB0", O_RDWR);
    if (serial_port == -1) {
        perror("无法打开串口");
        return -1;
    }

    // 配置串口
    struct termios tty;
    memset(&tty, 0, sizeof(tty));
    if (tcgetattr(serial_port, &tty) != 0) {
        perror("获取串口属性失败");
        return -1;
    }

    // 设置波特率
    cfsetospeed(&tty, B9600);
    cfsetispeed(&tty, B9600);

    // 设置数据位、停止位和校验位等
    tty.c_cflag |= (CLOCAL | CREAD);
    tty.c_cflag &= ~PARENB;
    tty.c_cflag &= ~CSTOPB;
    tty.c_cflag &= ~CSIZE;
    tty.c_cflag |= CS8;

    // 应用设置
    if (tcsetattr(serial_port, TCSANOW, &tty) != 0) {
        perror("设置串口属性失败");
        return -1;
    }

    // 串口通信
    char buffer[100];
    memset(buffer, 0, sizeof(buffer));

    // 读取数据
    int n = read(serial_port, buffer, sizeof(buffer));
    if (n < 0) {
        perror("读取数据失败");
        return -1;
    }

    // 打印读取的数据
    printf("接收到的数据:%s\n", buffer);

    // 关闭串口
    close(serial_port);

    return 0;
}


使用特权

评论回复
沙发
FranklinUNK| | 2024-3-11 10:43 | 只看该作者
这是Linux操作系统的吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

137

帖子

0

粉丝