加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 串行通信(RTS)和Windows 7

发布时间:2020-12-15 04:21:11 所属栏目:大数据 来源:网络整理
导读:我正在 Windows 7下的Delphi 2010 XE RAD Studio上开发Delphi应用程序.我的应用程序不停地在串口上进行讨论.我正在使用AsyncPro for Delphi 2010.串口通信和我开发的计算机上的所有其他工作都很好,没有任何问题.但是,当我的应用程序的发行版本在另一个Window
我正在 Windows 7下的Delphi 2010 XE RAD Studio上开发Delphi应用程序.我的应用程序不停地在串口上进行讨论.我正在使用AsyncPro for Delphi 2010.串口通信和我开发的计算机上的所有其他工作都很好,没有任何问题.但是,当我的应用程序的发行版本在另一个Windows 7系统上运行时,串行通信完全失败.我们探测了串行通信本身的答案,发现在发送所有字节后不会丢弃请求发送(RTS)线,而在我的开发计算机上,RTS线被正确删除.

即使我明确地将RTS线路丢弃到低或假状态,RTS线路也不会立即下降,但是在15毫秒之后.因此,我的发行版本上的串行通信失败了.

我是否遗漏了有关Windows 7和串行通信问题的重要信息?

更新:我刚刚发现我的Aysncpro 5.0 for Delphi XE的错误.真奇怪.当我的Delphi XE IDE打开或运行时,我的程序正在完美地进行通信.当我的程序运行时关闭或关闭我的Delphi XE IDE时,相同的程序无法正常通信或超时.

如果您知道为什么会发生这种情况,请编钟.

任何帮助将不胜感激.

谢谢,

解决方法

对我来说听起来像计时器分辨率问题.尝试使用带有timeSetEvent()的基于事件的计时器写入USB FTDI驱动程序时遇到同样的问题…当Delphi加载时,它会将计时器分辨率更改为小于20毫秒,这使我的应用程序正常工作.当IDE没有运行时,我无法在20ms / – 5ms(我相信默认的Windows分辨率)下工作.

为了解决这个问题,我在线程中调用timeBeginPeriod(1)来设置最小系统范围的计时器分辨率.

我相信这会影响其他基于时间的事件的分辨率,因为当我使用timeBeginPeriod()时,我的应用程序中的其他(非多媒体计时器)等待事件的准确率要高于/ -5ms.

所以,我建议的是,在AsyncPro代码的某个地方,它使用一些基于时间的事件或回调……这会受到Delphi加载时对计时器分辨率的改变的影响.尝试在应用程序启动时在某处调用timeBeginPeriod(1)并查看是否有更改.

哦,不要忘记在你的应用程序关闭时调用timeEndPeriod(1).

N – [

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读