【问题标题】:Unresponsive Windows if nothing is picking up COM port data如果没有获取 COM 端口数据,则 Windows 无响应
【发布时间】:2017-10-06 09:30:00
【问题描述】:

我制作了一个 Delphi 应用程序,它每秒向 COM 端口传输数据。 COM 端口是数据传输软件和 VirtualBox 机器之间的虚拟零调制解调器 (com0com)。一切都很好,但如果另一端没有任何东西在监听,主机 Windows 会变得越来越无响应。

【问题讨论】:

  • 我认为有可能在发送新数据之前刷新传输缓冲区。
  • 要清除传输缓冲区,请调用PurgeComm(comHandle,PURGE_TXCLEAR);您也可以将超时设置为合理的值。
  • 我在使用 com0com 时也遇到过同样的情况,但后来我转而使用命名管道来模拟/调试串行通信。
  • 我也想知道SetCommTimeouts 是否可以改变你的情况。
  • @Stijn Sanders:我也尝试过命名管道,但它们不适合将数据从主机传输到客户机(或者我必须更新我的软件以使用命名管道而不是 COM 端口)并且我必须始终在我不打算使用它之前启动其他虚拟机,否则我的第一个虚拟机拒绝启动。

标签: delphi serial-port com0com


【解决方案1】:

在我从 com0com 转到纯硬件解决方案后,问题就消失了。我在虚拟机中的应用程序也停止定期挂起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多