![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||