linux下编程之 串口通信

打开串口:

int  fd;

fd = open("/dev/ttySAC0", O_RDWR);

if(fd < 0){

//打开失败

}

 

备份串口配置信息:

        用于使用完串口后,将配置信息复原,以便其他使用此串口。

struct   termios  uart_cfg;

int ret;

 

ret = tcgetattr(fd, &uart_cfg);

if(ret < 0){

//获得配置信息失败

}

 

复原串口配置信息:

       恢复使用前的串口配置信息。

int ret;

 

ret = tcsetattr(fd, TCSANOW, &uart_cfg);

if(ret < 0){

//恢复串口配置信息失败

}

 

配置串口:

struct  termios  uart_cfg;

int   ret;

 

//先获得配置信息,在获得的配置信息上修改成想要的配置信息

ret = tcgetattr(fd, &uart_cfg);

if(ret < 0){

//获得配置信息失败

}

//设置波特率

tcflush(fd,  TCIOFLUSH);

cfsetispeed(&uart_cfg, B9600);  //设置为9600

cfsetospeed(&uart_cfg, B9600);

tcflush(fd, TCIOFLUSH);

//数据位

uart_cfg.c_cflag &= ~CSIZE;

 

uart_cfg.c_cflag  |= CS7;

or

uart_cfg.c_cflag  |= CS8;

//校验位

无校验

uart_cfg.c_cflag  &= ~PARENB;

uart_cfg.c_iflag   &= ~INPCK;

uart_cfg.c_oflag  &= ~OPOST;

奇校验

uart_cfg.c_cflag  |=  (PARODD | PARENB);

uart_cfg.c_iflag   |=  INPCK;

uart_cfg.c_oflag &= ~OPOST;

偶校验

uart_cfg.c_cflag  |= PARENB;

uart_cfg.c_cflag  &= ~PARODD;

uart_cfg.c_iflag   |=  INPCK;

uart_cfg.c_oflag &= ~OPOST;

//停止位

1位停止位

uart_cfg.c_cflag &= ~CSTOPB;

2位停止位

uart_cfg.c_cflag |= CSTOPB;

//超时, 回显等设置

uart_cfg.c_lflag  &= ~(ECHO | ECHOE | ISIG);

uart_cfg.c_lflag &= ~ICANON;

uart_cfg.c_cc[VTIME] = 1;

uart_cfg.c_cc[VMIN] = 0;

//使之立刻生效

tcflush(fd,   TCIOFLUSH);

ret = tcsetattr(fd, TCSANOW, &uart_cfg);

if(ret < 0){

//设置失败

}

 

关闭串口:

        经常在关闭串口前, 将串口配置信息复原到使用前的配置。

ret  = close(fd);

你可能感兴趣的:(linux,串口编程)