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

Тема: Owen_io.dll и CriticalSection

  1. #1
    Пользователь
    Регистрация
    16.11.2012
    Адрес
    Хабаровск
    Сообщений
    3

    По умолчанию Owen_io.dll и CriticalSection

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

    Есть софт для работы приборов ОВЕН посредством Owen_io.dll

    Архитектура следующая:
    1. "Своя" DLL, предоставляющая остальным частям софта доступ к owen_io.dll через функции-обертки.
    2. Часть софта читающая приборы через "свою" DLL и визуализирующая результат.

    Чтение в п.2 осуществляется циклически в потоке (Thread) по следующему алгоритму для каждого канала каждого прибора:
    1. Открыли порт
    2. Прочли нужный канал
    3. Закрыли порт
    4. Задержка (Sleep) для потока на 100мс.

    Все работало стабильно и без сбоев.

    Понадобилось добавить запись в приборы по требованию конечного пользователя из "визуализирующей" части.

    Алгоритм:
    1. В любой момент времени пользователь указывает, что и куда записать, нажимает кнопку в окне программы.
    2. Через обертку в "своей" DLL вызывается соответствующая функция записи из owen_io.dll

    Для синхронизации запросов на запись была ведена CriticalSection? т.о. алгоритм опроса стал:
    1. Вошли в CriticalSection
    2. Открыли порт
    3. Прочли нужный канал
    4. Закрыли порт
    5. Вышли из CriticalSection
    6. Задержка (Sleep) для потока на 100мс.

    Соответственно, в момент записи:
    1. EnterCriticalSection
    2. WriteXXXX
    3. LeaveCriticalSection

    Теперь визуализирующая программа может только открывать и закрывать порт. На все другие операции (чтение/запись) возникает nErr с кодом "B", если конкретно: "Прибор вернул nErr: B"

    Выходит, использование CriticalSection влияет на работоспособность owen_io.dll?
    Если да, то как тогда лучше синхронизировать операции чтения записи?


    PS: Используется OWENIO_API_NEW. При OWENIO_API_OLD библиотека работать отказывается. Среда Delphi XE2.
    Последний раз редактировалось Антон Волков; 17.06.2013 в 03:29.

  2. #2

    По умолчанию

    "Используется OWENIO_API_OLD. При NEW библиотека работать отказывается."это не понял я разбирался с библиотеками работаю Builder 6 и owen_io.dll.

  3. #3
    Пользователь
    Регистрация
    16.11.2012
    Адрес
    Хабаровск
    Сообщений
    3

    По умолчанию

    Используется OWENIO_API_OLD. При NEW библиотека работать отказывается
    Перепутал. Исправил в исходном посте.

    разбирался с библиотеками работаю Builder 6 и owen_io.dll
    Это не совсем в тему.
    Delphi XE2 от Builder 6 отличается разительно. Хотя бы тем, что в XE2 юникод по умолчанию.

    "Доработка напильником" интерфейсного модуля owen_io.pas заключалась в замене всех PChar на PAnsiChar. Также пришлось добавить немного для корректного преобразования ошибок в строки.

    Код был на несколько раз перепроверен на предмет ошибок типизации и алгоритмических огрехов. Все в порядке.

    Главный вопрос: Что такое "Прибор вернул nErr: B" из LastErrorToString? В описании библиотеки этот код отсутствует. В интерфейсном модуле такой константы тоже нет. И как можно победить эту ошибку?

  4. #4

    По умолчанию

    Какие приборы опрашиваются программой? Поскольку в протоколе нет значения 0x0B, то неплохо бы выяснить что все-таки передает прибор. Подключить какой-нибудь portmon. Еще вроде Есть должна быть возможность диагностического вывода в консоль, правда, в старом Delphi она не работала. Включить ее можно функцией SetDbgIndication().

Похожие темы

  1. АС4 owen_io.dll
    от xvasiax в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 17.06.2012, 15:09
  2. ПЛК-100 и owen_io.dll
    от xvs в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.05.2012, 18:15
  3. owen_io.dll + VB6
    от mastech в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 16.08.2011, 12:27
  4. owen_io.dll
    от Arkady в разделе Помощь Разработчикам
    Ответов: 8
    Последнее сообщение: 27.07.2007, 07:36
  5. owen_io.dll
    от Vladimir в разделе Помощь Разработчикам
    Ответов: 4
    Последнее сообщение: 27.04.2007, 15:13

Ваши права

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