您尚未登录。

楼主 # 2025-07-04 11:20:34

pans203
会员
注册时间: 2019-09-19
已发帖子: 6
积分: 1

RV1103高速串口

有没有做过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;
}

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发