首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串口WriteFile()冻结

串口WriteFile()冻结
EN

Stack Overflow用户
提问于 2008-10-30 20:16:15
回答 4查看 3.3K关注 0票数 4

我有一个简单的应用程序,它应该每分钟向串行端口发送一个字节。但有时,由于某种奇怪的原因,它在WriteFile()函数中的某处冻结。sw和hw流量控制均关闭。我在谷歌上搜索了一些从其他线程执行的挂起的读取操作,但我相信这不是问题,因为我的应用程序是单线程的。此外,来自CreateFile的句柄看起来是有效的,因此该端口不应该被任何其他应用程序使用。有没有人遭受过这种痛苦?

EN

回答 4

Stack Overflow用户

发布于 2008-10-30 22:54:16

如果你在谷歌上搜索writefile挂起这个词,你会发现很多关于这个问题的讨论。一些线索是缓冲区溢出、正确调整缓冲区大小、COM端口有缺陷、错误时清除状态...似乎有很多东西可以尝试。

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

票数 2
EN

Stack Overflow用户

发布于 2008-10-30 20:21:03

我使用的是这个库:在Windows XP上的Delphi7中的http://lhdelphi.ic.cz/uploader/storage/ComDrv32.pas,但里面的组件只是一些Win调用、CreateFile、WriteFile等的包装器。

票数 0
EN

Stack Overflow用户

发布于 2008-10-30 23:16:51

您是否已尝试将CommPortDriver.CheckLineStatus设置为true (“防止在未连接设备或设备关闭时挂起”)?comdrv32.pas库的源代码包含了这个建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/251594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档