Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 03.08.12 13:38
Оценка:
Добрый день уважаемые форумчане!
Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни. Общение на форуме ОРС фундейшн привело к тому, что обанружил несколько ошибок в их исходных кодах и описаниях, но так и ни капли не приблизило меня к решению моей проблемы. А проблема в следующем.
Структура сервера выглядит следующим образом:
1) Враппер реализующий COM интерфейсы, написана на С++
2) Утилита конфигурирования, C#
3) Собственно сам сервер, реализованный в виде библиотеки загружаемой враппером
Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...
opc .net api
Re: Вопрос по OPC .NET API (от OPC Foundation).
От: _Dreamer Россия  
Дата: 06.08.12 07:32
Оценка:
Здравствуйте, -Phaust-, Вы писали:

P>Добрый день уважаемые форумчане!

P>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation.

Привет. А что нужно от OPC сервера? насколько сложным должно быть взаимодействие?
В свое время я просто написал на С++ библиотечку с базовым функционалом, использовал ее в managed С++ обертке (не CLI, это еще в 2003 студии было).
И уже потом делал что нужно в дотнете.

Потому что работать с COM из шарпа мне не шибко понравилось, в плюсах с ATL это полегче, как мне кажется.
Но мне нужно было только читать значения по запросу и подписываться на изменения, ни управлять, ни писать даже не нужно было.
Re[2]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 06.08.12 07:44
Оценка:
Здравствуйте, _Dreamer, Вы писали:
_D>Привет. А что нужно от OPC сервера? насколько сложным должно быть взаимодействие?
Брать и писать на С++ теперь не вариант:
1) Взаимодействие с "железом" уже написано на С#
2) На плюсах последних года 3 ничего не писал, вспоминать — потрачу много времени
А нужно-ничего особенного, предоставить доступ к некой информации, порядка от 100 до 1500 тегов, в зависимости от случая. Вопрос в том, что когда я использовал .Net api для xml da сервера все было нормально, думал что для DA ничего особо более сложного не будет. Не тут то было. Документации никакой, в той что есть-ошибка на ошибке, в коде-тоже ошибки. Что такое COM Class Factory-тоже видать разработчики не знали
http://www.opcfoundation.org/forum/viewtopic.php?t=4901&sid=9879452ba70fa16940004a58b14b2d9c — вот подробности моего общения на их форуме.
Крутой совет использовать месседж боксы для отладки... Я в шоке, короче говоря
Re[3]: Вопрос по OPC .NET API (от OPC Foundation).
От: _Dreamer Россия  
Дата: 06.08.12 08:11
Оценка:
Здравствуйте, -Phaust-, Вы писали:

P>Брать и писать на С++ теперь не вариант:

P>1) Взаимодействие с "железом" уже написано на С#
P>2) На плюсах последних года 3 ничего не писал, вспоминать — потрачу много времени
P>А нужно-ничего особенного, предоставить доступ к некой информации, порядка от 100 до 1500 тегов, в зависимости от случая. Вопрос в том, что когда я использовал .Net api для xml da сервера все было нормально, думал что для DA ничего особо более сложного не будет. Не тут то было. Документации никакой, в той что есть-ошибка на ошибке, в коде-тоже ошибки. Что такое COM Class Factory-тоже видать разработчики не знали
P>http://www.opcfoundation.org/forum/viewtopic.php?t=4901&sid=9879452ba70fa16940004a58b14b2d9c — вот подробности моего общения на их форуме.
P>Крутой совет использовать месседж боксы для отладки... Я в шоке, короче говоря

Может тогда попробовать opcdotnet с кодепрожекта? Позволяет эта библиотечка сделать то, что Вам надо?
Как я понял, нужно загрузить свою библиотеку прямо в составе стороннего OPC сервера? Я то просто соединялся с сервером и читал данные.

из платных есть еще http://www.advosol.us/pc-1-3-opcdanet.aspx, должен быть триал.

Если проблемы с подгрузкой дллки, особенно после пересборки, проверьте битность\зависимости от фреймворка, включите логирование в механизме загрузки сборок.
Re: Вопрос по OPC .NET API (от OPC Foundation).
От: Аноним  
Дата: 06.08.12 08:28
Оценка:
Здравствуйте, -Phaust-, Вы писали:

P>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни.

...
P>Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...

