|
опять OPC... |
|
Или я совсем дурной или ниче не понимаю (что почти одно и то же Я использую исходники с сайта www.opcconnect.com конкретно - delphiopcclient. Вроде все понятно и просто, пример нормально компилируется, но во время работы выдает ошибки типа "незарегистрированный класс". Я проверил, оказалось, что ненайден интерфейс IDataObject из ... ActiveX.pas - как так? Может, его надо как-то зарегистрировать??? В файле объявлен его GUID, но в реестре я такого не нашел. И остальные интерфейсы из этого файла также отсутствуют в реестре. Может мне кто-нить объяснить это? Прошу прощения за возможную тупость вопроса. |
|
|
русский Иван
|
|
![]() |
|
|
Я сам скачал данный компонент, но еще не проверял его. В файле readmi-client.html есть такое примечание: You will also need the Delphi conversion of the OPC custom interfaces, available separately from the Delphi page at OPC Programmers' Connection.
Возможно поможет. Желаю успеха. |
|
![]() |
|
|
Это было бы слишком просто =) Я тоже читал этот файл, все необходимое (кроме упомянутых файлов еще нужна библиотека dll с сайта www.opcfoundation.com) скачал... Опять же не находится не тот интерфейс, что описан в библиотеке OPC, а из файла ActiveX.pas, то есть он должен был бы работать и при использовании в каких-нибудь других приложениях, связанных с ActiveX, я так думаю... А дополнительные файлы определяют новые интерфейсы для OPC и только, старые типа IDataObject не затрагиваются. Вот такие у нас пироги. |
|
|
русский Иван
|
|
![]() |
|
|
Снова я... Каким-то чудом разобрался с этими интерфейсами =) Теперь другая проблема: В примере сервера есть такие функции как : TAsyncIO2.HandleChange TAsyncIO2.HandleRead TAsyncIO2.HandleWrite Они в принципе своем похожи, потому я их привел вместе. А дело в следующем коде: pVariants:=POleVariantArray(CoTaskMemAlloc(itemCount*sizeof(OleVariant))); // переменная типа POleVariant размером на itemCount элементов ... // какой-то код, заполнение и использование pVariants... if pVariants <> nil then CoTaskMemFree(pVariants); Вот тут пояляются ошибки. Вообще при попытке присвоения переменной pVariants какого-то значения - РАЗ. Где-то в статьях прочитал, что надо при работе в вариантными типами использовать дополнительно Initialize(pVariants,sizeof(OleVariant)); Но тогда появляется ошибка при выполнении строки CoTaskMemFree(pVariants); Добавление строки типа Finalize(pVariants) не помогает... Не знаю, что неправильного??? |
|
|
русский Иван
|
|
![]() |
|
|
А можно уточнить, каким чудом с интерфейсами разобрался? Дело в том, что у меня такая же ошибка вылезала не со всеми клиентами, а только с версии 1.0 ОРС. Я смотрел спецификацию и нашел там строчку, типа IDataObject - obsolete (эт, по-моему класс в IGroup, может и ошибаюсь, конечно...) А вообще, щаз пользуюсь Fastwell UniOPC Server (в смысле, начинаю разбираться, и пока получается). - Там надо только длл-ку написать. Есть пример на сях, в делфи переносится без большого труда. |
|
|
просто Шурик
|
|
![]() |
|
|
kill, скинь, пожалуйста мне на мыло, saveliev_d@rambler.ru, исходник DLL-ки к UniOPC на сях? Только начинаю осваивать, понимаешь... |
|
![]() |
|
|
kill, а мне пожалуйста пример на DELPHI на gugoya@inbox.ru |
|
![]() |
|
|
to Serenum: писал на делфи, исходник на сях в примере к серверу to ivsergey: пошлю. |
|
|
просто Шурик
|
|
![]() |
|
|
Эх, давненько не залезал... Каким чудом разобрался - и сам не помню, вроде бы просто пошел другим путем (там было 2 способа получения данных от сервера) А насчет UniOPC - че енто за зверь? Тоже фри или один из полу-бесплатных продуктов? Только для серваков или и для клиентов? Как на нем пишется? Короче, стоит ли смотреть? Приму ссылки на исходники с благодарчиком... Заранее спасибо! |
|
|
русский Иван
|
|
![]() |
|
|
Fastwel Universal OPC Server - небесплатная прога, к которой нужно написать длл, который и будет отвечать за функциональность сервера. Только для серваков. Легко ломается. Ввиду необходимости использования только лицензионного ПО на моем предприятии я перешел на prOPC - для делфей библиотечка(и) такая(ие). Тоже небесплатная, но можно найти, если поискать. Где-то, где точно, не помню. |
|
|
просто Шурик
|
|
![]() |
|
Ответить
|
Страница 123> |
| Переход на форум | Права доступа на форуме ![]() Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |