linux串口通信

本文介绍了如何在Linux系统中使用C/C++进行串口通信,包括理解串口引脚、导入相关库、打开串口、设置波特率以及发送数据。通过示例代码展示了如何操作串口,为后续的串口数据传输奠定基础。
摘要由CSDN通过智能技术生成

前言

因为最后我们要将得到的数据传给电控,传输的方式就是串口通信,然而以前我使用的都是python写的,这次开始使用c/c++去写,开始是让学弟写,但是加入工程的时候发现有很多地方都封装不了,于是我打算自己来实现一波,然后封装一下,那现在开始吧。
借鉴:https://blog.csdn.net/AAA375/article/details/100096490

串口引脚

首先我们来看一下串口的引脚,因为我们后期写的代码就是对这些引脚进行操作的,我在第一次看代码的时候也是很蒙的,因为我并不知道那些我不知道的是引脚。。。。

在这里插入图片描述

具体怎么用后期直接结合代码查看!

代码书写

导入库

这个吧,直接复制就好

#include     <stdio.h>      /*标准输入输出定义*/
#include     <stdlib.h>     /*标准函数库定义*/
#include     <unistd.h>     /*Unix 标准函数定义*/
#include     <sys/types.h>  /*数据类型,比如一些XXX_t的那种*/
#include     <sys/stat.h>   /*定义了一些返回值的结构,没看明白*/
#include     <fcntl.h>      /*文件控制定义*/
#include     <termios.h>    /*PPSIX 终端控制定义*/
#include     <errno.h>      /*错误号定义*/

打开串口

首先得明白个事,端口不固定,对于不同的设备是不同,对于linux下的话是位于 /dev 下的,串口一 为 /dev/ttyS0,串口二 为 /dev/ttyS1,我们这里用的串口一:

#include     <stdio.h>      /*标准输入输出定义*/
#include     <stdlib.h>     /*标准函数库定义*/
#include     <unistd.h>     /*Unix 标准函数定义*/
#include     <sys/types.h>  /*数据类型,比如一些XXX_t的那种*/
#include     <sys/stat.h>   /*定义了一些返回值的结构,没看明白*/
#include     <fcntl.h>      /*文件控制定义*/
#include     <termios.h>    /*PPSIX 终端控制定义*/
#include     <errno.h>      /*错误号定义*/
#include     <iostream>  

using namespace std;

int main(){
   
    int fd = -1;
    /*以读写方式打开串口*/
    fd = open( "/dev/ttyS0", O_RDWR);
    cout<<fd<<endl;
    if (-1 == fd){
   
    /* 不能打开串口一*/
        perror(" 提示错误!");
    }
    else{
   
         cout<<"打开成功!"<<endl;
    }
}

在这里插入图片描述

可以看到我们已经成功打开串口了

设置串口(修改比特率)

在打开串口后我们要进行一些设置,如比特率,效验位等,这些设置是通过一个结构体来设置。

struct termio

{
      unsigned short  c_iflag; /* 输入模式标志 */ 
    unsigned short  c_oflag;     /* 输出模式标志 */ 
    unsigned short  c_cflag;     /* 控制模式标志*/  
    unsigned short  c_lflag;     /* local mode flags */  
    unsigned char    c_line;           /* line discipline */
    unsigned char    c_cc[NCC];    /* control characters */
};

如果要去看源码的话,是很难理解的,我也是没看懂,但是并不影响我们使用,下面是一个设置波特率的例子:

//比特率配置
int speed_arr[] = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值