Библиотека RshUniDriver  SDK 2.1
Документация по программированию
 Указатель Структуры данных Файлы Функции Переменные Перечисления Элементы перечислений Макросы Страницы
Документация по программированию устройств ЗАО "Руднев-Шиляев"

Введение

ЗАО "Руднев-Шиляев" выпускает широкий спектр устройств для сбора данных, устройств цифрового вввода-вывода, осциллографов, генераторов сигнала и др.

Все эти устройства различаются по своим характеристикам, иногда очень значительно. Но, тем не менее, для управления всеми устройствами используется единый унифицированный интерфейс IRshDevice, который позволяет, используя сравнительно небольшое число методов, получить доступ ко всему спектру функций каждого устройства.

Структура программного обеспечения ЗАО "Руднев-Шиляев"

Иерархическа схема программного обеспечения (для операционных систем семейства Windows) приведена на рисунке:

RshSoftwareRU.png

Каждое устройство использует системный драйвер, а так же несколько библиотек абстракции, одна из которых (самого верхнего уровня) реализует интерфейс IRshDevice.

Библиотека RshUniDriver

Библиотека RshUniDriver реализует еще один уровень абстракции и позволяет работать с устройствами, не используя ООП, шаблоны и сложные структуры данных. Фактически, используя данную библиотеку можно писать программы в любой среде программирования, которая позволяет осуществить экспорт функций из динамической библиотеки. Все функции экспортируются из библиотеки RshUniDriver напрямую, в качестве параметров используются простые типы данных.

В данном документе функции RshUniDriver описываются с использованием языка C.

Список функций библиотеки (с описаниями)

В списке функций содержатся аналоги методов интерфейса IRshDevice, а также дополнительные вспомогательные функции (создание буферов данных, получение описаний ошибок и т.д.).

Типичный сценарий использования библиотеки следующий:

  1. Загрузка библиотеки абстракции устройства (подключение к драйверу). Для выполнения данной операции используется функция UniDriverGetDeviceHandle(). На данном этапе не происходит обращения к "железу" - загружается только необходимый код из библиотеки абстракции устройства. После выполнения функции можно проверить поддержку различных возможностей устройства(функция UniDriverIsCapable() ), а также получить различные статические параметры библиотеки - например, версию файла (функция UniDriverGet(), или аналоги - UniDriverLVGetUInt(), UniDriverLVGetChar() и другие).
  2. Подключение к устройству - функция UniDriverConnect(). При вызове этой функции происходит подключение к устройству. Если функция успешно выполнена, устройство подключено и полностью готово к работе.
    С помощью функции UniDriverGet() можно получить специфические данные, которые зависят от наличия устройтсва в системе - например, полное имя устройства (RSH_GET_DEVICE_NAME_VERBOSE), разрядность АЦП (RSH_GET_DEVICE_DATA_BITS), максимальную частоту дискретизации (RSH_GET_DEVICE_MAX_FREQUENCY) и другие.
  3. Инициализация параметров сбора (генерации) - заполнение одной из структур инициализации ( URshInitDMA, URshInitMemory, URshInitPort, URshInitDAC, URshInitGSPF, URshInitVoltmeter) и вызов функции UniDriverInit(). После успешного вызова данной функции устройство будет запрограммировано на работу с выбранными параметрами.
  4. Один или несколько циклов сбора данных - запуск (вызов функции UniDriverStart()), ожидание готовности (вызов функции UniDriverGet()) с параметром RSH_GET_WAIT_BUFFER_READY_EVENT ), остановка (вызов функции UniDriverStop(), данный шаг не используется в непрерывном режиме), получение данных (вызов функции UniDriverGetData()).
  5. Выгрузка библиотеки абстракции - функция UniDriverCloseDeviceHandle().