Delphi中串口WriteFile()操作为何会导致程序冻结?

更新于
2026-10-04 19:55:32
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计350个文字,预计阅读时间需要2分钟。

我有款简单的应用程序,它应该每分钟发送一个字节能串到串口。但有时,由于某些奇怪的原因,它在WriteFile()函数中的某处崩溃。sw和hw流控制都关闭。我已经搜索了一些关于如何从另一个“

我有一个简单的应用程序,它应该每分钟一个字节发送一个字节到一个串口.但有时,从某些奇怪的原因,它在WriteFile()函数中的某处冻结. sw和hw流量控制均关闭.我已经搜索了一些关于从另一个线程执行的挂起读取操作的东西,但我相信这不是问题,因为我的应用程序有单线程.此外,CreateFile的句柄看起来有效,因此任何其他应用程序都不应使用该端口.有人遭受过这种情况吗? 如果你谷歌写的文件挂起,你会发现有关这个问题的一些讨论.一些线索是缓冲区溢出,正确调整缓冲区大小,有缺陷的COM端口,清除错误状态……似乎有很多事情要尝试.

我建议的另一件事是使用通信库而不是直接调用API,比如Async Professional(sourceforge.net/projects/tpapro/).即使它们为您的应用程序增加了一些开销,它们也可能简化您的工作并避免一些潜在的陷阱……

本文共计350个文字,预计阅读时间需要2分钟。

我有款简单的应用程序,它应该每分钟发送一个字节能串到串口。但有时,由于某些奇怪的原因,它在WriteFile()函数中的某处崩溃。sw和hw流控制都关闭。我已经搜索了一些关于如何从另一个“

我有一个简单的应用程序,它应该每分钟一个字节发送一个字节到一个串口.但有时,从某些奇怪的原因,它在WriteFile()函数中的某处冻结. sw和hw流量控制均关闭.我已经搜索了一些关于从另一个线程执行的挂起读取操作的东西,但我相信这不是问题,因为我的应用程序有单线程.此外,CreateFile的句柄看起来有效,因此任何其他应用程序都不应使用该端口.有人遭受过这种情况吗? 如果你谷歌写的文件挂起,你会发现有关这个问题的一些讨论.一些线索是缓冲区溢出,正确调整缓冲区大小,有缺陷的COM端口,清除错误状态……似乎有很多事情要尝试.

我建议的另一件事是使用通信库而不是直接调用API,比如Async Professional(sourceforge.net/projects/tpapro/).即使它们为您的应用程序增加了一些开销,它们也可能简化您的工作并避免一些潜在的陷阱……