我试图理解,为什么我的阅读功能需要这么多"额外"时间(约60ms)?它必须花费大约50毫秒,但我花在阅读功能130-140毫秒。在图片(绿色 - 发送,黄色 - 接收)时,我在read(3)
被呼叫以及何时完成时进行了标记。一切都按预期工作,但有一个奇怪的延迟。由于端口波特率仅为600 bit / s且通信是同步的,我不能盲目等待60ms,这是非常浪费的。超时,缓冲区大小等实验没有任何结果。是否有可能摆脱读取功能的延迟?
std::vector<byte> read(const size_t expected)
{
std::vector<byte> buffer(expected, 0);
DWORD totalReaded = 0, bytesReaded, dwEventMask;
if (!SetCommMask(hPort, EV_RXCHAR))
throw std::runtime_error("SetCommMask failed.");
if (!WaitCommEvent(hPort, &dwEventMask, NULL))
throw std::runtime_error("WaitCommEvent failed.");
do
{
if (ReadFile(hPort, &buffer[totalReaded], buffer.size() - totalReaded, &bytesReaded, nullptr))
{
totalReaded += bytesReaded;
}
else
{
throw std::exception("ReadFile failed!");
}
} while (totalReaded < buffer.size());
buffer.resize(totalReaded);
return buffer;
}
完整的程序代码:http://pastebin.com/iu1j8V0g