有没有做过RV1103高速串口的呀
我打算用串口接收数据,10字节/包,16000包/s
接收到的数据随机丢包,一丢就是几百1千多字节
有没有碰到过的大神
serinfo.flags |= ASYNC_LOW_LATENCY;
// 串口初始化
int setup_serial(const char *dev)
{
int fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd < 0)
{
write_log("ERROR: Cannot open serial %s: %s", dev, strerror(errno));
exit(1);
}
struct termios tty = {0};
tcgetattr(fd, &tty);
cfmakeraw(&tty);
cfsetspeed(&tty, 2000000);
tty.c_cc[VMIN] = 0; // 设置最小读取字节数为0
tty.c_cc[VTIME] = 0; // 设置读取超时时间为0
tty.c_cflag |= (CLOCAL | CREAD | CS8);
struct serial_struct serial;
int ret = ioctl(fd, TIOCGSERIAL, &serial);
serial.xmit_fifo_size = 1024 * 1024; // 1M
// 设置串口低延迟模式
serial.flags |= ASYNC_LOW_LATENCY;
ret = ioctl(fd, TIOCSSERIAL, &serial);
if (tcsetattr(fd, TCSANOW, &tty) != 0)
{
write_log("ERROR: tcsetattr failed: %s", strerror(errno));
close(fd);
exit(1);
}
return fd;
}
// 串口初始化
int setup_serial(const char *dev)
{
int fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd < 0)
{
write_log("ERROR: Cannot open serial %s: %s", dev, strerror(errno));
exit(1);
}
struct termios tty = {0};
tcgetattr(fd, &tty);
cfmakeraw(&tty);
cfsetspeed(&tty, 2000000);
tty.c_cc[VMIN] = 0; // 设置最小读取字节数为0
tty.c_cc[VTIME] = 0; // 设置读取超时时间为0
tty.c_cflag |= (CLOCAL | CREAD | CS8);
struct serial_struct serial;
int ret = ioctl(fd, TIOCGSERIAL, &serial);
serial.xmit_fifo_size = 1024 * 1024; // 1M
// 设置串口低延迟模式
serial.flags |= ASYNC_LOW_LATENCY;
ret = ioctl(fd, TIOCSSERIAL, &serial);
if (tcsetattr(fd, TCSANOW, &tty) != 0)
{
write_log("ERROR: tcsetattr failed: %s", strerror(errno));
close(fd);
exit(1);
}
return fd;
}
离线