系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > Linux系统设置串口属性

Linux系统中设置串口属性的基本流程(2)

时间:2014-12-09 21:55:51 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20141209/32207.html 手机查看 评论

  9. 激活配置

  用到函数tcsetattr:

  函数原型:tcsetattr(fd,OPTION,&newtio);

  这里的newtio就是termios类型的变量,OPTION可能的取值如下:

  TCSANOW:改变的配置立即生效

  TCSADRAIN:改变的配置在所有写入fd的输出都结束后生效

  TCSAFLUSH:改变的配置自爱所有写入fd引用对象的输出都被结束后生效,所有已接受但为读入的输入都在改变发生前丢弃。

  该函数调用成功返回0,失败-1.

  if((tcsetattr(fd,TCSANOW,&newtio))!=0)

  {

  perror(“com set error”);

  return -1;

  }

  /*串口配置的完整函数,为了函数的通用性,通常将常用的选项都在函数中列出,可大大方便以后用户的调试使用

  */ int set_opt(int fd,int nSpeed,int nBits,char nEvent,int nStop) { struct termios newtio,oldtio; /*

  保存测试现有串口参数设置,在这里如果串口号等出错,会有相关的出错信息

  */ if(tcgetattr(fd,&oldtio)!=0) { perror(“SetupSerial 1”);

  return -1; } bzero(&newtio,sizeof(newtio)); /*

  步骤一,设置字符大小

  */ newtio.c_cflag |= CLOCAL | CREAD;

  newtio.c_cflag &= ~CSIZE; /*

  设置停止位

  */ switch(nBits) { case 7:

  newtio.c_cflag |=CS7;

  break; case 8:

  newtio.c_cflag |=CS8;

  break; } /*

  设置奇偶校验位

  */ switch(nEvent) { case ‘O‘://奇数

  newtio.c_cflag |= PARENB; newtio.c_cflag |=PARODD;

  newtio.c_iflag |= (INPCK | ISTRIP); break; case ‘E‘://偶数

  newtio.c_iflag |= (INPCK | ISTRIP); newtio.c_cflag |= PARENB;

  newtio.c_cflag &= ~PARODD; case ‘N‘://无奇偶校验位 newtio.c_cflag &= ~PARENB; break; } /*

  设置波特率

  */ switch(nSpeed) { case 2400:

  cfsetispeed(&newtio,B2400);

  cfsetospeed(&newtio,B2400);

  break; case 4800:

  cfsetispeed(&newtio,B4800);

  cfsetospeed(&newtio,B4800);

  break; case 9600:

  cfsetispeed(&newtio,B9600);

  cfsetospeed(&newtio,B9600);

  break; case 115200:

  cfsetispeed(&newtio,B115200);

  cfsetospeed(&newtio,B115200);

  break; case 460800:

  cfsetispeed(&newtio,B460800);

  cfsetospeed(&newtio,B460800);

  break; default:

  cfsetispeed(&newtio,B9600);

  cfsetospeed(&newtio,B9600);

  break; } /*

  设置停止位*/ if(nStop==1)

  newtio.c_cflag &= ~CSTOPB; else if(nStop==2)

  newtio.c_cflag |= CSTOPB; /*

  设置等待时间和最小接收字符

  */ newtio.c_cc[VTIME] =0; newtio.c_cc[VMIN]=0; /*

  处理未接受字符

  */ tcflush(fd, TCIFLUSH); /*

  激活新配置

  */ if((tcsetattr(fd,TCSANOW,&newtio))!=0)

  {

  perror(“com set error”);

  return -1;

  }

  printf(“set done!\n”);

  return 0;

  }

  上面就是Linux下串口设置的介绍了,需要设置的地方有点多,初学者可能会用到该方面的知识,希望上面介绍的方法能够帮助到你。

标签 串口

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

扫码关注
扫码关注

扫码关注 官方交流群 软件收录