| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > c# OPC Client |
| Автор: Alexander8111 30.6.2016, 11:30 |
| Уважаемые специалисты, - уже создал данную тему в разделе .Net, но вижу, что темы связанные с OPC тут так сказать периодически более активны, - поэтому повторю свой вопрос в данном разделе форума. ------------------------------------------------------------------------------------------------ В коде c# я подключаюсь к некому OPC серверу сети Bacnet (ID сервера JC.BNOPC). Данный код успешно подключается ко всем другим OPC серверам, которые мне приходилось использовать до этого, а в случае с этим сервером выдаются исключения: - The COM Server does not support the interface или - OPC.ResultIdException: E_Fail Исключения зависит от того какие dll я использую с сайта OPC foundation. Они собственно одинаковые (даты выпуска только разные) - это OpcNetApi.dll и OpcNetApi.Com.dll Колдовал много с настройками DCOM (так как гугл советует) - но все без толку. Ниже приложен скрин проблемы. Всем благодарен за помощь |
| Автор: jsharp36 1.7.2016, 22:45 |
| Побуду за капитана очевидность. Вряд ли здесь кто подробнее объяснит. Не работал никогда с этими серверами. Но Вам ясно пишет эксепшин - COM-сервер не поддерживает данный интерфейс. Т.е. у вас несовместимые дотнетовские dll с данным ком-сервером. Советы очень общие, не знаю, применимы в Вашем случае или нет - зависит от сложности кода-провайдера (на дотнете). Очень кратко. Вдруг кто не знает. COM-сервера представляют собой до-дотнетовский способ коммуникаций между разным кодом у майкрософта. Двоичный код выставляет наружу интерфейсы (подобные по сути, как интерфейсы в дотнете). Но какого-то серьезного механизма версионности там нет. Когда подключаетесь к такому серверу, подключаетесь на свой страх и риск, может случиться, что ваш код по сигнатурам вызова функций не совпадет. Что и случилось. Обычно для таких серверов пишут библиотеки на дотнете, которые уже вы используете. В этих библиотеках скрыт механизм вызовов com-сервера. Выход такой. 1. Искать адекватную вашему серверу библиотеку на дотнете. 2. Если 1 не получается, то найти исходники неправильной библиотеки на дотнете, разобраться и исправить под ваш COM-сервер, а до этого узнать, что за интерфейсы у вашего com-сервера. Извините, если пишу очевидности и ответ бесполезен. Вообще, на дотнете редко найдешь специалиста, который бы работал с com-серверами и понимает что это такое Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/c-OPC-Client-id5774d88aae2015be2c8b4567#findElement_E7045_5776c850ae20155d61935e03_0 |