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

Введение

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

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

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

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

RshSoftwareRU.png

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

Загрузка объекта с интерфейсом IRshDevice осуществляется с помощью класса фабрики. Каждая библиотека абстракции верхнего уровня (dll файл, имя этого файла обычно соответствует названию устройства, например LA-2USB.dll) содержит статическую фабрику классов с интерфейсом IRshFactory, которая может быть экспортирована из dll стандартными средствами Windows API (LoadLibrary, GetProcAddress).
Получив объект фабрики, можно вызвать метод IRshFactory::CreateInstance(), и инстанцировать объект с интерфейсом IRshDevice, который позволяет управлять непосредственно устройством.

Для удобства работы был создан специальный класс RshDllClient для работы с динамическими библиотеками, который позволяет получить объект IRshDevice вызовом всего одного метода - RshDllClient::GetDeviceInterface(), а также содержит ряд других удобных методов.

Интерфейс IRshDevice

Методы интерфейса IRshDevice:

Следует отметить, что до момента подключения к реальному устройству (вызов метода IRshDevice::Connect()) созданный фабрикой объект класса IRshDevice не обладает всей информацией о конкретном подключенном устройстве, так как многие динамические библиотеки поддерживают сразу несколько ревизий одного устройства (например, ЛА-2USB12 и ЛА-2USB14).
Поэтому получение информации об устройстве (Метод IRshDevice::Get()) лучше производить уже после подключения. Исключение представляет собой информация, которая не зависит от наличия устройства в системе, например версия библиотеки абстракции (RSH_GET_LIBRARY_VERSION_STR), путь к файлу библиотеки (RSH_GET_LIBRARY_PATH) и другая подобная информация.

Процесс работы с устройством (АЦП) примерно следующий:

  1. Получение объекта IRshDevice (для этого удобно использовать методы класса RshDllClient)
  2. Подключение к устройству с помощью метода IRshDevice::Connect()
  3. Настройка параметров работы устройства с помощью метода IRshDevice::Init() и одной из структур инициализации:
  4. Запуск сбора данных с помощью метода IRshDevice::Start()
  5. Ожидание готовности данных - метод IRshDevice::Get() с параметром RSH_GET_WAIT_BUFFER_READY_EVENT
  6. Вызов метода IRshDevice::Stop() (опционально)
  7. Получение данных с помощью метода IRshDevice::GetData()
  8. ...
  9. Выгрузка библиотеки (RshDllClient.Free()).

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