Добрый день уважаемые форумчане!
Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни. Общение на форуме ОРС фундейшн привело к тому, что обанружил несколько ошибок в их исходных кодах и описаниях, но так и ни капли не приблизило меня к решению моей проблемы. А проблема в следующем.
Структура сервера выглядит следующим образом:
1) Враппер реализующий COM интерфейсы, написана на С++
2) Утилита конфигурирования, C#
3) Собственно сам сервер, реализованный в виде библиотеки загружаемой враппером
Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...
Здравствуйте, -Phaust-, Вы писали:
P>Добрый день уважаемые форумчане! P>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation.
Привет. А что нужно от OPC сервера? насколько сложным должно быть взаимодействие?
В свое время я просто написал на С++ библиотечку с базовым функционалом, использовал ее в managed С++ обертке (не CLI, это еще в 2003 студии было).
И уже потом делал что нужно в дотнете.
Потому что работать с COM из шарпа мне не шибко понравилось, в плюсах с ATL это полегче, как мне кажется.
Но мне нужно было только читать значения по запросу и подписываться на изменения, ни управлять, ни писать даже не нужно было.
Re[2]: Вопрос по OPC .NET API (от OPC Foundation).
Здравствуйте, _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).
Здравствуйте, -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 сервера? Я то просто соединялся с сервером и читал данные.
Если проблемы с подгрузкой дллки, особенно после пересборки, проверьте битность\зависимости от фреймворка, включите логирование в механизме загрузки сборок.
Re: Вопрос по OPC .NET API (от OPC Foundation).
От:
Аноним
Дата:
06.08.12 08:28
Оценка:
Здравствуйте, -Phaust-, Вы писали:
P>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни.
... P>Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...
Может ты не положил ей нужные файлы без которых оно не работает?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, -Phaust-, Вы писали:
P>>Прошу откликнуться тех кто работал с OPC .NET API от OPC Foundation. Не могу подключить свою dll сервера к их врапперу, хоть ты тресни. А>... P>>Я написал механизмы получения данных,начал встраивать их в библиотеку сервера,а потом отлаживать. Собрал проект. Оказалось, что враппер в упор не хочет загружать мою библиотеку. Проверил на уже собранных файлах от поставщика, сам враппер и утилита конфигурирования собранные мной-работают с сервером-примером. Ок, попробовал собрать библиотечку сервера примера из исходников, без моих правок-та же картина, враппер ее не подгружает, зависает. Хотя с библиотечкой из redistributable пакета-работает. Уже 4ый день сушу голову над этим всем...
А>Может ты не положил ей нужные файлы без которых оно не работает? А>
Здравствуйте, _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).
Здравствуйте, _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, Вы писали:
_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-, Вы писали:
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>зависает в ожидании. Видать, или что-то у меня не так собирается или же я не делаю каких то шагов по регистрации враппера (описание данного процесса там аховое)
HELP HELP HELP