Каждый адаптер должен включать getAvailHW()
функция. В этой функции вы предоставляете тулбоксу информацию об устройстве (или устройства), которые в настоящее время соединяются с системой пользователя. Адаптер может представлять одно конкретное устройство, несколько устройств, поддержанных конкретным поставщиком или классом устройств. Например, тулбокс включает адаптер для устройств Matrox, который поддерживает много различных средств захвата кадра, обеспеченных тем поставщиком.
Когда пользователь вызывает imaqhwinfo
функция, чтобы узнать, какие устройства доступны в своей системе, механизм тулбокса, вызывает getAvailHW()
вашего адаптера функция, чтобы получить эту информацию. Когда вы реализуете эту функцию, вы определяете имена, идентификаторы устройства и имена формата, которые тулбокс отображает пользователям.
Этот раздел включает следующие темы
Набор адаптера обеспечивает три класса, чтобы сохранить информацию об устройстве и данные о формате:
Объект набора адаптера | Цель |
---|---|
| Полный контейнерный класс для получения информации об оборудовании |
| Контейнер для получения информации о конкретном устройстве |
| Контейнер для получения информации о форматах поддержан конкретным устройством |
Когда механизм тулбокса вызывает getAvailHW()
вашего адаптера функция, это передает ваш адаптер указатель на
IHardwareInfo
объект.
Для каждого устройства вы хотите сделать доступным через ваш адаптер, необходимо создать IDeviceInfo
возразите и затем храните объект в IHardwareInfo
объект. Для каждого формата, поддержанного устройством, необходимо создать IDeviceFormat
возразите и затем храните объект в IDeviceInfo
объект.
Следующий рисунок показывает отношение этих объектов набора адаптера. Рисунок показывает IHardwareInfo
объект, содержащий два IDeviceInfo
объекты, но это может содержать больше. Точно так же каждый IDeviceInfo
объект показывают содержащий два IDeviceFormat
объекты, но это может также содержать больше.
Отметьте на рисунке это оба IDeviceInfo
и IDeviceFormat
объекты содержат данные об адаптере. Данные об адаптере являются дополнительным способом хранить дополнительную информацию об устройстве или формате в IDeviceInfo
или IDeviceFormat
объект. Смотрите Классы Определения, чтобы Содержать Специфичную для устройства информацию для получения дополнительной информации.
Объекты набора адаптера, используемые, чтобы сохранить информацию об устройстве и данные о формате
getAvailHW()
функция принимает один аргумент: указатель на IHardwareInfo
объект. Механизм тулбокса создает этот IHardwareInfo
объект и передачи указатель на ваш адаптер, когда это вызывает getAvailHW()
вашего адаптера функция.
getAvailHW()
функция не возвращает значение.
void getAvailHW(imaqkit::IHardwareInfo* hardwareInfo)
getAvailHW()
вашего адаптера функция должна предоставить механизму следующую информацию для каждого устройства:
ID устройства
Имя устройства
Форматы поддержаны устройством, включая формат по умолчанию
Поддерживает ли устройство файлы конфигурации устройства (также известный как файлы камеры)
Примечание
Можно опционально хранить дополнительную специфичную для устройства информацию в данных об адаптере IDeviceInfo
возразите или IDeviceFormat
объект. Смотрите Классы Определения, чтобы Содержать Специфичную для устройства информацию для получения дополнительной информации.
Следующие основы шаги обычно выполняются getAvailHW()
функция. Фигура, которая следует, представляет этот алгоритм в форме блок-схемы.
Определите, какие устройства доступны через адаптер. Адаптеры обычно выполняют вызовы к SDK устройства, чтобы получить эту информацию.
Для каждого найденного устройства создайте IDeviceInfo
объект — видит Информацию об устройстве Хранения.
Для каждого формата, поддержанного устройством, создайте IDeviceFormat
объект — видит Данные о формате Хранения.
Добавьте каждый объект формата устройства, который вы создаете к IDeviceInfo
объект.
Добавьте IDeviceInfo
возразите против IHardwareInfo
объект передал вашему getAvailHW()
функция механизмом тулбокса.
Повторите эту процедуру для каждого устройства, доступного в системе пользователя.
Предложенный Алгоритм для getAvailHW () Функция
Вы храните информацию об устройстве в IDeviceInfo
объект. Чтобы создать этот объект, используйте createDeviceInfo()
функция членства IHardwareInfo
объект, как в следующем примере:
imaqkit::IDeviceInfo* deviceInfo = hardwareInfo->createDeviceInfo(1,"MyDevice");
В качестве аргументов к createDeviceInfo()
, вы задаете:
Назовите вас, хотят присвоить устройству
ID вы хотите присвоить устройству
Можно задать любые значения для этих аргументов, но отметить, что они отображаются пользователям тулбокса в структуре, возвращенной imaqhwinfo
.
Для имени устройства задайте вектор символов, который легко идентифицирует устройство. Например, вы можете использовать номер модели производителя.
ID, который вы задаете для устройства, должен быть уникальным, потому что это идентифицирует устройство для адаптера. Поскольку MATLAB® индексация запускается в 1, запустите нумерацию идентификаторов устройства в 1, не нуль. Устройство с ID 1 является устройством по умолчанию для вашего адаптера.
IDeviceInfo
объект вы создаете функции членства поддержек, чтобы выполнить много задач, таких как создание, добавление и получение IDeviceFormat
объекты сопоставили с устройством и указанием, поддерживает ли устройство файлы конфигурации устройства (также известный как файлы камеры). Для получения дополнительной информации об этом классе, см. Справочную документацию API Набора Адаптера Image Acquisition Toolbox™.
После того, как вы создаете IDeviceInfo
объект, необходимо добавить его в IHardwareInfo
возразите, что механизм передал вашему getAvailHW()
функция. Используйте addDevice()
функция членства IHardwareInfo
объект, как в следующем примере:
hardwareInfo->addDevice(deviceInfo);
Вы храните данные о формате в IDeviceFormat
объект. Чтобы создать этот объект, используйте createDeviceFormat()
функция членства IDeviceInfo
объект, как в следующем примере:
imaqkit::IDeviceFormat* deviceFormat = deviceInfo->createDeviceFormat(1,"RS170");
В качестве аргументов к createDeviceFormat()
, вы задаете
Назовите вас, хотят присвоить формату
ID вы хотите присвоить формату
Для имени формата задайте вектор символов, который описывает формат. Обратите внимание на то, что имя формата отображается пользователям тулбокса. Используйте имена, которые могут быть знакомыми пользователям устройства, такими как имя, похожее на имена формата, используемые производителем устройств.
Поскольку ID не отсоединен пользователям, можно задать любое удобное значение. Например, если SDK устройства использует числовые идентификаторы, чтобы указать на формат, используйте эти значения для своих идентификаторов формата.
Можно использовать IDeviceFormat
функции членства, чтобы выполнить много задач, такой как, получая имя формата и идентификатор формата, и определяя, является ли формат форматом по умолчанию. Для получения дополнительной информации об этом классе, см. Справочную документацию API Набора Адаптера Image Acquisition Toolbox.
После того, как вы создаете IDeviceFormat
возразите, добавьте его в IDeviceInfo
объект, который представляет устройство. Используйте addDeviceFormat()
функция членства IDeviceInfo
объект, как в следующем примере:
deviceInfo->addDeviceFormat(deviceFormat,true);
Когда вы добавляете формат в IDeviceInfo
объект, вы используете второй аргумент для addDeviceFormat()
функция, чтобы задать, должен ли формат использоваться в качестве формата по умолчанию для устройства. imaqhwinfo
функция возвращает имя формата по умолчанию в DefaultFormat
поле . Чтобы сделать формат значением по умолчанию, установите этот аргумент на true
.
Некоторые устройства используют файлы конфигурации устройства (также известный как файлы камеры), чтобы сконфигурировать форматы и другие свойства. Если устройство поддерживает файлы конфигурации устройства, вы не должны создавать IDeviceFormat
объекты. Вместо этого используйте setDeviceFileSupport()
функция членства IDeviceInfo
объект указать, что устройство поддерживает файлы конфигурации устройства, как в следующем примере:
deviceInfo->setDeviceFileSupport(true);
Для этих устройств пользователи передают полный путь файла конфигурации устройства в качестве третьего аргумента к videoinput
функция, вместо того, чтобы задать формат устройства. Средства записи адаптера не должны выполнять обработку файла конфигурации устройства; вы только передаете имя файла устройству.
Следующий пример представляет простую реализацию getAvailHW()
функция, которая указывает информацию для одного устройства с двумя форматами. Намерение этого примера состоит в том, чтобы показать, как вы создаете объекты, необходимые, чтобы сохранить информацию об устройстве и данные о формате. Если вы добавляете этот код в mydeviceimaq
адаптер, можно запустить imaqhwinfo('mydeviceimaq')
просмотреть информацию об устройстве.
Замените тупиковую реализацию getAvailHW()
функция, созданная в Создании Тупикового Адаптера, с этим кодом:
void getAvailHW(imaqkit::IHardwareInfo* hardwareInfo) { // Create a Device Info object. imaqkit::IDeviceInfo* deviceInfo = hardwareInfo->createDeviceInfo(1,"MyDevice"); // Create a Device Format object. imaqkit::IDeviceFormat* deviceFormat = deviceInfo->createDeviceFormat(1,"RS170"); // Add the format object to the Device object. // Specifying "true' makes this format the default format. deviceInfo->addDeviceFormat(deviceFormat, true); // Create a second Device Format object. imaqkit::IDeviceFormat* deviceFormat2 = deviceInfo->createDeviceFormat(2,"PAL"); // Add the second format object to the Device object. deviceInfo->addDeviceFormat(deviceFormat2, false); // Add the device object to the hardware info object. hardwareInfo->addDevice(deviceInfo); }
Восстановите mydeviceimaq
проект создать новый DLL.
Запустите программное обеспечение MATLAB и запустите imaqhwinfo
функция, задавая адаптер называет mydeviceimaq
в качестве аргумента. Отметьте как DeviceIDs
поле и DeviceInfo
поле структуры возвращено imaqhwinfo
теперь содержите данные.
dev = imaqhwinfo('mydeviceimaq') dev = AdaptorDllName: 'C:\My_Adaptor\mydeviceimaq.dll' AdaptorDllVersion: '4.1 (R2011a)' AdaptorName: 'mydeviceimaq' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]
Чтобы просмотреть подробную информацию об устройстве, просмотрите структуру в DeviceInfo
поле . DeviceInfo
поле является массивом структур, где каждая структура предоставляет подробную информацию о конкретном устройстве.
dev_info = dev.DeviceInfo dev_info = DefaultFormat: 'RS170' DeviceFileSupported: 0 DeviceName: 'MyDevice' DeviceID: 1 ObjectConstructor: 'videoinput('mydeviceimaq', 1)' SupportedFormats: {'PAL' 'RS170'}
Следующая таблица описывает информацию в каждом поле со ссылками на другие разделы, которые предоставляют больше информации.
Поле | Описание |
---|---|
| Вектор символов, который задает формат по умолчанию, используемый устройством. Вы задаете формат по умолчанию, когда вы добавляете |
| Булево значение, которое говорит, поддерживает ли устройство файлы конфигурации устройства (также известный как файлы камеры). Вы используете |
| Вектор символов, который идентифицирует конкретное устройство. Вы задаете это значение, когда вы создаете |
| Числовое значение, которое однозначно определяет конкретное устройство. Вы задаете это значение, когда вы создаете |
| Вектор символов, который содержит |
| Массив ячеек из символьных векторов, который идентифицирует форматы это устройство поддержки. Вы задаете это значение, когда вы создаете |