![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Добрый день! Господа, подскажите, пожалуйста, как узнать из библиотеки нужную мне функцию.
Постановка задачи: считывание/ запись данных (тэгов) из/в программируемый контроллер Unitronics. Исходные данные: 1. Есть ПЛК Unitronics. 2. Есть OPC-Server. 3. Есть библиотека к OPC-Server "UniOpcWriteReq.dll" 4. При помощи программы DLLExport Viewer я прочитал 4 имеющиеся функции (DllCanUnloadNow , DllGetClassObject, DllregisterServer и DllUnregisterServer). Вопросы: 1. Какую из функций мне использовать для обмена с ПЛК? (по идее должны быть функции, непосредственно связаны с именами GetTag/ SetTag , а таких не вижу...) Спасибо. |
#2
|
||||
|
||||
![]() Судя по наличию функций DllregisterServer и DllUnregisterServer библиотеку нужно зарегисть с помощью Regsrv32.exe.
Затем в программе делаем CreateOleObject и пользуемся. Наверное так... Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
Nautilus (13.03.2012)
|
#3
|
||||
|
||||
![]() стандартный экспорт ActiveX Library:
Код:
library Project1; uses ComServ; exports DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer; {$R *.RES} begin end. выложи на обменник где-то. либо сам попробуй Import Type Library. Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Nautilus (13.03.2012)
|
#4
|
|||
|
|||
![]() Т.е. вставив данный код в свой проект, я "увижу" дополнительные функции для связи с тэгами?
Выложу библиотеку (навсяк случай ![]() |
#5
|
|||
|
|||
![]() Цитата:
Импортировав библиотеку, как ActiveX (COM-объект), ты получишь исходник, описывающий некоторый класс, который содержит методы для работы с контроллером. Просто добавляешь этот исходик в свой проект и работаешь с ним как с любым другим COM-объектом. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Nautilus (13.03.2012)
|
#6
|
||||
|
||||
![]() импорт библиотеки типов дал следующее:
Код:
_clsWriteRequest = interface(IDispatch) ['{9E481700-31AB-4CB8-B976-53BBDAC225E9}'] procedure Set_Done(Param1: WordBool); safecall; function Get_Done: WordBool; safecall; procedure Set_Request(const Param1: WideString); safecall; function Get_Request: WideString; safecall; procedure Set_Seccess(Param1: WordBool); safecall; function Get_Seccess: WordBool; safecall; procedure Set_Value(Param1: OleVariant); safecall; function Get_Value: OleVariant; safecall; property Done: WordBool read Get_Done write Set_Done; property Request: WideString read Get_Request write Set_Request; property Seccess: WordBool read Get_Seccess write Set_Seccess; property Value: OleVariant read Get_Value write Set_Value; end; Код:
TclsWriteRequest = class(TOleServer) т.е. работать примерно так: Код:
uses UniOpcWriteReq, ... var clsWriteRequest: TclsWriteRequest; begin clsWriteRequest:=TclsWriteRequest.Create(Self); try // clsWriteRequest.Done; // clsWriteRequest.Request; // clsWriteRequest.Seccess; // clsWriteRequest.Value; finally clsWriteRequest.Free; end; end; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Nautilus (13.03.2012)
|