使用ReadFile读取COM /串行端口时的速度问题

时间:2013-12-19 22:18:06

标签: c++

我有一个通过com端口发送和接收数据的C ++应用程序。有一个函数在for循环中读取一个特定延迟的60次端口,因为我们使用的是TAP协议。

    for( i = 0, bPerformRead = true; i < nRepeatCount; )
    {
       //m_hCom is HANDLE to the COM port.
       if( ReadFile(m_hCom, p, nNumBytes ? 1 : nWaitStrLen/*sizeof(szBuf)-nNumBytes*/,&dwBytes, &ov) == FALSE )
       {
         //Do some logics
       }

       //sleep for 33 ms
     }

我在我的测试笔记本电脑上运行这个应用程序,这是一个虚拟COM,这需要大约2秒(33ms * 60)等于1980ms

但是,当我们在使用USB to Serial的客户端计算机上运行此操作时,此步骤最多需要17秒。

经过多次故障排除后,我将其指向此ReadFile(),我认为在客户端计算机上完成此操作需要差不多10倍。

您是否知道此问题是否特定于端口设置?我尝试使用完全相同的端口设置,我的机器仍然只需要2秒钟。

非常感谢任何帮助,我在这个方面有点打击。

我也在串口上的读取间隔设置。

        Timeouts.ReadIntervalTimeout = MAXDWORD; 
    Timeouts.ReadTotalTimeoutMultiplier = 0; 
            Timeouts.ReadTotalTimeoutConstant = 0;
    Timeouts.WriteTotalTimeoutMultiplier = 0;
    Timeouts.WriteTotalTimeoutConstant = 0;

            SetCommTimeouts( m_hCom, &Timeouts ) 

enter image description here

0 个答案:

没有答案