Чтобы определить свойства устройства, выполните следующие действия.
Создайте свойство с помощью соответствующего IPropFactory функция-член для типа данных. Двигатель переходит в рукоятке к IPropFactory объект для getDeviceAttributes() функция.
Например, для создания свойства типа double, используйте createDoubleProperty() способ IPropFactory , указывая имя свойства и значение по умолчанию в качестве аргументов.
hprop = devicePropFact->createDoubleProperty("Brightness",100)
IPropFactory поддерживает функции для создания свойств различных типов данных - см. раздел Выбор функции создания свойств.
Укажите, может ли пользователь изменять свойство, используя setPropReadOnly() способ IPropFactory объект. Используйте одну из следующих констант (определенных в IEngine.h): READONLY_ALWAYS, READONLY_NEVER, и READONLY_WHILE_RUNNING. Например,
devicePropFact->setPropReadOnly(hProp,
imaqkit::propreadonly::READONLY_WHILE_RUNNING);
Добавьте свойство в контейнер свойств устройства, используя 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() функция. Цель этого примера - показать, как использовать объекты набора адаптеров для указания источников видео и свойств различных типов.
Этот код не считывает информацию об источнике, свойстве или триггере из файла IMDF. Дополнительные сведения об этом разделе см. в разделе Использование языка разметки IMDF.
Добавьте следующий код в 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);
Скомпилируйте и свяжите адаптер, чтобы создать библиотеку DLL.
Запустите программное обеспечение MATLAB ®.
Создайте объект ввода видео для адаптера.
vid = videoinput('mydevice',1)
Используйте 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