Linux下cfsetospeed和cfsetispeed函数

对于波特率的设置通常使用cfsetospeed和cfsetispeed函数来完成。获取波特率信息是通过cfgetispeed和 cfgetospeed函数来完成的。

  cfsetospeed函数

  头文件:

  #include

  函数原型:

  int cfsetospeed(struct termios *termptr, speed_t speed);

  参数:

  struct termios *termptr - 指向termios结构的指针

  speed_t speed - 需要设置的输出波特率

  返回值:

  如果成功返回0,否则返回-1

  cfsetispeed函数

  头文件:

  #include

  函数原型:

  int cfsetispeed(struct termios *termptr, speed_t speed);

  参数:

  struct termios *termptr - 指向termios结构的指针

  speed_t speed - 需要设置的输入波特率

  返回值:

  如果成功返回0,否则返回-1

  cfgetospeed函数

  头文件:

  #include

  函数原型:

  speed_t cfgetospeed(const struct termios *termptr);

  参数:

  const struct termios - 指向termios结构的指针

  返回值:

  返回输出波特率

  cfgetispeed函数

  头文件:

  #include

  函数原型:

  speed_t cfgetispeed(const struct termios *termptr);

  参数:

  const struct termios *termptr - 指向termios结构的指针

  返回值:

  返回输入波特率

  波特率常量:

  CBAUD 掩码

  B0 0波特

  B50 50波特

  B75 75波特

  B110 100波特

  B134 134波特

  B150 150波特

  B200 200波特

  B300 300波特

  B600 600波特

  B1200 1200波特

  B1800 1800波特

  B2400 2400波特

  B9600 9600波特

  B19200 19200波特

  B38400 38400波特

  B57600 57600波特

  B115200 115200波特

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include #include #include #include #include #include #include #include #include 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; break; 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\r"); return 0; } int main(void) { int fd1,fd2,nset1,nset2,nread; char buf[100]; char buf1[1]; char *buff = "Hello\n\r"; fd1 = open( "/dev/ttySAC0", O_RDWR); if (fd1 == -1) exit(1); fd2 = open( "/dev/ttySAC1", O_RDWR); if (fd2 == -1) exit(1); nset1 = set_opt(fd1, 115200, 8, 'N', 1); if (nse

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值