Может ты не положил ей нужные файлы без которых оно не работает?
OpcComnCtrls.dll
OpcNetApi.Com.dll
OpcNetApi.dll
OpcNetApi.xml
OpcNetApi.Xml.dll
OpcRcw.Ae.dll
OpcRcw.Comn.dll
OpcRcw.Da.dll
OpcRcw.Dx.dll
OpcRcw.Hda.dll
Re[2]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 06.08.12 09:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, -Phaust-, Вы писали:


P>>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни.

А>...
P>>Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...

А>Может ты не положил ей нужные файлы без которых оно не работает?

А>
А>OpcComnCtrls.dll
А>OpcNetApi.Com.dll
А>OpcNetApi.dll
А>OpcNetApi.xml
А>OpcNetApi.Xml.dll
А>OpcRcw.Ae.dll
А>OpcRcw.Comn.dll
А>OpcRcw.Da.dll
А>OpcRcw.Dx.dll
А>OpcRcw.Hda.dll
А>

Проверил, библиотечки все на месте, в папке с библиотекой сервера. Может еще какие то варианты возможны?
Re[4]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 06.08.12 09:52
Оценка:
Здравствуйте, _Dreamer, Вы писали:

_D>Здравствуйте, -Phaust-, Вы писали:


P>>Брать и писать на С++ теперь не вариант:

P>>1) Взаимодействие с "железом" уже написано на С#
P>>2) На плюсах последних года 3 ничего не писал, вспоминать — потрачу много времени
P>>А нужно-ничего особенного, предоставить доступ к некой информации, порядка от 100 до 1500 тегов, в зависимости от случая. Вопрос в том, что когда я использовал .Net api для xml da сервера все было нормально, думал что для DA ничего особо более сложного не будет. Не тут то было. Документации никакой, в той что есть-ошибка на ошибке, в коде-тоже ошибки. Что такое COM Class Factory-тоже видать разработчики не знали
P>>http://www.opcfoundation.org/forum/viewtopic.php?t=4901&sid=9879452ba70fa16940004a58b14b2d9c — вот подробности моего общения на их форуме.
P>>Крутой совет использовать месседж боксы для отладки... Я в шоке, короче говоря

_D>Может тогда попробовать opcdotnet с кодепрожекта? Позволяет эта библиотечка сделать то, что Вам надо?

_D>Как я понял, нужно загрузить свою библиотеку прямо в составе стороннего OPC сервера? Я то просто соединялся с сервером и читал данные.

_D>из платных есть еще http://www.advosol.us/pc-1-3-opcdanet.aspx, должен быть триал.


_D>Если проблемы с подгрузкой дллки, особенно после пересборки, проверьте битность\зависимости от фреймворка, включите логирование в механизме загрузки сборок.

Можно поподробнее как его включить? Раньше мне не приходилось пользоваться подобным механизмом.
Re[4]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 06.08.12 11:10
Оценка:
Здравствуйте, _Dreamer, Вы писали:

_D>Здравствуйте, -Phaust-, Вы писали:


P>>Брать и писать на С++ теперь не вариант:

P>>1) Взаимодействие с "железом" уже написано на С#
P>>2) На плюсах последних года 3 ничего не писал, вспоминать — потрачу много времени
P>>А нужно-ничего особенного, предоставить доступ к некой информации, порядка от 100 до 1500 тегов, в зависимости от случая. Вопрос в том, что когда я использовал .Net api для xml da сервера все было нормально, думал что для DA ничего особо более сложного не будет. Не тут то было. Документации никакой, в той что есть-ошибка на ошибке, в коде-тоже ошибки. Что такое COM Class Factory-тоже видать разработчики не знали
P>>http://www.opcfoundation.org/forum/viewtopic.php?t=4901&sid=9879452ba70fa16940004a58b14b2d9c — вот подробности моего общения на их форуме.
P>>Крутой совет использовать месседж боксы для отладки... Я в шоке, короче говоря

_D>Может тогда попробовать opcdotnet с кодепрожекта? Позволяет эта библиотечка сделать то, что Вам надо?

_D>Как я понял, нужно загрузить свою библиотеку прямо в составе стороннего OPC сервера? Я то просто соединялся с сервером и читал данные.

_D>из платных есть еще http://www.advosol.us/pc-1-3-opcdanet.aspx, должен быть триал.


_D>Если проблемы с подгрузкой дллки, особенно после пересборки, проверьте битность\зависимости от фреймворка, включите логирование в механизме загрузки сборок.

