exponenta event banner

Создание экземпляра объекта адаптера

Каждый адаптер должен включать createInstance() функция. Обработчик вызывает эту функцию для создания экземпляра объекта класса адаптера. Этот раздел включает следующие темы:

Предлагаемый алгоритм

Алгоритм для createInstance() функция проста: вызовите конструктор класса адаптера, чтобы создать экземпляр объекта класса адаптера и вернуть дескриптор объекту. Движок передает эти аргументы адаптеру createInstance() функция. createInstance() функция принимает три аргумента:

imaqkit::IAdaptor* createInstance(imaqkit::IEngine* engine,  
                      imaqkit::DeviceInfo* deviceInfo, 
                                const char* FormatName) 

Эти аргументы описаны в следующей таблице. Ваш адаптер createInstance() функция должна возвращать дескриптор IAdaptor объект.

Аргумент

Цель

engine

Обращение к IEngine объект, позволяющий адаптеру взаимодействовать с механизмом.

deviceInfo

Обращение к IDeviceInfo объект, представляющий характеристики конкретного устройства. Этот объект будет одним из IDeviceInfo объекты, созданные в getAvailHW() функция.

formatName

Вектор символов, указывающий имя видеоформата, поддерживаемого устройством, или полный путь к файлу конфигурации устройства. Если указан формат, он должен быть одним из форматов, представленных IDeviceFormat объекты, созданные в getAvailHW() функция.

Реализация конструктора класса адаптеров

Поскольку создается код, вызывающий конструктор класса адаптера, можно определить аргументы, принятые конструктором класса адаптера. Как минимум, конструкторы адаптеров должны принимать дескриптор к IEngine объект, представляющий соединение между модулем и адаптером. Это определяется IAdaptor суперкласс. Адаптер использует этот дескриптор для доступа к функциям механизма для упаковки кадров изображения и возврата их в механизм.

В дополнение к этому обязательному аргументу, многие адаптеры также принимают два других аргумента

  • Обращение к IDeviceInfo объект, указывающий устройство, к которому требуется подключиться

  • Символьный вектор, задающий требуемый формат источника получения или полный путь к файлу конфигурации устройства (также известный как файл камеры)

Это те же аргументы, переданные адаптеру createInstance() функция.

Предлагаемый алгоритм

Требования устройства получения изображений определяют, что должен делать конструктор класса. Конструкторы классов обычно выполняют задачи, которые класс должен выполнять только один раз, например

Пример

В следующем примере показан createInstance() функция, создающая экземпляр объекта класса MyDeviceAdaptor.

imaqkit::IAdaptor* createInstance(imaqkit::IEngine* engine, 
                          imaqkit::IDeviceInfo* deviceInfo,
                                         char* formatName) {

// Instantiate an object of your IAdaptor-derived class

   imaqkit::IAdaptor* adaptor = new 
                  MyDeviceAdaptor(engine,deviceInfo,formatName);

   return  adaptor;
}

Реализация деструктора класса адаптеров

Этот деструктор вызывается при каждом удалении связанного объекта ввода видео в программном обеспечении MATLAB ®.

delete(vid);

Деструктор для класса не может принимать параметры или возвращать значение. Класс адаптера как производный класс должен содержать деструктор, а деструктор должен быть объявлен как виртуальный.

virtual ~MyAdaptor();

Предлагаемый алгоритм

Дизайн класса адаптера и требования устройства получения изображения определят, какие задачи должен выполнять деструктор класса. Класс должен содержать деструктор, даже если он является пустой реализацией. Некоторые примеры задач, которые может выполнять деструктор:

Пример

В этом примере показана скелетная реализация деструктора. Более полный пример см. в разделе Класс демонстрационного адаптера.

MyAdaptor::~MyAdaptor(){

}