Linux下的串口编程(FL2440实现串口接收发送)

本文介绍了在Linux环境下进行串口编程的步骤,包括打开、设置和关闭串口。通过示例代码详细解释了如何使用termios结构体配置串口参数,并提供了串口读写功能。最后,讲述了如何编译和运行程序,以及如何通过串口调试助手和SecureCRT验证串口通信的正确性。
摘要由CSDN通过智能技术生成

前面已经了解了串口的基础知识,下面将介绍在Linux下如何编程。以下的程序是,直接串口读,读完写的例程。

串口编程思路:
打开串口,设置波特率,数据位,停止位,奇偶校验位;
读写串口;(直接用read,write函数)
关闭串口。

直接见代码
串口的头文件,先定义一个结构体,含有其串口必备的要设置的数据位,奇偶校验位,停止位,是否连接,波特率,设备名等。
声明串口初始化函数,设置端口,关闭串口,打开串口的函数。

/********************************************************************************
 *      Copyright:  (C) 2018 NULL
 *                  All rights reserved.
 *
 *       Filename:  comport.h
 *    Description:  This head file is for the common TTY/Serial port operator library. 
 *
 *        Version:  1.0.0(7/30/2018)
 *         Author:  DingHuanhuan <736787419@qq.com>
 *      ChangeLog:  1, Release initial version on "2018年07月30日 11时16分20秒"
 *                 
 ********************************************************************************/


#ifndef _COMPORT_H
#define _COMPORT_H

#include <stdio.h>    /*standard input and output definition*/
#include <string.h>
#include <stdlib.h>   /*standard function library definition*/
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/select.h>
#include <unistd.h>   /*UNIX standard function definition*/
#include <termios.h>  /* PPSIX terminal control definition*/
#include <fcntl.h>    /*file control definition*/
#include <errno.h>    /*error number definition*/
#include <sys/wait.h>

#define DEVNAME_LEN   64
#define buf_size     4096
typedef struct _COM_PORT
{
  unsigned char databit,parity,stopbit,flowctrl,is_connect;
  char dev_name[DEVNAME_LEN];
  int fd;
  int frag_size;
  long baudrate;
} COM_PORT;

COM_PORT  *Comport_Init(const char *dev_name,unsigned long baudrate, const char *settings);
void Setting_Comport(COM_PORT *comport, const char *settings);
void Comport_close(COM_PORT *comport);
int Comport_open(COM_PORT *comport);




#endif

串口源文件详解

1.按照头文件声明的顺序来,先串口初始化函数,返回一个结构体指针;在初始化函数里含有设置端口函数,结构体指针作为设置端口函数的入口参数;

2.设置端口函数:根据传进来的参数来设置结构体的数据位,奇偶校验位和停止位;

3.关闭串口函数:关闭之前 的串口文件描述符并设置其连接状态为0;

4.打开串口函数:
先来介绍一个最重要的结构体:很多系统都支持POSIX终端(串口)接口.程序可以利用这个接口来改变终端的参数,比如,波特率,字符大小等等.要使用这个端口的话,你必须将

struct termios
      {
      tcflag_t  c_iflag;  //输入选项
      tcflag_t  c_oflag;  //输出选项
      tcflag_t  c_cflag;  //控制选项
      tcflag_t  c_lflag;  //行选项
      cc_t      c_cc[NCCS]; //控制字符
      };

这个结构中最重要的是c_cflag,通过对它赋值,用户可以设置数据传输率、字符大小、数据位、停止位、奇偶效验位和硬件流控等。另外c_iflag和c_cc也是比较常用的标志。
c_cflag支持很多常量名称,其中设置数据传输率为相应的数据传输率前要加上“B”。
c_cflag成员不能直接对其初始化,而要将其通过与、或操作使用其中的某些选项。
输入模式c_iflag成员控制端口接收端的字符输入处理;c_cc包含了超时参数和控制字符的定义。
其具体意义如下。
c_iflag:输入模式标志,控制终端输入方式,具体参数如表1所示。
表1 c_iflag参数表
这里写图片描述
c_oflag:输出模式标志,控制终端输出方式,具体参数如表2所示。
表2 c_oflag参数
这里写图片描述
c_cflag:控制模式标志,指定终端硬件控制信息,具体参数如表3所示。
表3 c_cflag参数
这里写图片描述
c_lflag:本地模式标志,控制终端编辑功能,具体参数如表4所示。
表4 c_lflag参数
这里写图片描述
c_cc[NCCS]:控制字符,用于

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值