OPC-клиент на Lazarus
Модератор: Модераторы
OPC-клиент на Lazarus
Имеется ли у кого-нибудь опыт создания OPC-клиента на Lazarus?
В Delphi все просто: импорт библиотеки типов с gbhda_aw.dll (для OPC HDA), gbda_aut.dll или OPCDAAuto.dll (для OPC DA), дальнейшее - дело техники.
Возможно ли реализовать OPC-клиент на Lazarus?
В Delphi все просто: импорт библиотеки типов с gbhda_aw.dll (для OPC HDA), gbda_aut.dll или OPCDAAuto.dll (для OPC DA), дальнейшее - дело техники.
Возможно ли реализовать OPC-клиент на Lazarus?
С синхронным чтением разобрался:
Не могу понять, как делать асинхронное через созданный OLE-объект.
Необходимо обрабатывать событие DataChange из DIOPCGroupEvent, но как это сделать?
Lazarus 0.9.29 FPC 2.4.3 Win32
Код: Выделить всё
var
opcServer, opcGroup, opcItem1: variant;
isConnected: boolean = False;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not isConnected then
begin
try
opcServer := CreateOleObject('OPC.Automation');
opcServer.Connect('Advantech.ADAM.1');
opcGroup := opcServer.OPCGroups.Add('TestGroup');
opcItem1 := opcGroup.OPCItems.AddItem('Simulation.Group1.Tag1', 1);
isConnected := True;
Label1.Caption := 'Connected';
except
on E: Exception do
ShowMessage(E.ClassName + ': ' + UTF8Encode(E.Message));
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if isConnected then
begin
try
opcItem1.Read(1);
Label2.Caption := VarToStr(opcItem1.Value);
except
on E: Exception do
ShowMessage(E.ClassName + ': ' + UTF8Encode(E.Message));
end;
end;
end;
Не могу понять, как делать асинхронное через созданный OLE-объект.
Необходимо обрабатывать событие DataChange из DIOPCGroupEvent, но как это сделать?
Lazarus 0.9.29 FPC 2.4.3 Win32
Разобрался.
Объявил интерфейсы IOPCServer, IOPCGroups, IOPCGroup, OPCItems, OPCItem,
диспинтерфейсы DIOPCServer, DIOPCGroupEvent, создал класс для обработки событий
TOPCDataCallback = class(TInterfacedObject, IUnknown, IDispatch).
Создаю OLE-объект и подключаюсь таким образом:
Отключение:
События OLE-объекта обрабатываю в TOPCDataCallback.Invoke.
Кстати: одна из причин, почему в Lazarus не работают файлы импорта библиотек типов,
созданные в Delphi / Turbo Delphi, это практически пустой файл oleserver.pp.
Lazarus 0.9.29 FPC 2.5.1 Win32
Объявил интерфейсы IOPCServer, IOPCGroups, IOPCGroup, OPCItems, OPCItem,
диспинтерфейсы DIOPCServer, DIOPCGroupEvent, создал класс для обработки событий
TOPCDataCallback = class(TInterfacedObject, IUnknown, IDispatch).
Создаю OLE-объект и подключаюсь таким образом:
Код: Выделить всё
testServer := CreateOleObject('OPC.Automation') as DIOPCServer;
testServer.Connect('Advantech.ADAM.1', EmptyParam);
testGroup := testServer.OPCGroups.Add('TestGroup') as IOPCGroup;
opcItem1 := testGroup.OPCItems.AddItem('Simulation.Group1.Tag1', 1);
opcDataCallback := TOPCDataCallback.Create;
Container := testGroup as IConnectionPointContainer;
OleCheck(Container.FindConnectionPoint(IID_IOPCDataCallback,
ConnectionPoint));
OleCheck(ConnectionPoint.Advise(opcDataCallback as IUnknown, Cookie));
testGroup.Set_IsSubscribed(True);
testGroup.Set_IsActive(True);
testGroup.Set_UpdateRate(1000);
Код: Выделить всё
ConnectionPoint.UnAdvise(Cookie);
созданные в Delphi / Turbo Delphi, это практически пустой файл oleserver.pp.
Lazarus 0.9.29 FPC 2.5.1 Win32
-
vinceducat
- незнакомец
- Сообщения: 3
- Зарегистрирован: 24.07.2010 20:13:55
Hi
With chance i find this forum sorry (i just speak english or french)
il would use lazarus to create a opc client.
is someone could help me...
is it possible to uses the opclient project find on opcconnet.com ? and translate it ...
is someone got a working project ...
where to find OPCDAAuto.dll
thanks ....
send me our answer in MP..
With chance i find this forum sorry (i just speak english or french)
il would use lazarus to create a opc client.
is someone could help me...
is it possible to uses the opclient project find on opcconnet.com ? and translate it ...
is someone got a working project ...
where to find OPCDAAuto.dll
thanks ....
send me our answer in MP..
il would use lazarus to create a opc client.
is someone could help me...
is it possible to uses the opclient project find on opcconnet.com ? and translate it ...
is someone got a working project ...
Информации, приведенной выше, более чем достаточно для создания рабочего OPC-клиента.
where to find OPCDAAuto.dll
OPCDAAuto.dll входит в OPC DA Auto 2.02 Merge Module (opcfoundation.org),
а также поставляется со многими OPC-серверами.
Ну и конечно, можно поискать по ftp.
Альтернатива: Graybox OPC DA Auto Wrapper (gbda_aut.dll).
Lazarus 0.9.29 FPC 2.5.1 Win32
-
vinceducat
- незнакомец
- Сообщения: 3
- Зарегистрирован: 24.07.2010 20:13:55
thank for your reply but could you write it in english please
thank for your reply but could you write it in english please
I do not speak english. Use a translator.
Lazarus 0.9.29 FPC 2.5.1 Win32
-
vinceducat
- незнакомец
- Сообщения: 3
- Зарегистрирован: 24.07.2010 20:13:55
it's ok i success to connect an opc serveur and read some value ....
alex_rainМожно пример по подробнее, что значит объявил интерфейс, интерфейсы разные бывают
