Чтобы создать тупиковую реализацию вашего класса адаптера, выполните эту процедуру:
Добавьте заголовочный файл 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.
Запустите 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.