Linux下编程的过程有些固定,很多都是比如打开、配置、关闭等等
串口通信流程:打开串口ttySn--->初始化串口--->读写(read、write)--->关闭串口
最合适的指导书:https://www.ibm.com/developerworks/cn/linux/l-serials/
串口设置
最基本的设置串口包括波特率设置,效验位和停止位设置。
串口的设置主要是设置 struct termios 结构体的各成员值。
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 */
};
串口控制函数
tcgetattr 取属性(termios结构)
tcsetattr 设置属性(termios结构)
cfgetispeed 得到输入速度
cfgetospeed 得到输出速度
cfsetispeed 设置输入速度
cfsetospeed 设置输出速度
tcdrain 等待所有输出都被传输
tcflow 挂起传输或接收
tcflush 刷清未决输入和/或输出
tcsendbreak 送BREAK字符
tcgetpgrp 得到前台进程组ID
tcsetpgrp 设置前台进程组ID
以下代码通过测试
串口.h文件 usart.h
/*********************************************************************************
* Copyright: (C) 2018 Yujie
* All rights reserved.
*
* Filename: usart.h
* Description: 串口配置
*
* Version: 1.0.0(08/27/2018)
* Author: yanhuan <yanhuanmini@foxmail.com>
* ChangeLog: 1, Release initial version on "08/23/2018 17:28:51 PM"
*
********************************************************************************/
#ifndef _USART_H
#define _USART_H
//串口相关的头文件
#include<stdio.h> /*标准输入输出定义*/
#include<stdlib.h> /*标准函数库定义*/
#include<unistd.h> /*Unix 标准函数定义*/
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h> /*文件控制定义*/
#include<termios.h> /*PPSIX 终端控制定义*/
#include<errno.h> /*错误号定义*/
#include<string.h>
//宏定义
#define FALSE -1
#define TRUE 0
int UART0_Open(int fd,char*port);
void UART0_Close(int fd) ;
int UART0_Set(int fd,int speed,int flow_ctrl,int databits,int stopbits,int parity);
int UART0_Init(int fd, int speed,int flow_ctrl,int databits,int stopbits,int parity) ;
int UART0_Recv(int fd, char *rcv_buf,int data_len);
int UART0_Send(int fd, char *send_buf,int data_len);
#endif
串口.c文件 usart.c
/*********************************************************************************
* Copyright: (C) 2018 Yujie
* All rights reserved.
*
* Filename: usart.c
* Description: 串口配置
*
* Version: 1.0.0(08/27/2018)
* Author: yanhuan <yanhuanmini@foxmail.com>
* ChangeLog: 1, Release initial version on "08/23/2018 17:28:51 PM"
*