Чтобы задать свойства для устройства, выполните эту процедуру:
Создайте свойство с помощью соответствующей функции членства IPropFactory для типа данных. Механизм передает в указателе на объект IPropFactory к функции getDeviceAttributes().
Например, чтобы создать свойство типа double, используйте метод createDoubleProperty() объекта IPropFactory, задавая имя свойства и значение по умолчанию в качестве аргументов.
hprop = devicePropFact->createDoubleProperty("Brightness",100)
Класс IPropFactory поддерживает функции, чтобы создать свойства различных типов данных — смотрите Выбор Property Creation Function.
Задайте, может ли пользователь изменить свойство, с помощью метода 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 Набора Адаптера Image Acquisition 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