А по поводу других библиотек-не вариант. Во первых, дополнительные деньги и время. Во вторых, у меня есть самостоятельная реализация DA сервера на C#,но довольно урезанная, не сколько проблема была с СОМ когда ее писал, как в понимании логики вызовов, что за чем идет и какая логика во всем этом. Документация по стандарту это еще та жесть
Re[5]: Вопрос по OPC .NET API (от OPC Foundation).
От: _Dreamer Россия  
Дата: 06.08.12 11:31
Оценка:
Здравствуйте, -Phaust-, Вы писали:

P>Можно поподробнее как его включить? Раньше мне не приходилось пользоваться подобным механизмом.


вот ссылка, утилита должна показать ошибки поиска и загрузки библиотек — http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx
Re[6]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 06.08.12 12:09
Оценка:
Здравствуйте, _Dreamer, Вы писали:

_D>Здравствуйте, -Phaust-, Вы писали:


P>>Можно поподробнее как его включить? Раньше мне не приходилось пользоваться подобным механизмом.


_D>вот ссылка, утилита должна показать ошибки поиска и загрузки библиотек — http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx

За утилиту спасибо. Провел еще экспериментов. Установил собранные бинарники от ОРС фундейшн еще раз. Попробовал подсунуть свою длл-и чудо, работает. Проблема все же в враппере.
Вот здесь вот
// initialize security. 
   hResult = CoInitializeSecurity( 
       cSecurity, 
       -1, 
       NULL, 
       NULL, 
       RPC_C_AUTHN_LEVEL_PKT, 
       RPC_C_IMP_LEVEL_IMPERSONATE, 
       NULL, 
       EOAC_NONE, 
       NULL); 

    if (FAILED(hResult)) 
    { 
      // security may have already been initialized when registering classes from config file. 
      if (hResult != RPC_E_TOO_LATE) 
      { 
           return; 
      } 
    }

hresult=-2147417831
И хотя по коду все вроде как идет дальше, но потом в


 TRY 
    { 
        // enter message loop. 
       MSG cMsg; 
       while (GetMessage(&cMsg, 0, 0, 0)) DispatchMessage(&cMsg); 
    } 
    CATCH 
    { 
    }

зависает в ожидании. Видать, или что-то у меня не так собирается или же я не делаю каких то шагов по регистрации враппера (описание данного процесса там аховое)
Re[7]: Вопрос по OPC .NET API (от OPC Foundation).
От: -Phaust-  
Дата: 08.08.12 08:30
Оценка:
Здравствуйте, -Phaust-, Вы писали:

P>Здравствуйте, _Dreamer, Вы писали:


_D>>Здравствуйте, -Phaust-, Вы писали:


P>>>Можно поподробнее как его включить? Раньше мне не приходилось пользоваться подобным механизмом.


_D>>вот ссылка, утилита должна показать ошибки поиска и загрузки библиотек — http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx

P>За утилиту спасибо. Провел еще экспериментов. Установил собранные бинарники от ОРС фундейшн еще раз. Попробовал подсунуть свою длл-и чудо, работает. Проблема все же в враппере.
P>Вот здесь вот
P>
P>// initialize security. 
P>   hResult = CoInitializeSecurity( 
P>       cSecurity, 
P>       -1, 
P>       NULL, 
P>       NULL, 
P>       RPC_C_AUTHN_LEVEL_PKT, 
P>       RPC_C_IMP_LEVEL_IMPERSONATE, 
P>       NULL, 
P>       EOAC_NONE, 
P>       NULL); 

P>    if (FAILED(hResult)) 
P>    { 
P>      // security may have already been initialized when registering classes from config file. 
P>      if (hResult != RPC_E_TOO_LATE) 
P>      { 
P>           return; 
P>      } 
P>    } 
P>

P>hresult=-2147417831
P>И хотя по коду все вроде как идет дальше, но потом в

P>

P> TRY 
P>    { 
P>        // enter message loop. 
P>       MSG cMsg; 
P>       while (GetMessage(&cMsg, 0, 0, 0)) DispatchMessage(&cMsg); 
P>    } 
P>    CATCH 
P>    { 
P>    } 

P>

P>зависает в ожидании. Видать, или что-то у меня не так собирается или же я не делаю каких то шагов по регистрации враппера (описание данного процесса там аховое)
HELP HELP HELP
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.