Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: ТРМ148 + owen_io.dll + C#

  1. #1

    Lightbulb owen_io.dll + C#

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

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

    Задача:

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

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

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

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

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

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

  2. #2

    По умолчанию

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

  3. #3

    Thumbs up

    Цитата Сообщение от bango Посмотреть сообщение
    Надо было тему называть по другому, а то получается кривое название.
    Изменил на "owen_io.dll + C#", но в дереве всё равно осталось прежнее название.
    Ладно, посмотрим на ответы ;-)
    P.S. Я думаю при желании модераторы смогут изменить название темы
    Последний раз редактировалось eupsychian; 22.06.2010 в 21:20.

  4. #4

  5. #5

    Smile

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    Задача минимум: ВЫПОЛНЕНА
    Работоспособный (из коробки) пример (на C#) вызова функций открытия-закрытия порта и считывания данных с каналов.


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

    Но, я так понял, что это пример для МДВВ.
    Пытался запустить код при работе с ТРМ148. Выбивало следующую ошибку (см. скриншот)


    Адаптировал вышеизложенный код. Для работы с оперативными параметрами ТРМ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

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

    Не подскажете в чём же незадача ?
    Последний раз редактировалось eupsychian; 23.06.2010 в 23:39.

  6. #6

    По умолчанию

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

  7. #7

    Thumbs up

    Цитата Сообщение от дмитрий егоренков Посмотреть сообщение
    ну умножьте на 100 и все дела...
    Так и сделал. Спасибо за помощь

  8. #8

    По умолчанию

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

  9. #9

    По умолчанию

    Привет, подскажите пожалуйста хочу включить на мдвв 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("Неверный формат значения или индекса.");
    }

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

  10. #10

    По умолчанию

    Мужики, что ни каких соображений нет.

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •