Можно хотеть хранить больше информации об устройстве или формате, чем о IDeviceInfo и IDeviceFormat объекты разрешают. Один из способов сделать это - определить новый класс, содержащий эту дополнительную информацию. Затем в вашем адаптере создайте экземпляр объекта этого класса и сохраните его в данных адаптера IDeviceInfo или IDeviceFormat объекты. Использование данных адаптера является хорошим способом передать важную информацию вокруг вашего адаптера, потому что IDeviceInfo и IDeviceFormat объекты передаются в другие функции адаптера.
Использование данных адаптера является трехэтапным процессом:
Задайте класс для хранения информации об устройстве или формате. Дополнительные сведения см. в разделе «Определение устройства или Формата информационного Класса».
Создайте экземпляр объекта этого класса в адаптере. Используйте конструктор, заданный для вашего класса.
Сохраните объект в данных адаптера IDeviceInfo или IDeviceFormat объект. Для получения дополнительной информации см. раздел «Хранение данных адаптера».
Класс, который вы определяете для хранения дополнительной информации о устройстве или формате, должен быть получен из IMAQinterface класс. Подклассификация IMAQInterface класс гарантирует, что все исключения памяти для этих классов маршрутизируются через механизм тулбокса.
Пример такого класса см. в DemoDeviceFormat класс в демонстрационном адаптере, заданный в файле DemoDeviceFormat.h.
Чтобы сохранить ваше устройство или класс формата в данных адаптера IDeviceInfo или IDeviceFormat объект, используйте setAdaptorData() member function объекта.
Примечание
Объекты, которые вы храните в данных адаптера, автоматически уничтожаются, когда 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() member function объекта.
В следующем примере, взятом из демонстрационного адаптера, показано, как извлечь данные адаптера из IDeviceFormat объект. В примере selectedFormat является DemoDeviceFormat объект. Обратите внимание, что потому что getAdaptorData() Представителю функция возвращает указатель в IMAQInterface необходимо привести возвращенный объект к определенному классу.
dynamic_cast<DemoDeviceFormat*>(selectedFormat->getAdaptorData());