Чтобы задать свойства для устройства, выполните эту процедуру:
Создайте свойство с помощью соответствующей функции членства 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