Чтобы задать свойства для устройства, выполните следующую процедуру:
Создайте свойство с помощью соответствующей IPropFactory Представитель функцию для типа данных. Двигатель переходит в указателе к IPropFactory объект для getDeviceAttributes() функция.
Например, чтобы создать свойство типа double, используйте createDoubleProperty() метод IPropFactory объект, задающий имя свойства и значение по умолчанию как аргументы.
hprop = devicePropFact->createDoubleProperty("Brightness",100)
The 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.
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() функция. Цель этого примера состоит в том, чтобы показать, как использовать объекты набора адаптеров для определения источников видео и свойств различных типов.
Этот код не считывает исходный код, свойство или инициирует информацию из файла 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