Linux 串口应用编程

关于串口编程如下两篇文章比较详细;

http://blog.csdn.net/mtv0312/article/details/6599162

http://blog.chinaunix.net/uid-21411227-id-1826767.html

 

串口操作就是对termios 的设置,头文件#include /*PPSIX 终端控制定义*/

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 */

};

 

项目中串口设置情况:

1. 打开串口

m_fd = open(m_devname, O_RDWR);  //以读写方式打开串口

2.得到串口参数:

struct termios term;

tcgetattr(m_fd, &term)

3.设置串口参数:

    term.c_lflag &= ~(ICANON | ECHO | ISIG);  //选择原始输入,根本不会被处理。输入字符只是被原封不动的接收。

    term.c_iflag &= ~(ISTRIP | IUCLC | IGNCR | ICRNL | INLCR | IXON | PARMRK);  控制从端口上收到的字符的输入过程
    term.c_oflag &= ~OPOST;         //选择原始输出,而不是加工过的输出
    cfsetispeed(&term, B115200);  //设置波特率

4. 将设置好的参数写入串口

    tcsetattr(m_fd, TCSAFLUSH, &term);

TCSANOW:  不等数据传输完毕就立即改变属性

TCSADRAIN:等待所有数据传输结束才改变属性

TCSAFLUSH:清空输入输出缓冲区才改变属性

5. tcflush函数刷清(扔掉)输入缓存。丢弃开始的一段缓冲区

见:http://blog.csdn.net/a4150902/article/details/7584676

你可能感兴趣的:(linux)