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