Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.03.2012, 16:15
Nautilus Nautilus вне форума
Новичок
 
Регистрация: 07.02.2012
Сообщения: 53
Репутация: 10
По умолчанию Разгадка функций из библиотек

Добрый день! Господа, подскажите, пожалуйста, как узнать из библиотеки нужную мне функцию.
Постановка задачи: считывание/ запись данных (тэгов) из/в программируемый контроллер Unitronics.
Исходные данные:
1. Есть ПЛК Unitronics.
2. Есть OPC-Server.
3. Есть библиотека к OPC-Server "UniOpcWriteReq.dll"
4. При помощи программы DLLExport Viewer я прочитал 4 имеющиеся функции (DllCanUnloadNow , DllGetClassObject, DllregisterServer и DllUnregisterServer).
Вопросы:
1. Какую из функций мне использовать для обмена с ПЛК?
(по идее должны быть функции, непосредственно связаны с именами GetTag/ SetTag , а таких не вижу...)
Спасибо.
Ответить с цитированием
  #2  
Старый 11.03.2012, 16:50
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Судя по наличию функций DllregisterServer и DllUnregisterServer библиотеку нужно зарегисть с помощью Regsrv32.exe.
Затем в программе делаем CreateOleObject и пользуемся.
Наверное так...
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
Nautilus (13.03.2012)
  #3  
Старый 11.03.2012, 18:45
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

стандартный экспорт ActiveX Library:
Код:
library Project1;

uses
  ComServ;

exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;

{$R *.RES}

begin
end.

выложи на обменник где-то. либо сам попробуй Import Type Library.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Nautilus (13.03.2012)
  #4  
Старый 11.03.2012, 23:48
Nautilus Nautilus вне форума
Новичок
 
Регистрация: 07.02.2012
Сообщения: 53
Репутация: 10
По умолчанию

Т.е. вставив данный код в свой проект, я "увижу" дополнительные функции для связи с тэгами?



Выложу библиотеку (навсяк случай )
Вложения
Тип файла: 7z UniOpcWriteReq.7z (3.3 Кбайт, 3 просмотров)
Ответить с цитированием
  #5  
Старый 12.03.2012, 04:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Nautilus
Т.е. вставив данный код в свой проект, я "увижу" дополнительные функции для связи с тэгами?
Выложу библиотеку (навсяк случай )

Импортировав библиотеку, как ActiveX (COM-объект), ты получишь исходник, описывающий некоторый класс, который содержит методы для работы с контроллером. Просто добавляешь этот исходик в свой проект и работаешь с ним как с любым другим COM-объектом.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Nautilus (13.03.2012)
  #6  
Старый 12.03.2012, 09:34
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

импорт библиотеки типов дал следующее:
Код:
  _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;
Вложения
Тип файла: rar UniOpcWriteReq.rar (3.1 Кбайт, 2 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Nautilus (13.03.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025