您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页Linux下串口设置代码

Linux下串口设置代码

来源:欧得旅游网
int set_com_config(int fd,int baud_rate,int data_bits,char parity,int stop_bits) {

struct termios new_cfg,old_cfg; int speed;

memset(&new_cfg,0,sizeof(new_cfg)); if(tcgetattr(fd,&old_cfg)!=0) {

perror(\"tcgetattr\"); return -1; }

new_cfg=old_cfg;

cfmakeraw(&new_cfg); new_cfg.c_cflag &=~CSIZE; switch(baud_rate) {

case 2400:

{

speed=B2400; } break; case 4800:

{

speed=B4800; }

break; case 9600: {

speed=B9600; }

break; case 19200: {

speed=B19200; } break; case 38400: {

speed=B38400; } break; defult:

case 115200: {

speed=B115200;

}

break; }

cfsetispeed(&new_cfg,speed); cfsetospeed(&new_cfg,speed); switch(data_bits) {

case 7: {

new_cfg.c_cflag |=CS7; }

break; default: case 8:

{

new_cfg.c_cflag |=CS8; }

break; }

switch(parity) {

default: case 'n': case 'N': {

new_cfg.c_cflag &=~PARENB; new_cfg.c_iflag &=~INPCK; }

break; case 'o': case 'O': {

new_cfg.c_cflag |=(PARODD|PARENB); new_cfg.c_iflag |=INPCK; }

break; case 'e': case 'E': {

new_cfg.c_cflag |=PARENB; new_cfg.c_cflag &=~PARODD; new_cfg.c_iflag |=INPCK; }

break;

case 's':

case 'S': {

new_cfg.c_cflag &=~PARENB; new_cfg.c_cflag &=~CSTOPB; } break; }

switch(stop_bits) {

default: case 1:

{

new_cfg.c_cflag &=~CSTOPB; }

break;

case 2: {

new_cfg.c_cflag |=CSTOPB; } break;

}

new_cfg.c_lflag &=~(ECHO | ECHONL | ICANON | ISIG | IEXTEN | NOFLSH); new_cfg.c_oflag &=~OPOST; new_cfg.c_iflag |=BRKINT; new_cfg.c_cc[VTIME]=0; new_cfg.c_cc[VMIN]=1;

tcflush(fd,TCIFLUSH);

if(tcsetattr(fd,TCSANOW,&new_cfg)!=0) {

perror(\"tcsetattr\"); return -1; }

return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务