USB cdc串口怎么解决丢包问题?

int my_printf(const char *fmt, ...) {
    va_list ap;
    va_start(ap, fmt);
    int i = vsnprintf(pEP2_IN_DataBuf, 64, fmt, ap);
    va_start(ap, fmt);
    va_end(ap);

    while (!EP2_GetINSta());

    DevEP2_IN_Deal(i);

    return i;
}


我封装了这样一个函数用于打印,但是发现使用这个函数总是会丢包,应该用什么方法解决丢包问题?

按照我的理解,while (!EP2_GetINSta()) 会检测发包是否完成,从而可以避免丢包,但这样并没有用,呜呜呜。


使用的芯片是ch573


您好,如果是为了监测当前IN数据包是否已上传,可以添加一个上传完成标志变量,见帖子:https://www.wch.cn/bbs/thread-86976-1.html;如果是当传输64字节整倍数的数据量时才会丢包,可能是少了0长度数据包,需要在最后一包64字节满字节包后发出。772d09d609911ccde1440b7a6e938da.png


谢谢


只有登录才能回复,可以选择微信账号登录