主要内容

创建适配器类的存根实现

要创建适配器类的存根实现,请遵循以下步骤:

  1. 向适配器c++项目添加一个c++头文件。这个头文件将保存适配器类的定义。你可以给你的类起任何名字。本例使用了以下命名约定:

    vendor_name+适配器

    对于本例,命名了包含适配器类定义的头文件MyDeviceAdaptor.h

  2. 将以下类定义复制到头文件中。类定义的所有虚函数IAdaptor抽象类。

    #include " mwadaptorimack .h" //必需的头类MyDeviceAdaptor: public imaqkit::IAdaptor {public: //构造函数和析构函数MyDeviceAdaptor(imaqkit::IEngine* engine, const imaqkit::IDeviceInfo* deviceInfo, const char* formatName);虚拟~ MyDeviceAdaptor ();//适配器和镜像信息函数virtual const char* getDriverDescription() const;const char* getDriverVersion()getMaxWidth() constgetMaxHeight() const;getNumberOfBands() const;getFrameType() const;//图像采集函数virtual bool openDevice();虚拟bool closeDevice(); virtual bool startCapture(); virtual bool stopCapture(); };
  3. 向适配器项目添加一个c++源文件。您可以为源文件指定任何名称。这个例子为文件命名mydeviceadaptor.cpp

  4. 将以下所有适配器虚函数的存根实现复制到c++源文件中。

    #include "MyDeviceAdaptor.h" #include " mwadaptorimack .h" //类构造函数MyDeviceAdaptor::MyDeviceAdaptor(imaqkit::IEngine* engine, const, imaqkit::IDeviceInfo* deviceInfo, const char* formatName):imaqkit::IAdaptor(engine){} //类析构函数MyDeviceAdaptor::~MyDeviceAdaptor(){} //设备驱动信息函数const char* MyDeviceAdaptor::getDriverDescription() const{返回"MyDevice_Driver";} const char* MyDeviceAdaptor::getDriverVersion() const{返回“1.0.0”;} //图像数据信息函数int MyDeviceAdaptor::getMaxWidth() const{返回640;}int MyDeviceAdaptor::getMaxHeight() const{返回480;}int MyDeviceAdaptor::getNumberOfBands() const{返回1;}imaqkit::frametypes::FRAMETYPE MyDeviceAdaptor::getFrameType() const{返回imaqkit::frametypes::MONO8;} //图像采集函数bool MyDeviceAdaptor::openDevice(){返回true} bool MyDeviceAdaptor::closeDevice(){返回true} bool MyDeviceAdaptor::startCapture(){返回true} bool MyDeviceAdaptor::stopCapture(){返回true}
  5. 将对适配器类头文件的引用添加到包含导出函数的文件中,mydevice_exported_fcns.cpp,你创造的使用适配器导出函数.这是必需的,因为createInstance除外()导出函数实例化该类的对象。

    # include“MyDeviceAdaptor.h”
  6. 类的存根实现createInstance除外()函数,也在导出的函数源文件中,mydevice_exported_fcns.cpp.使函数实例化适配器类的对象,下面用斜体突出显示。(在存根中,它返回.)

    void getDeviceAttributes(const imaqkit::IDeviceInfo* deviceInfo, const char* formatName, imaqkit::IPropFactory* devicePropFact, imaqkit::IVideoSourceInfo* sourceContainer, imaqkit::ITriggerInfo* hwTriggerInfo){//创建一个视频源sourceContainer->addAdaptorSource("MyDeviceSource", 1);} imaqkit::IAdaptor* createInstance(imaqkit::IEngine* engine, imaqkit::IDeviceInfo* deviceInfo, char* formatName){imaqkit::IAdaptor* adaptor =新MyDeviceAdaptor(引擎、deviceInfo formatName);返回适配器;}
  7. 构建适配器DLL。选择构建解决方案选项构建菜单。

  8. 启动MATLAB®软件

  9. 调用imaqhwinfo函数。注意适配器如何命名mydeviceimaq返回的可用适配器列表中包含imaqhwinfo.如果您以前没有注册适配器DLL,请向工具箱注册适配器-请参见向工具箱注册适配器.要查看有关适配器的更多详细信息,请拨打imaqhwinfo同样使用这种语法:

    Dev_info = imaqhwinfo('mydeviceimaq');
  10. 对象的视频输入对象mydeviceimaq适配器,使用videoinput函数。

    请注意

    虽然可以使用适配器创建视频输入对象,但不能使用它从设备获取视频。为此,必须实现适配器类获取函数。看到获取图像数据获取更多信息。

    vid = videoinput('mydeviceimaq',1)视频输入对象使用'MyDevice'的摘要。获取源:MyDeviceSource可用。采集参数:“MyDeviceSource”是当前选中的源。使用所选源每个触发器10帧。'640x480'视频数据将被记录在开始。抓取第一个每1帧(s)。在触发时将数据记录到“内存”。触发参数:启动时1个“立即”触发器。状态:等待启动。启动后获得0帧。 0 frames available for GETDATA.