Показано с 1 по 3 из 3

Тема: текущее значение счетчика си 30!!!!

  1. #1

    По умолчанию текущее значение счетчика си 30!!!!

    Добрый День!
    Использую Библиотеку owen_io.dll и подключаю ее в свой проект в среде
    c++ builder. Необходимо получить Текущее значение счетчика СИ 30 в физических единицах.

    При статическом подключении owen_io.h и компиляции проекта была выведена следующая ошибка:
    [Linker Error] [...]\owen_io.LIB contains invalid OMF record, type 0x21 (possibly COFF).

    Google дал ответ в виде: The library is of the wrong type. Use coff2omf.exe, located in CBuilder/bin, to convert it to the correct type. После конвертирования вышеуказанного LIB файла проект скомпилировался и начал работать.

    Текущее значение счетчика получаю без проблем но только для беззнаковых целых чисел:
    ReadUInt(16,ADRTYPE_8BIT,"Ctr",pulses, -1);

    А его значение в физических единицах в виде числа с плавающей запятой
    никак вытащить не удается. Пробовал все три функции из библиотеки owen_io следующим образом:

    1) res = ReadFloat24(16, ADRTYPE_8BIT, "CEU", angle, -1);
    функция выполняется успешно, но постоянно выдает очень маленькое число в экспоненциальном виде -45 степени

    2) res = ReadStoredDotS(16, ADRTYPE_8BIT, "CEU", angle, -1);
    функция выполняется успешно, но постоянно выдает 0

    3) res = ReadIEEE32(16, ADRTYPE_8BIT, "CEU", 60,angle, -1);
    функция выполняется успешно, но постоянно выдает число такое же как в пункте 1.

    Попробовал использовать функцию, которая считывает знаковое целое число
    - ReadSInt(16,ADRTYPE_8BIT,"Ctr",pulses, -1);
    функция выполняется успешно, но возвращается нуль, странная реакция - только одна из перечисленных функций - ReadUInt дает правильное значение, но оно к сожалению не отображает знак важный для использования энкодера, когда он вращается в обратную сторону.

    Подскажите Пожалуйста, Как решить проблему? Заранее Благодарен.
    Последний раз редактировалось smizrakhy; 08.12.2010 в 18:28.

  2. #2

    По умолчанию

    Похоже у нас ошибка в функции readsint. Будем исправлять, но это потребует времени. Можно попробовать использовать функцию OwenIO и разобрать поле данных.

  3. #3

    По умолчанию проблему решил

    Воспользовался советом Ильи Глана и попробовал использовать универсальную функцию обмена с приборами OwenIO.

    Более того, нашел на форуме удачный пример использования данной функции, в котором реализовано чтение целочисленного знакового числа http://www.owen.ru/forum/showthread....ghlight=OwenIO

    Таким образом проблема решена.

Ваши права

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