Можно хотеть хранить больше информации об устройстве или формате, чем о 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());