codegen
Система VideoDevice object™ поддерживает генерацию кода в MATLAB® через функцию codegen
. Чтобы использовать функцию codegen
, у вас должна быть лицензия MATLAB Coder™. Системные объекты также поддерживают генерацию кода, использующую блок MATLAB function в Simulink®. Можно также использовать Системный объект с MATLAB Compiler™.
Программное обеспечение MATLAB Compiler поддерживает Системные объекты для использования в функциях MATLAB. MATLAB Compiler не делает объектов системы поддержки для использования в скриптах MATLAB.
Если вы используете команду codegen
, чтобы сгенерировать MEX-функцию на платформе Windows®, необходимо выполнить imaqreset
прежде, чем запустить сгенерированный файл MEX. Однако MEX не работает правильно, если Kinect® для пакета поддержки Windows Sensor установлен.
Команда codegen
может использоваться, чтобы сгенерировать исполняемые файлы на платформах не-Windows. Однако генерация MEX-функции не поддержана на Linux® и macOS платформах.
Для получения дополнительной информации см. документацию для функции codegen
MATLAB.
Системный объект VideoDevice генерирует код с ограниченной мобильностью. Системный объект пользуется предварительно скомпилированными совместно использованными библиотеками, такими как DLLs, чтобы поддержать ввод-вывод для определенных типов устройств. Разделяемые местоположения библиотеки, которых требует сгенерированный исполняемый файл, следующие:
Определенный MathWorks совместно использовал библиотеки под [MATLABROOT] \bin \<ДУГА> \
Выбраны библиотеки адаптеров MathWorks под [MATLABROOT]\SupportPackages \<РЕЛИЗ> \toolbox\imaq\supportpackages\genericvideo\adaptor \<ДУГА> \характерный для устройства.
Например, ваш путь может выглядеть так в системе Windows и релизе R2018a использования:
C:\ProgramData\MATLAB\SupportPackages\R2018a\toolbox\imaq\supportpackages\genericvideo\adaptor\win64
Необходимо будет добавить вышеупомянутые папки в системный путь прежде, чем запустить сгенерированный исполняемый файл за пределами MATLAB.
Присвойте Системные объекты персистентным переменным.
Глобальные переменные не поддержаны.
Инициализируйте Системные объекты однажды путем встраивания указателей на объект в оператор if
с вызовом isempty( )
.
Вызовите конструктора точно однажды для каждого Системного объекта.
Установите аргументы на конструкторов Системного объекта как константы времени компиляции.
Используйте конструктора Object, чтобы установить свойства Системного объекта, потому что вы не можете использовать запись через точку для генерации кода. Можно использовать функцию get
, чтобы отобразить свойства.
Протестируйте свой код в симуляции прежде, чем сгенерировать код.
Следующее показывает пример некоторых из этих правил.
% Note: System Objects created for Codegen have to be persistent variables. persistent vid; % Construct the IMAQ VideoDevice System Object. if isempty(vid) % Note: All required parameters must be passed to the System Object at % the point of construction. vid = imaq.VideoDevice('winvideo', 1, 'MJPG_320x240', ... 'ROI', [1 1 320 240], ... 'ReturnedColorSpace', 'rgb', ... 'DeviceProperties.Brightness', 130, ... 'DeviceProperties.Sharpness', 220); end
Гарантируйте, что значение, присвоенное ненастраиваемой или общественной собственности, является константой и что существует самое большее одно присвоение на то свойство (включая присвоение в конструкторе). Не устанавливайте свойства во время генерации кода.
Единственные функции Системного объекта, поддерживаемые в генерации кода:
get
getNumInputs
getNumOutputs
reset
step
Не устанавливайте Системные объекты становиться выходными параметрами от блока MATLAB function.
Не передавайте Системный объект как входной параметр в качестве примера к функции, скомпилированной с codegen
.
Не передавайте Системный объект функциям, объявленным как внешний (т.е. функциям, вызванным в интерпретированном режиме) использование функции coder.extrinsic
. Не возвращайте Системные объекты ни в какие внешние функции.