如果我用Indy 9编写它,我的程序可以在客户站点使用Indy 10吗?

时间:2011-02-02 08:33:18

标签: delphi debugging indy10 modbus indy-9

我在Delphi 7中编写了一个程序(包括一个使用Indy的ModBus组件)。在我的机器上它使用Indy 9并且工作正常。它通过ModBus协议与其他机器很好地通信。但是,当程序在不同的机器上运行时,我得到CPU 90-100%的负载。不幸的是,这台机器不在我的办公室,而是“在世界的另一边”。我怎样才能知道这台机器是使用Indy 9还是Indy 10?而且,如果它正在运行Indy 10,那可能是问题还是这不太可能?

5 个答案:

答案 0 :(得分:4)

明确答案是

如果使用indy 9编译程序,即使使用包,也应使用INDY 9运行。 AFAIK,没有办法使用INDY 9编译可执行文件并在运行时使用INDY 10,即使你想要,也不会发生意外。

答案 1 :(得分:1)

要了解导致高CPU负载的原因,您可以尝试使用AQTimeSamplingProfiler等分析器。

这将为您提供大部分时间运行的方法。然后你就能找出导致问题的原因。

或者,您可以在应用程序中添加一些日志记录。

答案 2 :(得分:1)

要查找根本原因,您可以准备一个测试应用程序,该应用程序将执行一系列操作,例如打开/关闭连接。如果它在继续之前要求用户确认(“继续?y / n”),则用户可以检查每个步骤的CPU负载以检测关键操作。

答案 3 :(得分:0)

感谢您的回答。我不认为这是一个Indy问题。在我的四核CPU上,CPU负载也从1-2%上升到aprox。 25%。如果我保持线路打开(连接),就会发生这种情况。但是,如果我在每次从ModBus CLient端轮询后断开ModBus服务器并让该PC重新连接,则CPU负载总是很低。什么是正常的?线路一直打开,或者连接和断开每个轮询?轮询频率为:在空闲模式下:2000ms,在活动模式下500ms。

答案 4 :(得分:0)

您需要添加日志以确保了解最新情况。

连接本身是否会导致问题?或者是连接时执行的工作?

日志可以帮助您缩小范围,并且您可以更改代码,以减少处理器耗尽。

使用AQTime或SamplingProfiler也会提前帮助你。

我个人总是默认为每个应用程序添加日志记录,其中很多都需要打开但是它在那里。一旦它在现场的软件你永远不知道什么可能改变,只需打开日志可以节省你很多时间