Может ли моя программа использовать Indy 10 на сайте клиента, если я написал ее для использования Indy 9? - PullRequest
1 голос
/ 02 февраля 2011

Я написал программу на Delphi 7 (включает компонент ModBus, который использует Indy). На моей машине он использует Indy 9 и работает нормально. Хорошо связывается с другими машинами по протоколу ModBus. Однако, когда программа запускается на другом компьютере, загрузка процессора составляет 90-100%. К сожалению, эта машина не в моем офисе, а "на другом конце света". Как я могу узнать, использует ли эта машина Indy 9 или Indy 10? И, кроме того, если он работает на Indy 10, может ли это быть проблемой или это очень маловероятно?

Ответы [ 5 ]

4 голосов
/ 02 февраля 2011

Окончательный ответ: Нет

Если вы компилируете свою программу с помощью indy 9, даже если используете пакеты, она должна использовать INDY 9 для запуска. AFAIK, нет никакого способа скомпилировать исполняемый файл с использованием INDY 9 и использовать INDY 10 во время выполнения, даже если вы хотите, и ни в коем случае случайно.

1 голос
/ 02 февраля 2011

Чтобы найти основную причину, вы можете подготовить тестовое приложение, которое выполнит последовательность действий, таких как открытие / закрытие соединений.Если он запрашивает у пользователя подтверждение («Продолжить? Y / n») перед продолжением, пользователь может проверять загрузку ЦП для каждого шага, чтобы обнаружить критическую операцию.

1 голос
/ 02 февраля 2011

Чтобы узнать, что вызывает высокую загрузку процессора, вы можете попробовать профилировщик, например AQTime или SamplingProfiler .

Это даст вам методы, которые работают большую часть времени. Тогда вы сможете узнать, что является причиной проблемы.

В качестве альтернативы вы можете добавить запись в приложение.

0 голосов
/ 20 февраля 2012

вам нужно добавить журналы, чтобы быть уверенным, что вы знаете, что происходит.

это проблема связана с самим соединением?или это работа выполняется при подключении?

Журналы помогут вам сузить эту задачу, и вы сможете изменить свой код, чтобы он был менее загружен процессором.

с использованием AQTime или SamplingProfiler, что также предполагает ранее, поможет вам.

лично я всегда добавляю логирование в каждое приложение по умолчанию, многие из них требуют включения, но оно есть.После того как программное обеспечение установлено на сайте, вы никогда не знаете, что может измениться, и простое включение журналов может сэкономить вам много времени

0 голосов
/ 08 февраля 2011

Спасибо за ответы. Я не думаю, что это проблема Indy, хотя. На моем четырехъядерном ПК загрузка процессора также возрастает с 1-2% до приблизительно. 25%. Это произойдет, если я буду держать линию открытой (подключена). Однако если я отключаю сервер ModBus после каждого опроса со стороны клиента ModBus и позволяю этому ПК повторно подключаться, загрузка ЦП всегда низкая Что нормально? Если линия постоянно открыта, или подключаться и отключаться для каждого опроса? Частота опроса: в режиме ожидания: 2000 мс, в активном режиме 500 мс.

...