Каждый адаптер должен включать функцию 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'}
Следующая таблица описывает информацию в каждом поле со ссылками на другие разделы, которые предоставляют больше информации.
Поле | Описание |
---|---|
| Вектор символов, который задает формат по умолчанию, используемый устройством. Вы задаете формат по умолчанию, когда вы добавляете объект |
| Булево значение, которое говорит, поддерживает ли устройство файлы конфигурации устройства (также известный как файлы камеры). Вы используете |
| Вектор символов, который идентифицирует конкретное устройство. Вы задаете это значение, когда вы создаете объект |
| Числовое значение, которое однозначно определяет конкретное устройство. Вы задаете это значение, когда вы создаете объект |
| Вектор символов, который содержит синтаксис функций |
| Массив ячеек из символьных векторов, который идентифицирует форматы это устройство поддержки. Вы задаете это значение, когда вы создаете объекты |