exponenta event banner

Создание свойств устройства

Чтобы определить свойства устройства, выполните следующие действия.

  1. Создайте свойство с помощью соответствующего IPropFactory функция-член для типа данных. Двигатель переходит в рукоятке к IPropFactory объект для getDeviceAttributes() функция.

    Например, для создания свойства типа double, используйте createDoubleProperty() способ IPropFactory , указывая имя свойства и значение по умолчанию в качестве аргументов.

    hprop = devicePropFact->createDoubleProperty("Brightness",100)
    

    IPropFactory поддерживает функции для создания свойств различных типов данных - см. раздел Выбор функции создания свойств.

  2. Укажите, может ли пользователь изменять свойство, используя setPropReadOnly() способ IPropFactory объект. Используйте одну из следующих констант (определенных в IEngine.h): READONLY_ALWAYS, READONLY_NEVER, и READONLY_WHILE_RUNNING. Например,

    devicePropFact->setPropReadOnly(hProp, 
                     imaqkit::propreadonly::READONLY_WHILE_RUNNING);
    
  3. Добавьте свойство в контейнер свойств устройства, используя addProperty() способ IPropFactory объект. Например,

    devicePropFact->addProperty(hProp);
    

    где hProp является дескриптором свойства, созданного на шаге 1.

Выбор функции создания свойств

IPropFactory() объект поддерживает функции, которые можно использовать для создания свойств различных типов данных, включая:

  • int

  • double

  • character vector

  • Перечислимые типы

Например, используйте createDoubleProperty() для создания свойства, значение которого имеет тип double.

hprop = devicePropFact->createDoubleProperty("MyDoubleProp",2.5)

Для int и double можно также указать свойства, которые имеют пары значений или значений в пределах определенного диапазона. Например, этот код создает целое свойство с верхней и нижней границами.

hprop = devicePropFact->createIntProperty("MyBoundedIntProp", 
                                    0,100,50)

Чтобы создать свойство с перечисляемыми значениями, используйте createEnumProperty(), указывая имя свойства и одно перечисление, например,

hprop = devicePropFact->createEnumProperty("MyEnum", 
                                    "green",1)

Затем можно добавить дополнительные свойства с помощью addEnumValue().

Для получения дополнительной информации о IPropFactory класс, посмотрите Приобретение Изображения Справочная документация API Комплекта Адаптера Toolbox™.

Справка по созданию свойств

Файлы IMDF можно использовать для определения текста справки для создаваемых свойств устройства. Дополнительные сведения см. в разделе Указание справки в файле IMDF.

Пример функции getDeviceAttributes ()

В следующем примере представлена скелетная реализация getDeviceAttributes() функция. Цель этого примера - показать, как использовать объекты набора адаптеров для указания источников видео и свойств различных типов.

Этот код не считывает информацию об источнике, свойстве или триггере из файла IMDF. Дополнительные сведения об этом разделе см. в разделе Использование языка разметки IMDF.

  1. Добавьте следующий код в getDeviceAttributes() функция в адаптере. Вы создали скелетную версию этой функции в разделе Идентификация источников видео. Этот код создает несколько свойств различных типов.

        void* hProp;  // Declare a handle to a property object.
    
    	// Create a property of type double with a default value
    	hProp = devicePropFact->createDoubleProperty("MyDoubleProp",2.5);
    
    	//  Specify when the property value can be modified.
    	devicePropFact->setPropReadOnly(hProp,
                                   imaqkit::imaqengine::READONLY_ALWAYS);
    
    	// Add the property to the device-specific property container.
    	devicePropFact->addProperty(hProp);
    
    	// Create a bounded int property with maximum and minimum values
    	hProp = devicePropFact->createIntProperty("MyBoundedIntProp",
                                                  0, 100, 50);
    
    	//  Specify when the property value can be modified.
    	devicePropFact->setPropReadOnly(hProp,
                                    imaqkit::imaqengine::READONLY_NEVER);
    
    	// Add the property to the device-specific property container.
    	devicePropFact->addProperty(hProp);
    
    	// Create an enumerated property
    	hProp = devicePropFact->createEnumProperty("MyEnumeratedProp",
                                                   "green", 1);
        
    	// Add additional enumerations
    	devicePropFact->addEnumValue(hProp, "blue", 2);
    	devicePropFact->addEnumValue(hProp, "red", 3);
    	
    	// Specify when the property value can be modified.
      	devicePropFact->setPropReadOnly(hProp,
                             imaqkit::imaqengine::READONLY_WHILE_RUNNING);
    
     // Add the property to the device-specific property container.
    	devicePropFact->addProperty(hProp);
    
  2. Скомпилируйте и свяжите адаптер, чтобы создать библиотеку DLL.

  3. Запустите программное обеспечение MATLAB ®.

  4. Создайте объект ввода видео для адаптера.

    vid = videoinput('mydevice',1)
    
  5. Используйте getselectedsource функция для получения дескриптора объекта источника видео и просмотра созданных вами свойств устройства.

    src = getselectedsource(vid);
    get(vid)
    General Settings:
        Parent = [1x1 videoinput]
        Selected = on
        SourceName = input1
        Tag = 
        Type = videosource
    
      Device Specific Properties:
        MyDoubleProp = 2.5
    MyBoundedIntProp = 100
    MyEnumeratedProp = green