写一个C语言设置串口缓冲区的大小的代码
时间: 2023-05-26 16:05:17 浏览: 209
用C语言编写串口程序
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <string.h>
int main()
{
int fd;
struct termios tio;
int buf_size = 2048; // 设置缓冲区大小为2048字节
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY);
if (fd < 0) {
perror("open");
return -1;
}
if (tcgetattr(fd, &tio) < 0) {
perror("tcgetattr");
return -1;
}
tio.c_cc[VTIME] = 5; // 设置超时等待时间,单位为0.1秒
tio.c_cc[VMIN] = 0; // 设置最小字节读取量为0
tio.c_cflag |= CLOCAL | CREAD;
tio.c_cflag &= ~(PARENB | CSTOPB | CSIZE);
tio.c_cflag |= CS8;
// 设置缓冲区大小
tio.c_cc[VMIN] = 1; // 设置最小字节数为1
tio.c_cc[VTIME] = 0; // 关闭超时等待功能
if (ioctl(fd, FIONREAD, &buf_size) < 0) {
perror("ioctl");
return -1;
}
if (tcsetattr(fd, TCSANOW, &tio) < 0) {
perror("tcsetattr");
return -1;
}
printf("Buffer size: %d\n", buf_size);
close(fd);
return 0;
}
阅读全文