arm linux下串口设置属性 配置

 int OpenDev(char *Dev,int baudrate)

{

speed_t speed;    

int i=0;    

int fdt,c=0,num;    

struct termios oldtio,newtio;   

speed = getBaudrate(baudrate);    

fdt=open(Dev,O_RDWR | O_NONBLOCK| O_NOCTTY | O_NDELAY);    

if(fdt<0)    

{        

perror(Dev);        

exit(1);    

}    //save to oldtio    

tcgetattr(fdt,&oldtio);    //clear newtio   

bzero(&newtio,sizeof(newtio));    

//newtio.c_cflag = speed|CS8|CLOCAL|CREAD|CRTSCTS;   

newtio.c_cflag = speed|CS8|CLOCAL|CREAD;   

newtio.c_iflag = IGNPAR;      

newtio.c_oflag = 0;    

//printf("newtio.c_cflag=%x\n",newtio.c_cflag);   

tcflush(fdt,TCIFLUSH);      

tcsetattr(fdt,TCSANOW,&newtio);      

tcgetattr(fdt,&oldtio);    //printf("oldtio.c_cflag=%x\n",oldtio.c_cflag);   

return fdt;

}

关于c_iflag 和c_oflag的配置使用

c_oflag------->

OPOST:打开输出处理
ONLCR:将输出的新行转换为回车/换行对
OCRNL:将输出的回车转换为新行
ONOCR:在第0列不输出回车
ONLRET:新行也需要一个回车
OFILL:发送填充字符来提供延时
OFDEL:使用DEL作为填充字符,而不是NULL
NLDLY:新行延时选择
CRDLY:回车延时选择
TABDLY:Tab延时选择
BSDLY:Backspace延时选择
VTDLY:垂直Tab延时选择
FFDLY:换页延时选择


可以用于c_iflag的宏为:

BRKINT:在一行中检测到中断(break)条件时产生一个中断
IGNBRK:在一行中忽略中断条件
INCRNL:将接收到的回车转换为换行
IGNCR:忽略接收到的因车
INLCR:将接收到的新行转换为回车
IGNPAR:忽略带有奇偶检验误差的字符
INPCK:在接收到的字符上执行奇偶校验
PARMRK:标记奇偶校验误差
ISTRIP:去除所有的输入字符
IXOFF:在输入上允许软件流控制
IXON:在输出上允许软件流控制

这些模式控制终端的硬件特点。我们可以通过设置termios结构中的c_cflag成员的值来指定控制模式,其可用的值为:

CLOCAL:忽略调制解调器状态行
CREAD:允许字符接收
CS5:在发送或是接收的字符中使用5位(5 bits)
CS6:在发送或是接收的字符中使用6位
CS7:在发送或是接收的字符中使用7位
CS8:在发送或是接收的字符中使用8位
CSTOPB:每个字符使用两个结束位,而不是一个
HUPCL:关闭时挂起调制解调器
PARENB:允许奇偶校验生成与检测
PARODD:使用介校验而不是奇校验

sitemap