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

Тема: Ac3 + Mba

  1. #1

    По умолчанию Ac3 + Mba

    Здравствуйте,

    это вопрос, помню, поднимался раньше, но к сожалению в истории форума я его не нашел, поэтому пишу еще раз.

    Через АС3 подключен МВА, к которому подключены термопары. Конфигуратором для МВА удается получить адекватные значения температуры.

    При чтении данных с помощью библиотеки owen_io.dll возникает ошибка -2 ( ERR_NO_RESOURCE -2 // попытка использовать неинициализированный ресурс (например неоткрытый порт) ).

    Порт открывается следующей командой (как в примере для АС3 поставялемом вместе с бибилиотекой):
    int result = open_port (COM_1, spd_9600, prty_NONE, databits_8,
    stopbit_1, RS485CONV_MANUAL
    );
    if ( result < 0 ) {
    std :: cout << "OWEN Port opening error\n";
    return 0;
    }

    Настройки СОМ - порта правильные не уверен только в последнем параметре, он взят из примера. Возвращаемое значение не меньше нуля, т.е. из этого можно заключить, что порт открывается нормально (?).

    Данные читаются командой:

    int time;
    float value;
    result = read_ieee32 (16, 0,"rEAd", value, time, -1);

    В данном случае команда возвращает код ошибки -2. базовый адрес МВА - 16.

    За подсказку в каком направлении искать ошибку был бы очень благодарен,

    с уважением,
    С.А.

  2. #2

    По умолчанию

    на вид все правильно. вы не из разных потоков эти функции зовете?

    и скачайте свежую версию библиотеки с нашего сайта -- http://www.owen.ru/device/64305906

  3. #3

    По умолчанию

    Спасибо, Вам большое за ответ - а Вы знаете, действительно из разных. В головном потоке открываю порт, а в подчиненном читаю данные. Библиотеку качал недавно.

    Раньше помню были проблемы с последним параметром ф-ии readieee он варьировался между 1 и -1.

    Хотелось бы еще спросить описание ошибки -2 ( ERR_NO_RESOURCE -2 // попытка использовать неинициализированный ресурс (например неоткрытый порт) ). Может ли тут речь идти еще о каком нибудь порте, кроме того который открываеся
    open_port (COM_1, spd_9600, prty_NONE, databits_8,
    stopbit_1, RS485CONV_MANUAL) ?

    с уважением
    А.С.

  4. #4

    По умолчанию

    библиотеку лучше обновить -- у вас она старая. ошибка говорит о том, что порт вообще не был открыт.

    Работа с одним портом из разных потоков (и с разными портами в одном потоке) поддерживается новой моделью библиотеки. Выбрать модель можно функцией SetApiMode(OWENIO_API_NEW). После этого можно выбирать активный порт функцией SelectPort(). Но я бы рекомендовал просто открывать порт в том потоке, где он используется.

  5. #5

    По умолчанию

    спасибо. вам большое, несмотря на то, что я какчал библиотеку 2 недели назад, я скачаю ее ще раз как вы советутет и конечно попробую открывать порт в том же потоке, где и читаю.

    о результатах сообщусь в понедельник,

    с уважением,
    а.с.

  6. #6

    По умолчанию

    Здравствуйте,

    действительно, прошу прощения, я был не прав библиотека новая - понятнее и лаконичнее, спасибо большое.

    Однако при ее испытании возникли следующие трудности - когда я открываю порт такой же командой как и в примере

    int res = OpenPort(COM_1, spd_9600, prty_NONE, databits_8, stopbit_1, RS485CONV_MANUAL);

    if ( res != ERR_OK ) {
    std :: cout << "Ошибка открытия порта." << std :: endl;
    return;
    }

    Приложение вываливается в исключение, со стандартным окном, в котором предлагается отправить отчет Микрософт об ошибке. Со старой версией такого не было.

    Библиотеку линкую к MinGW командой g++ ... -lowen_io.dll.

    Параллельно также линкуется еще библиотека для реализации многопоточности тем же способом - с ней все нормально. Никаких ошибок линковки в отношении библиотеки owen_io не случается.

    спасибо большое за помощь,
    с уважением,

    Сергей А.

  7. #7

    По умолчанию

    самый простой выход такой: в файле owen_io.h заменяете строчку

    #define OWEN_EXPORT __declspec(dllimport)

    на

    #define OWEN_EXPORT

    перед именами функций добавляете подчеркивание: _OpenPort.

    соответственно в программе так же используете _OpenPort().

Ваши права

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