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

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

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

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

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

    The 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.

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

The 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 Класс см. документацию Image Acquisition Toolbox™ Adaptor Kit API Ссылки.

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

Можно использовать файлы 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