Чтобы создать заглушку реализации вашего класса адаптера, выполните следующую процедуру:
Добавьте файл заголовка C++ к проекту адаптера C++. Этот файл заголовка будет содержать определение вашего класса адаптера. Вы можете назвать свой класс любым именем. В этом примере используется следующее соглашение об именовании:
vendor_name + adaptor
В данном примере заголовочный файл, содержащий определение класса адаптера, называется MyDeviceAdaptor.h
.
Скопируйте следующее определение класса в заголовочный файл. Этот класс адаптера содержит все виртуальные функции, заданные IAdaptor
абстрактный класс.
#include "mwadaptorimaq.h" // required header class MyDeviceAdaptor : public imaqkit::IAdaptor { public: // Constructor and Destructor MyDeviceAdaptor(imaqkit::IEngine* engine, const imaqkit::IDeviceInfo* deviceInfo, const char* formatName); virtual ~MyDeviceAdaptor(); // Adaptor and Image Information Functions virtual const char* getDriverDescription() const; virtual const char* getDriverVersion() const; virtual int getMaxWidth() const; virtual int getMaxHeight() const; virtual int getNumberOfBands() const; virtual imaqkit::frametypes::FRAMETYPE getFrameType() const; // Image Acquisition Functions virtual bool openDevice(); virtual bool closeDevice(); virtual bool startCapture(); virtual bool stopCapture(); };
Добавьте исходный файл C++ к проекту адаптера. Исходному файлу можно присвоить любое имя. Этот пример называет файл mydeviceadaptor.cpp
.
Скопируйте следующие реализации заглушек всех виртуальных функций адаптера в исходный файл C++.
#include "MyDeviceAdaptor.h" #include "mwadaptorimaq.h" // Class constructor MyDeviceAdaptor::MyDeviceAdaptor(imaqkit::IEngine* engine, const, imaqkit::IDeviceInfo* deviceInfo, const char* formatName):imaqkit::IAdaptor(engine){ } // Class destructor MyDeviceAdaptor::~MyDeviceAdaptor(){ } // Device driver information functions const char* MyDeviceAdaptor::getDriverDescription() const{ return "MyDevice_Driver"; } const char* MyDeviceAdaptor::getDriverVersion() const { return "1.0.0"; } // Image data information functions int MyDeviceAdaptor::getMaxWidth() const { return 640;} int MyDeviceAdaptor::getMaxHeight() const { return 480;} int MyDeviceAdaptor::getNumberOfBands() const { return 1;} imaqkit::frametypes::FRAMETYPE MyDeviceAdaptor::getFrameType() const { return imaqkit::frametypes::MONO8; } // Image acquisition functions bool MyDeviceAdaptor::openDevice() {return true;} bool MyDeviceAdaptor::closeDevice(){return true;} bool MyDeviceAdaptor::startCapture(){return true;} bool MyDeviceAdaptor::stopCapture(){return true;}
Добавьте ссылку на файл заголовка класса адаптера в файл, содержащий экспортированные функции, mydevice_exported_fcns.cpp
, созданный в разделе Использование экспортированных функций адаптера. Это необходимо, потому что createInstance()
экспортированная функция создает экземпляр объекта этого класса.
#include "MyDeviceAdaptor.h"
Отредактируйте шлейфные реализации createInstance()
функция, также в экспортированном исходном файле функций, mydevice_exported_fcns.cpp
. Сделайте функцию экземпляром объекта вашего класса адаптера, выделенного курсивом ниже. (В заглушке возвращается NULL
.)
void getDeviceAttributes(const imaqkit::IDeviceInfo* deviceInfo, const char* formatName, imaqkit::IPropFactory* devicePropFact, imaqkit::IVideoSourceInfo* sourceContainer, imaqkit::ITriggerInfo* hwTriggerInfo){ // Create a video source sourceContainer->addAdaptorSource("MyDeviceSource", 1); } imaqkit::IAdaptor* createInstance(imaqkit::IEngine* engine, imaqkit::IDeviceInfo* deviceInfo, char* formatName){ imaqkit::IAdaptor* adaptor = new MyDeviceAdaptor(engine,deviceInfo,formatName); return adaptor; }
Создайте DLL адаптера. Выберите опцию Build Solution в меню Build.
Запуск MATLAB® программное обеспечение.
Вызовите imaqhwinfo
функция. Обратите внимание, как адаптер с именем mydeviceimaq
, включен в список доступных адаптеров, возвращенных imaqhwinfo
. Если вы ранее не зарегистрировали DLL адаптера, зарегистрируйте адаптер в тулбоксе - см. «Регистрация адаптера в тулбоксе». Чтобы просмотреть более подробную информацию о вашем адаптере, позвоните imaqhwinfo
снова с этим синтаксисом:
dev_info = imaqhwinfo('mydeviceimaq');
Создайте объект входа видео для mydeviceimaq
адаптер, использование videoinput
функция.
Примечание
В то время как вы можете создать объект входа видео с помощью адаптера, вы не можете использовать его, чтобы получить видео с устройства. Для этого необходимо реализовать функции сбора классов адаптеров. Для получения дополнительной информации см. раздел «Получение Изображения Данных».
vid = videoinput('mydeviceimaq',1) Summary of Video Input Object Using 'MyDevice'. Acquisition Source(s): MyDeviceSource is available. Acquisition Parameters: 'MyDeviceSource' is the current selected source. 10 frames per trigger using the selected source. '640x480' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA.