串口通讯速度慢

sxqinge 2015-06-10 01:04:04
之前是用默认的DEBUG发布,串口收发数据时快时慢;改用RELEASE版本发布,效果一样。
一次偶然的机会,当打开IDE时串口速度就正常了,速度比较快。
请问下这是什么情况引起的呢?
...全文
721 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
9527 2015-06-11
  • 打赏
  • 举报
回复
不知道你用的什么方法,spcom还是winapi,对照下面代码检查下吧

BOOL CSerialCom::UpdateConnection()
{
    DCB dcb = {0};
    COMMPROP commprop;
    DWORD fdwEvtMask;

    dcb.DCBlength = sizeof(dcb);
    //
    // get current DCB settings
    //
    if (!GetCommState(COMDEV(COMInfo), &dcb))
        ddebug("GetCommState");

    GetCommProperties(COMDEV(COMInfo), &commprop);
    GetCommMask(COMDEV(COMInfo), &fdwEvtMask);
    
    //
    // update DCB rate, byte size, parity, and stop bits size
    //
    dcb.BaudRate = BAUDRATE(COMInfo);
    dcb.ByteSize = BYTESIZE(COMInfo);
    dcb.Parity   = PARITY(COMInfo);
    dcb.StopBits = STOPBITS(COMInfo);

    //
    // update event flags
    //
    if (EVENTFLAGS(COMInfo) & EV_RXFLAG)
        dcb.EvtChar = FLAGCHAR(COMInfo);
    else
        dcb.EvtChar = '\0';

    //
    // update flow control settings
    //
    dcb.fDtrControl     = DTRCONTROL(COMInfo);
    dcb.fRtsControl     = RTSCONTROL(COMInfo);

    dcb.fOutxCtsFlow    = CTSOUTFLOW(COMInfo);
    dcb.fOutxDsrFlow    = DSROUTFLOW(COMInfo);
    dcb.fDsrSensitivity = DSRINFLOW(COMInfo);
    dcb.fOutX           = XONXOFFOUTFLOW(COMInfo);
    dcb.fInX            = XONXOFFINFLOW(COMInfo);
    dcb.fTXContinueOnXoff = TXAFTERXOFFSENT(COMInfo);
    dcb.XonChar         = XONCHAR(COMInfo);
    dcb.XoffChar        = XOFFCHAR(COMInfo);
    dcb.XonLim          = XONLIMIT(COMInfo);
    dcb.XoffLim         = XOFFLIMIT(COMInfo);

    //
    // DCB settings not in the user's control
    //
    dcb.fParity = TRUE;

    //
    // set new state
    //
    if (!SetCommState(COMDEV(COMInfo), &dcb))
    {
        ddebug("SetCommState");
        //ShowLastError("SetCommState");
    }

    //
    // set new timeouts
    //
    if (!SetCommTimeouts(COMDEV(COMInfo), &(TIMEOUTSNEW(COMInfo))))
        ddebug("SetCommTimeouts");

    return TRUE;
}
9527 2015-06-10
  • 打赏
  • 举报
回复
打开IDE和串口能有什么关系哪? 检查下你串口初始化是不是有漏项。
sxqinge 2015-06-10
  • 打赏
  • 举报
回复
初始化一般都哪些项呢? 我目前的效果就是这样,一个指令队列不断循环往串口发送指令,有时候发送完上一条后,要等待500多毫秒(正常是100毫秒)才发送下一条。有时候发送会正常,有时候就很慢。程序运行时,如果打开IDE(不需要打开工程)了,那么发送就会变得正常。

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