系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux系統(tǒng)設置串口屬性

Linux系統(tǒng)中設置串口屬性的基本流程(2)

時間:2014-12-09 21:55:51 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20141209/32207.html 手機查看 評論

  9. 激活配置

  用到函數(shù)tcsetattr:

  函數(shù)原型:tcsetattr(fd,OPTION,&newtio);

  這里的newtio就是termios類型的變量,OPTION可能的取值如下:

  TCSANOW:改變的配置立即生效

  TCSADRAIN:改變的配置在所有寫入fd的輸出都結(jié)束后生效

  TCSAFLUSH:改變的配置自愛所有寫入fd引用對象的輸出都被結(jié)束后生效,所有已接受但為讀入的輸入都在改變發(fā)生前丟棄。

  該函數(shù)調(diào)用成功返回0,失敗-1.

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

  {

  perror(“com set error”);

  return -1;

  }

  /*串口配置的完整函數(shù),為了函數(shù)的通用性,通常將常用的選項都在函數(shù)中列出,可大大方便以后用戶的調(diào)試使用

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

  保存測試現(xiàn)有串口參數(shù)設置,在這里如果串口號等出錯,會有相關的出錯信息

  */ 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‘://奇數(shù)

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

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

  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下串口設置的介紹了,需要設置的地方有點多,初學者可能會用到該方面的知識,希望上面介紹的方法能夠幫助到你。

標簽 串口

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

官方交流群 軟件收錄