Определение информации об устройстве и данных о формате

Каждый адаптер должен включать getAvailHW() функция. В этой функции вы предоставляете тулбоксу информацию об устройстве (или устройства), которые в настоящее время соединяются с системой пользователя. Адаптер может представлять одно конкретное устройство, несколько устройств, поддержанных конкретным поставщиком или классом устройств. Например, тулбокс включает адаптер для устройств Matrox, который поддерживает много различных средств захвата кадра, обеспеченных тем поставщиком.

Когда пользователь вызывает imaqhwinfo функция, чтобы узнать, какие устройства доступны в своей системе, механизм тулбокса, вызывает getAvailHW() вашего адаптера функция, чтобы получить эту информацию. Когда вы реализуете эту функцию, вы определяете имена, идентификаторы устройства и имена формата, которые тулбокс отображает пользователям.

Этот раздел включает следующие темы

Используя объекты сохранить информацию об устройстве и данные о формате

Набор адаптера обеспечивает три класса, чтобы сохранить информацию об устройстве и данные о формате:

Объект набора адаптера

Цель

IHardwareInfo

Полный контейнерный класс для получения информации об оборудовании

IDeviceInfo

Контейнер для получения информации о конкретном устройстве

IDeviceFormat

Контейнер для получения информации о форматах поддержан конкретным устройством

Когда механизм тулбокса вызывает 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() функция. Фигура, которая следует, представляет этот алгоритм в форме блок-схемы.

  1. Определите, какие устройства доступны через адаптер. Адаптеры обычно выполняют вызовы к SDK устройства, чтобы получить эту информацию.

  2. Для каждого найденного устройства создайте IDeviceInfo объект — видит Информацию об устройстве Хранения.

    1. Для каждого формата, поддержанного устройством, создайте IDeviceFormat объект — видит Данные о формате Хранения.

    2. Добавьте каждый объект формата устройства, который вы создаете к IDeviceInfo объект.

  3. Добавьте IDeviceInfo возразите против IHardwareInfo объект передал вашему getAvailHW() функция механизмом тулбокса.

  4. Повторите эту процедуру для каждого устройства, доступного в системе пользователя.

    Предложенный Алгоритм для 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

После того, как вы создаете 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

После того, как вы создаете IDeviceFormat возразите, добавьте его в IDeviceInfo объект, который представляет устройство. Используйте addDeviceFormat() функция членства IDeviceInfo объект, как в следующем примере:

deviceInfo->addDeviceFormat(deviceFormat,true);

Определение формата по умолчанию

Когда вы добавляете формат в IDeviceInfo объект, вы используете второй аргумент для addDeviceFormat() функция, чтобы задать, должен ли формат использоваться в качестве формата по умолчанию для устройства. imaqhwinfo функция возвращает имя формата по умолчанию в DefaultFormat поле . Чтобы сделать формат значением по умолчанию, установите этот аргумент на true.

Конфигурирование файла конфигурации устройства (файл камеры) поддержка

Некоторые устройства используют файлы конфигурации устройства (также известный как файлы камеры), чтобы сконфигурировать форматы и другие свойства. Если устройство поддерживает файлы конфигурации устройства, вы не должны создавать IDeviceFormat объекты. Вместо этого используйте setDeviceFileSupport() функция членства IDeviceInfo объект указать, что устройство поддерживает файлы конфигурации устройства, как в следующем примере:

 deviceInfo->setDeviceFileSupport(true);

Для этих устройств пользователи передают полный путь файла конфигурации устройства в качестве третьего аргумента к videoinput функция, вместо того, чтобы задать формат устройства. Средства записи адаптера не должны выполнять обработку файла конфигурации устройства; вы только передаете имя файла устройству.

Пример: обеспечение информации об устройстве и данных о формате

Следующий пример представляет простую реализацию getAvailHW() функция, которая указывает информацию для одного устройства с двумя форматами. Намерение этого примера состоит в том, чтобы показать, как вы создаете объекты, необходимые, чтобы сохранить информацию об устройстве и данные о формате. Если вы добавляете этот код в mydeviceimaq адаптер, можно запустить imaqhwinfo('mydeviceimaq') просмотреть информацию об устройстве.

  1. Замените тупиковую реализацию 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);
    
    }
    
  2. Восстановите mydeviceimaq проект создать новый DLL.

  3. Запустите программное обеспечение 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'}
    

    Следующая таблица описывает информацию в каждом поле со ссылками на другие разделы, которые предоставляют больше информации.

    Поле

    Описание

    DefaultFormat

    Вектор символов, который задает формат по умолчанию, используемый устройством. Вы задаете формат по умолчанию, когда вы добавляете IDeviceFormat возразите против IDeviceInfo объект; смотрите Определение Формата По умолчанию.

    DeviceFileSupported

    Булево значение, которое говорит, поддерживает ли устройство файлы конфигурации устройства (также известный как файлы камеры). Вы используете setDeviceFileSupport() функция членства IDeviceInfo возразите, чтобы установить это значение; смотрите Файл конфигурации устройства Конфигурирования (Файл Камеры) Поддержка.

    DeviceName

    Вектор символов, который идентифицирует конкретное устройство. Вы задаете это значение, когда вы создаете IDeviceInfo объект; смотрите Информацию об устройстве Хранения.

    DeviceID

    Числовое значение, которое однозначно определяет конкретное устройство. Вы задаете это значение, когда вы создаете IDeviceInfo объект; смотрите Информацию об устройстве Хранения.

    ObjectConstructor

    Вектор символов, который содержит videoinput синтаксис функций, требуемый создать экземпляр объекта для этого устройства. Механизм тулбокса создает этот вектор символов.

    SupportedFormats

    Массив ячеек из символьных векторов, который идентифицирует форматы это устройство поддержки. Вы задаете это значение, когда вы создаете IDeviceFormat объекты сопоставлены с конкретным устройством; смотрите Данные о формате Хранения.