![]() |
Rsh API
SDK 2.1
Документация по программированию
|
ЗАО "Руднев-Шиляев" выпускает широкий спектр устройств для сбора данных, устройств цифрового вввода-вывода, осциллографов, генераторов сигнала и др.
Все эти устройства различаются по своим характеристикам, иногда очень значительно. Но, тем не менее, для управления всеми устройствами используется единый унифицированный интерфейс IRshDevice, который позволяет, используя сравнительно небольшое число методов, получить доступ ко всему спектру функций каждого устройства.
Иерархическая схема программного обеспечения (для операционных систем семейства Windows) приведена на рисунке:
Каждое устройство использует системный драйвер, а так же несколько библиотек абстракции, одна из которых (самого верхнего уровня) реализует интерфейс IRshDevice.
Загрузка объекта с интерфейсом IRshDevice осуществляется с помощью класса фабрики. Каждая библиотека абстракции верхнего уровня (dll файл, имя этого файла обычно соответствует названию устройства, например LA-2USB.dll) содержит статическую фабрику классов с интерфейсом IRshFactory, которая может быть экспортирована из dll стандартными средствами Windows API (LoadLibrary, GetProcAddress).
Получив объект фабрики, можно вызвать метод IRshFactory::CreateInstance(), и инстанцировать объект с интерфейсом IRshDevice, который позволяет управлять непосредственно устройством.
Для удобства работы был создан специальный класс RshDllClient для работы с динамическими библиотеками, который позволяет получить объект IRshDevice вызовом всего одного метода - RshDllClient::GetDeviceInterface(), а также содержит ряд других удобных методов.
Методы интерфейса IRshDevice:
Следует отметить, что до момента подключения к реальному устройству (вызов метода IRshDevice::Connect()) созданный фабрикой объект класса IRshDevice не обладает всей информацией о конкретном подключенном устройстве, так как многие динамические библиотеки поддерживают сразу несколько ревизий одного устройства (например, ЛА-2USB12 и ЛА-2USB14).
Поэтому получение информации об устройстве (Метод IRshDevice::Get()) лучше производить уже после подключения. Исключение представляет собой информация, которая не зависит от наличия устройства в системе, например версия библиотеки абстракции (RSH_GET_LIBRARY_VERSION_STR), путь к файлу библиотеки (RSH_GET_LIBRARY_PATH) и другая подобная информация.
Процесс работы с устройством (АЦП) примерно следующий:
Примеры работы с конкретными устройствами, реализацию основных алгоритмов сбора данных,
генерации сигналов и работы с цифровыми портами, а также дополнительные примеры собраны в каталоге примеров .