PDA

Просмотр полной версии : ТРМ148 + owen_io.dll + C#



eupsychian
22.06.2010, 15:11
Всем доброго времени суток ;-)
Большая просьба помочь разобраться в проблеме (см.ниже). Много побегал по форуму и имею скудное представление о способе её решения.
Постараюсь быть краток...

Имеем:

ТРМ148
ОВЕН AC4 USB<->RS-485 переходник

Задача:

Необходимо написать приложение на C# для опроса восьмиканального пид-регулятора ТРМ-148 через протокол ОВЕН.

Способы решения:

Написать свою библиотеку (класс или др.)
Это представляется весьма затруднительным (ввиду необходимости хорошей подготовки по низкоуровневому программированию)
Использовать уже готовую библиотеку "owen_io.dll"

По вполне понятным причинам :) было принято решение использовать библиотеку "owen_io.dll".
Отрывки C# кода (найденные в разных уголках форума) так и не удалось привести в рабочее состояние. Все эти мытарства, в конце концов, заставили меня создать новую тему, т.к. в других темах очень хитро переплелись ирония, невежество и высокомерие. Поэтому просьба к вам (сотрудникам фирмы ОВЕН и программистам, кто сталкивался с данной проблемой) помочь в реализации хотя бы простенького консольного проекта в Visual Studio на C#. Задача минимум: работоспособный (из коробки) пример (на C#) вызова функций открытия-закрытия порта и считывания данных с каналов. Не сочтите меня наглым или бестактным типом из-за широкого размаха желаний, но я думаю, что поставленные мною вопросы волнуют многих, порою даже опытных программистов. Да и сама фирма ОВЕН должна быть заинтересована в качественной поддержке разработчиков. Поэтому я счёл необходимым внести следующие предложения (см. далее).

Предложения:

Можно было бы в этом топике собрать все те отрывочные знания, которые раскиданы по форуму по проблеме программирования по протоколу ОВЕН на C# (что-то наподобие FAQ или ЧаВо), чтобы и впредь люди не разбивали себе лоб в поиске решения.
Чётко и обстоятельно расписать о том, как вызывать и использовать наиболее полезные функции из библиотеки "owen_io.dll" на C#. В идеале можно было бы собрать информацию о вызове ВСЕХ функций, что потом позволило бы использовать накопленную информацию как неофициальное руководство по программированию. Считаю, что вопрос о сборе минимальное необходимой информации для начала реализации самого простенького проекта стоит весьма остро.
Поделиться мыслями по данной проблеме. Т.е. создать эдакий гибрид блога и форума. Хотя я очень сильно сомневаюсь что это предложение реализуемо :rolleyes:

Предложения по ведению темы:

Давайте постараемся не устраивать войны "умных" и "тупых", не разводить флуд и флейм, что так свойственно данному форуму. Мы ведь здесь собрались не для самоутверждения или осуждения чьих-то изъянов ;)
P.S. Давайте уважать друг друга.

bango
22.06.2010, 19:25
Можно было бы в этом топике собрать все те отрывочные знания, которые раскиданы по форуму по проблеме программирования по протоколу ОВЕН на C# (что-то наподобие FAQ или ЧаВо),
Надо было тему называть по другому, а то получается кривое название.
Первые шаги посмотри здесь. owen_io_lib
Атак в общем я на 100% с тобой согласен.
Я тоже бьюсь над одним проектом, не хватает только одного толкового совета.

eupsychian
22.06.2010, 21:13
Надо было тему называть по другому, а то получается кривое название.

Изменил на "owen_io.dll + C#", но в дереве всё равно осталось прежнее название.
Ладно, посмотрим на ответы ;-)
P.S. Я думаю при желании модераторы смогут изменить название темы ;)

Дмитрий Егоренков
23.06.2010, 11:12
http://owen.ru/forum/showpost.php?p=36608&postcount=12

eupsychian
23.06.2010, 21:09
http://owen.ru/forum/showpost.php?p=36608&postcount=12
Задача минимум: ВЫПОЛНЕНА
Работоспособный (из коробки) пример (на C#) вызова функций открытия-закрытия порта и считывания данных с каналов.

:) БОЛЬШОЕ СПАСИБО!:)

Но, я так понял, что это пример для МДВВ.
Пытался запустить код при работе с ТРМ148. Выбивало следующую ошибку (см. скриншот)
http://i7.fastpic.ru/big/2010/0623/08/56319c38939b5a99390bd1506eb3cf08.png

Адаптировал вышеизложенный код. Для работы с оперативными параметрами ТРМ148 вместо параметра r.OE (т.к. пример был для МДВВ) подставил в функцию параметр rd.rg как было указано в руководстве по эксплуатации ТРМ148:

IntPtr name = Marshal.StringToCoTaskMemAnsi("rd.rg");

Задача №2: ВЫПОЛНЕНА
Считывание данных из каналов ТРМ148.

Программа успешно считала данные...
Однако данные получаю уменьшенные в 100 раз...
1 - 0,2688074
2 - 0,2682894
3 - 0,2778908
4 - 0,269123
5 - 0,2689897
6 - 0,2689897
7 - 0
8 - 0

Реально это:
1 - 26,88074
2 - 26,82894
3 - 27,78908
4 - 26,9123
5 - 26,89897
6 - 26,89897
7 - 0
8 - 0

Подозреваю, что формат не совпадает. Благо, что не очень искажает. Но всё же хотелось бы знать почему так происходит...

Не подскажете в чём же незадача ?

Дмитрий Егоренков
24.06.2010, 00:19
ну умножьте на 100 и все дела. наверняка в приборе какой-нибудь множитель задан. не совпадал бы формат, числа были бы совсем другими.

eupsychian
24.06.2010, 00:30
ну умножьте на 100 и все дела...

Так и сделал. Спасибо за помощь :)

vutang
30.06.2010, 12:11
огромное спасибо за то, что выложили пример. очень помогло.

bango
09.09.2011, 10:17
Привет, подскажите пожалуйста хочу включить на мдвв 1 й выход адрес прибора 16
Вот код:

// выход1 МДВВ
private void butWriteROE_Click(object sender, EventArgs e)
{
try
{
int channel = 0;
float value = 1.0;

IntPtr name = Marshal.StringToCoTaskMemAnsi("r.OE");

ConnectionError res = (ConnectionError)NativeMethods.WriteIEEE32(
16 + channel - 1, 0, name, value, -1);

Marshal.FreeCoTaskMem(name);

if (res != ConnectionError.Ok)
MessageBox.Show("Ошибка записи r.OE: " + res.ToString());
}
catch (FormatException)
{
MessageBox.Show("Неверный формат значения или индекса.");
}

Пиши ошибку в чем проблема.

bango
09.09.2011, 19:24
Мужики, что ни каких соображений нет.

bango
19.09.2011, 15:57
Попробую еще пишет ошибку
Неверный формат значения или индекса
В чем проблема помогите плиз

bango
21.09.2011, 19:11
У меня такое ощущение, что этот вопрос надо задать разработчикам .dll
Под мва8 работает, под мдвв не работает.
Разработчики откликнитесь.

capzap
21.09.2011, 20:25
такими темпами скоро сами ответите на свой вопрос, уже не множко осталось :)

bango
21.09.2011, 20:36
такими темпами скоро сами ответите на свой вопрос
Я C# изучаю недавно и зашел в тупик и даже не знаю куда копать.
А меня уверяли что подходит dll без проблем