linux串口编程参数配置详解.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux串口编程参数配置详解

linux串口编程参数配置详解1./shanzhizi/article/category/781010linux串口编程需要的头文件#include stdio.h?//标准输入输出定义#include stdlib.h?//标准函数库定义#include unistd.h?//Unix标准函数定义#include sys/types.h#include sys/stat.h#include fcntl.h //文件控制定义#include termios.h?//POSIX中断控制定义#include errno.h?//错误号定义2.打开串口串口位于/dev中,可作为标准文件的形式打开,其中:串口1?/dev/ttyS0串口2?/dev/ttyS1代码如下:int?fd;fd?=?open(“/dev/ttyS0”,?O_RDWR);if(fd?==?-1){?Perror(“串口1打开失败!”);}//else?//fcntl(fd,?F_SETFL,?FNDELAY);除了使用O_RDWR标志之外,通常还会使用O_NOCTTY和O_NDELAY这两个标志。O_NOCTTY:告诉Unix这个程序不想成为“控制终端”控制的程序,不说明这个标志的话,任何输入都会影响你的程序。O_NDELAY:告诉Unix这个程序不关心DCD信号线状态,即其他端口是否运行,不说明这个标志的话,该程序就会在DCD信号线为低电平时停止。3.设置波特率最基本的串口设置包括波特率、校验位和停止位设置,且串口设置主要使用termios.h头文件中定义的termios结构,如下:struct termios{?tcflag_t??c_iflag;???//输入模式标志?tcflag_t??c_oflag;??//输出模式标志?tcflag_t??c_cflag;??//控制模式标志?tcflag_t??c_lflag;?? //本地模式标志?cc_t???c_line;????????????? //line discipline?cc_t???c_cc[NCC];????//control characters}代码如下:int?speed_arr[]?=?{?B38400,?B19200,?B9600,?B4800,?B2400,?B1200,?B300,?B38400,?B19200,?B9600,?B4800,?B2400,?B1200,?B300,?};int?name_arr[]?=?{38400,?19200,?9600,?4800,?2400,?1200,?300,?38400,?19200,?9600,?4800,?2400,?1200,?300,?};void?SetSpeed(int?fd,?int?speed){?int?i;?struct?termios?Opt;//定义termios结构?if(tcgetattr(fd,?Opt)?!=?0)?{?perror(“tcgetattr?fd”);?return;?}?for(i?=?0;?i??sizeof(speed_arr)?/?sizeof(int);?i++)?{?if(speed?==?name_arr[i])?{?tcflush(fd,?TCIOFLUSH);?cfsetispeed(Opt,?speed_arr[i]);?cfsetospeed(Opt,?speed_arr[i]);?if(tcsetattr(fd,?TCSANOW,?Opt)?!=?0)?{?perror(“tcsetattr?fd”);?return;?}?tcflush(fd,?TCIOFLUSH);?}?}}注意tcsetattr函数中使用的标志:TCSANOW:立即执行而不等待数据发送或者接受完成。TCSADRAIN:等待所有数据传递完成后执行。TCSAFLUSH:Flush input and output buffers and make the change4.设置数据位、停止位和校验位以下是几个数据位、停止位和校验位的设置方法:(以下均为1位停止位)8位数据位、无校验位:Opt.c_cflag = ~PARENB;Opt.c_cflag = ~CSTOPB;Opt.c_cflag = ~CSIZE;Opt.c_cflag |= CS8;7位数据位、奇校验:Opt.c_cflag |= PARENB;Opt.c_cflag |= PARODD;Opt.c_cflag = ~CSTOPB;Opt.c_cflag = ~CSIZE;Opt.c_cflag |= CS7;7位数据位、偶校验:Opt.c_cflag |= PARENB;Opt.c_cflag = ~PARODD;Opt.c_

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档