Определение классов для хранения информации об устройстве

Можно хотеть хранить больше информации об устройстве или формате, чем о IDeviceInfo и IDeviceFormat объекты разрешают. Один из способов сделать это - определить новый класс, содержащий эту дополнительную информацию. Затем в вашем адаптере создайте экземпляр объекта этого класса и сохраните его в данных адаптера IDeviceInfo или IDeviceFormat объекты. Использование данных адаптера является хорошим способом передать важную информацию вокруг вашего адаптера, потому что IDeviceInfo и IDeviceFormat объекты передаются в другие функции адаптера.

Использование данных адаптера является трехэтапным процессом:

  1. Задайте класс для хранения информации об устройстве или формате. Дополнительные сведения см. в разделе «Определение устройства или Формата информационного Класса».

  2. Создайте экземпляр объекта этого класса в адаптере. Используйте конструктор, заданный для вашего класса.

  3. Сохраните объект в данных адаптера 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());