Вы можете сохранить больше информации об устройстве или формате, чем IDeviceInfo и IDeviceFormat объекты разрешают. Одним из способов этого является определение нового класса, содержащего эту дополнительную информацию. Затем в адаптере создайте экземпляр объекта этого класса и сохраните его в данных адаптера IDeviceInfo или IDeviceFormat объекты. Использование данных адаптера является хорошим способом передачи важной информации внутри адаптера, потому что IDeviceInfo и IDeviceFormat передаются другим функциям адаптера.
Использование данных адаптера представляет собой трехэтапный процесс:
Определите класс для хранения информации об устройстве или формате. Дополнительные сведения см. в разделе Определение класса информации об устройстве или формате.
Создайте экземпляр объекта этого класса в адаптере. Используйте конструктор, определенный для класса.
Сохранение объекта в данных адаптера IDeviceInfo или IDeviceFormat объект. Дополнительные сведения см. в разделе Хранение данных адаптера.
Класс, определяемый для хранения дополнительной информации об устройстве или формате, должен быть получен из IMAQinterface класс. Подкласс IMAQInterface класс гарантирует, что все освобождения памяти для этих классов будут направляться через механизм панели инструментов.
Пример такого класса см. в DemoDeviceFormat класс в демонстрационном адаптере, определенный в файле DemoDeviceFormat.h.
Сохранение вашего устройства или класса форматирования в данных адаптера IDeviceInfo или IDeviceFormat объект, используйте setAdaptorData() функция-член объекта.
Примечание
Объекты, хранящиеся в данных адаптера, автоматически уничтожаются при IDeviceInfo и IDeviceFormat объекты уничтожаются. После сохранения объекта в данных адаптера не пытайтесь уничтожить объекты самостоятельно.
Демонстрационный адаптер предоставляет пример, определяющий класс для хранения дополнительной информации о формате. Этот класс, с именем DemoDeviceFormatхранит информацию о формате, такую как ширина, высота и цветовое пространство. Следующий пример, взятый из демонстрационного адаптера, показывает, как создать экземпляр объекта этого производного класса, назначить значения элементам данных класса, а затем сохранить объект в данных адаптера IDeviceFormat объект.
DemoDeviceFormat* rgbFormatInfo = new DemoDeviceFormat(); rgbFormatInfo->setFormatWidth(demo::RGB_FORMAT_WIDTH); rgbFormatInfo->setFormatHeight(demo::RGB_FORMAT_HEIGHT); rgbFormatInfo->setFormatNumBands(demo::RGB_FORMAT_BANDS); rgbFormatInfo->setFormatColorSpace(imaqkit::colorspaces::RGB); deviceFormat->setAdaptorData(rgbFormatInfo);
Доступ к данным адаптера, хранящимся в IDeviceInfo или IDeviceFormat объект, используйте getAdaptorData() функция-член объекта.
В следующем примере, взятом из демонстрационного адаптера, показано, как извлечь данные адаптера из IDeviceFormat объект. В примере: selectedFormat является DemoDeviceFormat объект. Обратите внимание, что, потому что getAdaptorData() функция-член возвращает дескриптор IMAQInterface , необходимо привести возвращенный объект к определенному классу.
dynamic_cast<DemoDeviceFormat*>(selectedFormat->getAdaptorData());