Чтобы создать заглушку класса адаптера, выполните следующие действия.
Добавьте файл заголовка 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 адаптера. Выберите параметр «Решение сборки» в меню «Сборка».
Запустите программное обеспечение 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.