Windows 7中串口输出缓冲区大小

发布于 2024-12-12 03:01:25 字数 551 浏览 0 评论 0原文

Unix串行端口有一个大的输出缓冲区。只要缓冲区中有空间,写入调用就会立即返回。当没有足够的空间时,阻塞写入会等待,直到缓冲区清空到某个低水平。

在 Windows 7 SP1 中,内置 16550 串行端口的行为就像没有输出缓冲区一样。看起来写入会阻塞,直到数据从端口输出。如果有缓冲区,它甚至比设备管理器中设置的 16 字节(COM1 的高级设置中)还要小。 SetupComm 函数让我指定输入和输出缓冲区的推荐大小。但是,输出缓冲区大小似乎没有改变任何行为,并且 GetCommProperties 始终将 dwCurrentTxQueue 字段设置为零。 SetupComm 唯一能做的就是增加输入缓冲区的大小。

Unix serial ports have a large output buffer. Write calls return immediately as long as there's space in the buffer. When there isn't enough space, a blocking write waits until the buffer is emptied to some low level.

In Windows 7 SP1, the built-in 16550 serial port behaves as if there's no output buffer. It seems writes block until the data is output from the port. If there is a buffer, it's even smaller than the 16 bytes set in Device Manager (in Advanced Settings for COM1). The SetupComm function lets me specify recommended sizes for input and output buffers. However, the output buffer size doesn't seem to change any behaviour, and GetCommProperties always sets the dwCurrentTxQueue field to zero. The only thing SetupComm can do is increasing the size of the input buffer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖乖哒 2024-12-19 03:01:25

SetupComm 的文档特别允许设备驱动程序忽略请求的值。

最好的选择是使用重叠 I/O 并自行处理缓冲。

The documentation for SetupComm specifically permits the device driver to ignore the requested values.

Your best bet is to use overlapped I/O and handle the buffering yourself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文