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