PDA

Просмотр полной версии : Проблема при обращении к библиотеке owen_io.dll



SvLed
30.05.2014, 18:17
Здравствуйте!
Пишу программу для считывания данных с ТРМ138-Р при помощи преобразователь интерфейса Ethernet ЕКОН134. Всё подключено, порты настроены конфигуратором виртуальных портов. Программа Owen Process Manager считывает информацию, всё работает.
Мне нужно написать собственную программу, которая бы самостоятельно считывала и обрабатывала данные.
Операционная система Windows 7 64 bit; Visual basic 2010 Express.

Пример и библиотеку скачал с вашего сайта. При любой попытке обратиться к функциям библиотеки возникает ошибка с сообщением: "Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)".
Подскажите, в чём может быть проблема. Если можете, дайте пожалуйста рабочий пример VB net.
Свой проект прилагаю.

SvLed
02.06.2014, 15:07
Попробовал запустить пример на Delphi. Компилировал в Delphi 7. Запускал в Windows XP 32 bit и в Windows 7 64 bit. И там и там в момент обращения возникает та же проблема: "Ошибка загрузки библиотеки". Библиотека лежит в папке с программой.
В Windows XP пытался зарегистрировать библиотеку в системе командой regsvr32, вылезло сообщение что у неё не найдена точка входа.
Прошу помочь с проблемой.

SvLed
06.06.2014, 16:03
Я не понимаю, почему уже в более недели никто не отвечает на заданный мною вопрос. Здесь вообще есть кто-нибудь, кто занимается поддержкой продукта? У вас же все примеры выложены для тех сред в которых уже никто не пишет, потому что они морально устарели. С примерами ладно, их легко читать, их можно конвертировать. Но библиотека видимо тоже писалась 10 лет назад! Хотя даже в win XP 32 при попытке зарегистрировать библиотеку возникает ошибка. Ещё раз спрашиваю: может мне кто нибудь из поддержки дать РАБОЧИЙ пример на VB net или хотя бы на Delphi 7? Под рабочим примером я понимаю такой, который работает Windows 7 X64, и в котором хотя бы не возникает ошибок при любом обращении к библиотеке.

Вольд
06.06.2014, 17:09
С этими делами здесь глухо.

capzap
06.06.2014, 21:47
Так ради интереса спрошу, а ОПМ работает в этой же системе и не использует ли он эту же библиотеку. По большому то счету, требуется открыть порт и реализовать протокол

Вольд
07.06.2014, 14:07
Так ради интереса спрошу, а ОПМ работает в этой же системе и не использует ли он эту же библиотеку. По большому то счету, требуется открыть порт и реализовать протокол
Работать с портом через API-функции Windows довольно муторно.

capzap
07.06.2014, 17:02
Хм,я не дельфиец, пишу на яве,со 138трмки с года пятого снимаем показания каналов и проблем особых нет

Вольд
08.06.2014, 13:47
Хм,я не дельфиец, пишу на яве,со 138трмки с года пятого снимаем показания каналов и проблем особых нет
Ну и как на Java работа с COM-портом осуществляется ?

capzap
08.06.2014, 16:55
вариантов достаточно, библиотек только две, comm и rxtx, а уж реализаций...
Вот из открытой бибки по модбас в текстовом файле

Вольд
09.06.2014, 11:16
Я так понимаю, что платформа Java распространяется абсолютно бесплатно. Или я не прав ?

Дмитрий Егоренков
09.06.2014, 11:49
Библиотека 32-битная, приложение на VB.NET запускается как 64-битное, и при попытке загрузить библиотеку выдает ошибку. Достаточно завести в проекте конфигурацию для x86 вместо AnyCPU и будет вам счастье.

третий результат сверху при поиски текста ошибки в гугле все это объясняет: http://social.technet.microsoft.com/forums/ru-RU/bd0524f8-0a91-44f5-934a-66aefe143a38/-dll-c-c

PS регистрировать библиотеку совершенно бесполезно -- это не COM.

SvLed
09.06.2014, 18:30
Всем спасибо за ответы!
Дмитрий Егоренков, Вы наиболее правильно поняли мою проблему и оказались правы. Спасибо!
У меня были предположения, что дело в разрядности. Я перерыл все настройки Visual basic 2010 Express и не нашёл, где меняется конфигурация разрядности, поэтому пробовал запускать в Delphi на 32 разрядной машине, но и там не заработало, почему-не знаю. Поэтому я решил что проблема в чём-то другом и написал сюда.

Оказалось, что в версиях Express действительно проблемно поменять разрядность. Нужно открывать файл проекта блокнотом и править вручную. Вот инструкция с сайта Microsoft:
http://msdn.microsoft.com/en-gb/vstudio/aa718685.aspx
Пункт 1.44
Express Editions:
The VB and C# Express products do not expose the Target property inside the development environment. You will need to carefully modify the project file using a text or XML editor.
1. Close the project and/or solution
2. Select Open File from the File menu
3. Navigate to the project directory, and highlight the project file
4. Press the Open button, the project file should open in the XML editor
5. Locate the first <PropertyGroup> section and add the following line:
<PlatformTarget>x86</PlatformTarget>
1. Save the project file
2. Reopen the project and/or solution using Open Project/Solution from the File menu
3. Continue with development, debugging, and testing

Сделал согласно инструкции и программа перестала вылетать.

SvLed
09.06.2014, 19:14
Подскажите ещё, пожалуйста.

Открываю 2 COM порт функцией
OpenPort(1, -1, 0, 8, 2, 0)
Порт открывается, конфигуратор портов отображает подключение.

Пытаюсь считать данные с 3-го канала, и функция возвращает ошибку:
ReadIEEE32(16 + (3 - 1), 0, "rEAd", value, tm, -1)

Подскажите, что я не так делаю.

Настройки из конфигуратора ТРМ138 прилагаю.

Scream
09.06.2014, 23:28
Работать с COM портом еще проше из Delphi, есть Bcomport компонент, который настраивается мышкой, хорошая инструкция и не надо мучить API.
Много писал с этим компонентом на delphi 7 когдато. Реализовали протокол и веред

Дмитрий Егоренков
10.06.2014, 11:14
Ну, это в 2005 студии так было, а в VS2010 есть галочка, которая включает нужные настройки. По-английски это Options->Projects and Solutions->General->Show advanced build configurations.

SvLed
10.06.2014, 12:09
Дмитрий Егоренков, У меня не VS2010, а именно версия VB Express.
Scream, я тоже больше люблю Delphi, но из-за обстоятельств нужно писать на VB.

SvLed
10.06.2014, 13:06
Вроде заработало! Я неправильно указывал скорость.

Дмитрий Егоренков
10.06.2014, 16:30
Дмитрий Егоренков, У меня не VS2010, а именно версия VB Express.


так я о ней и писал.

SvLed
10.06.2014, 19:16
Ну, это в 2005 студии так было, а в VS2010 есть галочка, которая включает нужные настройки. По-английски это Options->Projects and Solutions->General->Show advanced build configurations.
Просто я понял под "VS2010" Visual Studio 2010. А Express - это бесплатная линейка продуктов.

У меня русифицированная версия, меню "Опции" у меня нет. "Проекты и решения" также отсутствуют во всех подпунктах.

Но да ладно, главное, что программа заработала, всем спасибо!