Автор Тема: plugin к recorder  (Прочитано 10413 раз)

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
plugin к recorder
« : 29.09.2016, 09:52:58 »
Необходимо создать plugin для Recorder на Delphi. Для начала решил повторить пример test2 из документации. DLL собрался успешно и подключился. Но как к нему обратиться? Форм, которы е есть в этом примере нигде не видно.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #1 : 29.09.2016, 10:32:51 »
Приветствую Вас на нашем форуме.
Форма открывается как отдельное окно не привязанное к окну Рекордер.




Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #2 : 29.09.2016, 10:45:17 »
Дело в том, что окно нигде не появляется.

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #3 : 29.09.2016, 10:49:37 »
Последовательность действий правильна?
1. Из рекордера подключаем DLL
2. Сохраняем конфигурацию
3. Перезапускаем рекордер.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #4 : 29.09.2016, 11:26:57 »
I Вариант с постоянной загрузкой

1. Запускаете Рекордер
2. Настройки -> Плагины -> Кнопка с желтой звездочкой
3. Добавить
4. Выбираете свой плагин, Ok
5. Выходите из Рекордера, можно без сохранения конфигурации, т.к. плагины не входят в состав общих настроек
6. Запускаете Рекордер

II Вариант с одноразовым запуском
1. Запускаете Рекордер
2. Настройки -> Плагины -> Кнопка с плюсом
3. Выбираете свой плагин, Загрузить
4. Закрывает окно настройки по Ok
5. НЕ выходите из Рекордера
6. Плагин загружен до выхода из Рекордер, на текущую сессию

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #5 : 29.09.2016, 11:44:57 »
То есть все было сделано правильно, но окно не появляется.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #6 : 29.09.2016, 12:13:06 »
Вы использовали первый вариант?
Тогда после перезапуска запуска Recorder посмотрите есть ли у вас загруженный плагин в списке запущенных

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #7 : 29.09.2016, 12:17:25 »
Пробовали и первый и второй варианты. В списке есть.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #8 : 29.09.2016, 12:24:26 »
Попробуйте загрузить исходную dll

Если у вас ее нет:
https://www.dropbox.com/s/3poxa9j5e05zedu/test2.dll?dl=0

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #9 : 06.10.2016, 10:41:50 »
Ваша DLL подключилась и сразу появилось окно, после этого подключилась и та, которая не была видна.
Спасибо.

Оффлайн Ярослав2

  • Новичок
  • *
  • Сообщений: 36
Re: plugin к recorder
« Ответ #10 : 09.10.2016, 17:32:50 »
А после выхода из рекордера который запускал плагин написанный на Дельфи ошибка всегда возникает?

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #11 : 10.10.2016, 09:55:30 »
Не всегда, только если в плагине что-то не так.
Важно чтобы по завершению работы плагин освободил все системные ресурсы: окна, объекты синхронизации, ссылки на связанные COM объекты и прочее.

Оффлайн Ярослав2

  • Новичок
  • *
  • Сообщений: 36
Re: plugin к recorder
« Ответ #12 : 10.10.2016, 17:32:06 »
А в примере который доступен для дельфи, что еще надо освободить, что бы ошибки не возникало?

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #13 : 10.10.2016, 17:53:49 »
Какой именно пример?
Их несколько. Например, те которые создают формы их не уничтожают при закрытии.

Оффлайн Ярослав2

  • Новичок
  • *
  • Сообщений: 36
Re: plugin к recorder
« Ответ #14 : 10.10.2016, 19:22:38 »
Пример test2
А разве код который в примере не удаляет созданную форму?

destructor TTestPlugin.Destroy;
begin
  FreeAndNil( FTestForm);
end;

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #15 : 11.10.2016, 14:56:05 »
Действительно код в примере должен удалять форму.
Тем не менее, если убрать из примера функции создания формы, а так же обращения к ней, падения на выходе прекращаются.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #16 : 11.10.2016, 15:05:06 »
В моем примере помог перенос кода удаления формы в метод close плагина

// Завершить работу плагина
function TTestPlugin.Close:  boolean; stdcall;
begin
   FreeAndNil(FTestForm);
   Result:= true;
end;

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #17 : 13.10.2016, 20:04:55 »
Запустил recorder на ком-е, не подключенном к оборудованию. Хотел на нем отладить plugin  на виртуальных тегах.
Но  у recorder-а неактивна кнопка "загрузить" (для  plugin).

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #18 : 14.10.2016, 11:58:48 »
Запустил recorder на ком-е, не подключенном к оборудованию. Хотел на нем отладить plugin  на виртуальных тегах.
Но  у recorder-а неактивна кнопка "загрузить" (для  plugin).

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

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #19 : 14.10.2016, 12:41:32 »
Виноват, думал по кнопке будет выбор директории из которой загрузится DLL.
Получил все тестовые DLL, они работают, кроме того, который предназначен для генерации виртуальных тегов. При его загрузке recorder падает без всяких сообщений.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #20 : 14.10.2016, 17:13:05 »
Получил все тестовые DLL, они работают, кроме того, который предназначен для генерации виртуальных тегов. При его загрузке recorder падает без всяких сообщений.
Посмотрю на следующей неделе

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #21 : 17.10.2016, 12:14:57 »
Новая версия recorder не падает, но и ничего не показывает после загрузки plugin-а   для генерации виртуальных тегов.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #22 : 17.10.2016, 14:30:28 »
Новая версия recorder не падает, но и ничего не показывает после загрузки plugin-а   для генерации виртуальных тегов.

В каком смысле ничего не показывает?
Я её собрал почти ничего не модифицируя.
Чтобы собралось пришлось добавить в   

uses
...
device in '..\interfaces\device.pas',
...

И последний параметр в вызове функции

pointer(FTag):= FIRecorder.CreateTag( PChar(VT_Name), LS_VIRTUAL, 0);

В результате работы создается канал "v_plg_tag" и в него кладутся данные.

Оффлайн trudonoshin

  • Новичок
  • *
  • Сообщений: 16
Re: plugin к recorder
« Ответ #23 : 17.10.2016, 15:29:51 »
Модуля device.pas  нет.
Строка pointer(FTag):= FIRecorder.CreateTag( PChar(VT_Name), LS_VIRTUAL, 0); при трансляции выдает ошибку
[Error] PluginClass.pas(171): Constant object cannot be passed as var parameter.
А не показывает - просто нет никаких результатов от запуска plugin'а.

Оффлайн BacCM

  • moderator
  • *****
  • Сообщений: 69
Re: plugin к recorder
« Ответ #24 : 17.10.2016, 15:58:15 »
Какая Дельфи используется?
Пришлите ваш вариант плагина.