我正在适应为跨平台兼容性而编写的简单Linux串行库。大多数事情都会延续下去(尽管Microsoft坚持要重命名所有东西),但是有些功能我还没找到。

我当前的问题是VMIN和VTIME的使用(在struct termios中)。在Linux上,我使用它们来强制读取以阻止一定数量的字符,但是如果未接收到它们,则会发生错误并超时。但是,Windows建议使用BuildCommDCB函数,而不是直接为其DCB(设备控制块)结构设置参数。该函数不支持类似于VMIN或VTIME的任何内容,并且DCB结构本身也没有更好的表现。

有没有办法在Windows中获得此功能而不自己实现?如果完全可以避免的话,我宁愿只处理库中一个平台的串行中断和回调。

编辑:SetCommTimeouts函数似乎模仿了VTIME的功能,但是我仍然没有为VMIN找到任何东西。

最佳答案

您可以尝试查看source code for cygwin。我认为它们在基于Unix API的基础上使Windows串行I / O正常工作表现很好。

关于c++ - 在Windows上使用VMIN和VTIME,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36293622/

10-09 06:32