我有一个通过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 )