Этот раздел помогает вам соединить свою пользовательскую цель при помощи режима external mode с помощью собственного низкоуровневого коммуникационного слоя. Темы включают:
Обзор проекта и операция режима external mode
Описание исходных файлов режима external mode
Инструкции для изменения исходных файлов режима external mode и создания исполняемого файла, чтобы справиться с задачами файла MEX ext_comm
по умолчанию
Этот раздел принимает, что вы знакомы с осуществлением программ Simulink® Coder™, и с основной операцией режима external mode.
Связь режима external mode между механизмом Simulink и целевой системой основана на клиент-серверной архитектуре. Клиент (механизм Simulink) передает сообщения, запрашивающие сервер (цель), чтобы принять изменения параметра или загрузить данные сигнала. Сервер отвечает путем выполнения запроса.
Низкоуровневый транспортный уровень обрабатывает физическую передачу сообщений. И механизм Simulink и типовой кодекс независимы от этого слоя. И транспортный уровень и код, непосредственно взаимодействующий через интерфейс к транспортному уровню, изолируются в отдельных модулях, что формат, передача, и получают пакеты данных и сообщения.
Этот проект позволяет различным целям использовать различные транспортные уровни. GRT, ERT и RSim предназначаются для коммуникации хоста/цели поддержки при помощи TCP/IP и RS-232 (последовательная) коммуникация. Цель Simulink Desktop Real-Time™ поддерживает коммуникацию общей памяти. Цель Wind River® Systems Tornado® поддерживает TCP/IP только.
Продукт Simulink Coder предоставляет полный исходный код клиенту и для модулям режима external mode серверной стороны, как используется GRT, ERT, Быстрой Симуляцией, и целями Торнадо, и продуктами Simulink Real-Time™ и Simulink Desktop Real-Time. Основным клиентским модулем является ext_comm.c
. Основным модулем серверной стороны является ext_svr.c
.
Эти два модуля вызывают заданный транспортный уровень через следующие исходные файлы.
Встроенные реализации транспортного уровня
Протокол | Клиент или сервер? | Исходные файлы |
---|---|---|
TCP/IP | Клиент (хост) | |
Сервер (цель) | ||
Последовательный | Клиент (хост) | |
Сервер (цель) |
Для последовательной передачи модули ext_serial_transport.c
и rtiostream_serial.c
реализуют клиентские транспортные функции и модули, ext_svr_serial_transport.c
и rtiostream_serial.c
реализуют соответствующие функции серверной стороны. Для коммуникации TCP/IP модули rtiostream_interface.c
и rtiostream_tcpip.c
реализуют и функции клиентской и серверной стороны. Можно отредактировать копии этих файлов (но не изменяйте оригиналы). Можно поддержать режим external mode с помощью собственного низкоуровневого коммуникационного слоя путем создания подобных файлов с помощью следующих шаблонов:
Клиент (хост) сторона:
(TCP/IP) или matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
(последовательный)
matlabroot/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Сервер (цель) сторона:
(TCP/IP) или matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
(последовательный)
matlabroot/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Файл rtiostream_interface.c
является интерфейсом между протоколом режима external mode и коммуникационным каналом rtiostream
. Для получения дополнительной информации при реализации коммуникационного канала rtiostream
, смотрите Коммуникации rtiostream API (Embedded Coder). Реализуйте свой коммуникационный канал rtiostream
при помощи зарегистрированного интерфейса, чтобы избежать необходимости делать изменения в файл rtiostream_interface.c
или другими связанными с режимом external mode файлами.
Не изменяйте рабочие исходные файлы. Используйте шаблоны, обеспеченные в папке /custom
или /rtiostream
как отправные точки, ведомые комментариями в них.
Вы должны только предоставить код, который реализует низкоуровневые коммуникации. Вы не должны быть обеспокоены проблемами, такими как преобразования данных между хостом и целью, или с форматированием сообщений. Программное обеспечение Simulink Coder обрабатывает эти функции.
На клиенте (механизм Simulink) сторона, коммуникации обработаны ext_comm
(для TCP/IP) и ext_serial_win32_comm
(для сериала) файлы MEX.
На сервере (цель) примыкают, модули режима external mode соединяются в целевой исполняемый файл. Это происходит автоматически, если опция генерации кода External mode выбрана во время генерации кода, на основе опции External mode transport, выбранной в целевом окне параметров генерации кода. Эти модули, названные из основной программы и образцового механизма выполнения, независимы от сгенерированного типового кодекса.
Общая процедура для реализации вашего собственного клиентского низкоуровневого транспортного протокола следующие:
Отредактируйте шаблон rtiostream_tcpip.c
, чтобы заменить низкоуровневые коммуникационные вызовы на ваши собственные коммуникационные вызовы.
Сгенерируйте исполняемый файл файла MEX для своего пользовательского транспорта.
Укажите свой новый транспортный уровень с программным обеспечением Simulink, так, чтобы транспорт мог быть выбран для модели с помощью панели Interface диалогового окна Configuration Parameters.
Для получения дополнительной информации смотрите, Создают Пользовательский Клиент (Хост) Транспортный протокол.
Общая процедура для реализации вашего собственного низкоуровневого транспортного протокола серверной стороны следующие:
Отредактируйте шаблон rtiostream_tcpip.c
, чтобы заменить низкоуровневые коммуникационные вызовы на ваши собственные коммуникационные вызовы. Обычно это включает запись или драйверы интегрирующего устройства для вашего целевого компьютера.
Измените make-файлы шаблона, чтобы поддержать новый транспорт.
Для получения дополнительной информации смотрите, Создают Пользовательский Сервер (Цель) Транспортный протокол.
В этом разделе приведены общий обзор того, как сгенерированная программа Simulink Coder связывается с режимом external mode Simulink. Это описание основано на версии TCP/IP режима external mode, который поставляется с продуктом Simulink Coder.
Для коммуникации, чтобы произойти, и сервер (цель) должны выполняться программа и программное обеспечение Simulink. Это не означает, что типовой кодекс в системе сервера должен выполняться. Сервер может ожидать механизма Simulink, чтобы дать команду, чтобы запустить образцовое выполнение.
Клиент-сервер связывается при помощи двунаправленных сокетов, несущих пакеты. Пакеты состоят любое из сообщений (команды, загрузки параметра и ответы) или данные (загрузки сигнала).
Если целевое приложение было вызвано с параметром командной строки -w
, программа вводит состояние ожидания, пока это не получает сообщение от хоста. В противном случае программа начинает выполнение модели. В то время как целевое приложение находится в состоянии ожидания, механизм Simulink может загрузить параметры на цель и сконфигурировать загрузку данных.
Когда пользователь выбирает опцию Connect to Target из меню Simulation, хост инициирует квитирование путем отправки EXT_CONNECT message
. Сервер отвечает информацией о себе. Эта информация включает
Контрольные суммы. Хост использует образцовые контрольные суммы, чтобы решить, что целевой код является точным представлением текущей модели Simulink.
Информация о формате данных. Хост использует эту информацию при форматировании данных, которые будут загружены или интерпретации данных, которые были загружены.
На данном этапе хост и сервер соединяются. Сервер или выполняет модель или в состоянии ожидания. (В последнем случае пользователь может начать образцовое выполнение путем выбора Start Real-Time Code из меню Simulation.)
Во время образцового выполнения сервер сообщения запускается как фоновая задача. Эта задача получает и сообщения процессов, такие как загрузки параметра.
Загрузка данных включает и приоритетное выполнение и фоновое обслуживание пакетов сигнала. Когда цель вычисляет образцовые выходные параметры, она также копирует значения сигналов в буферы загрузки данных. Это происходит как часть задачи, сопоставленной с каждым идентификатором задачи (tid
). Поэтому сбор данных происходит на переднем плане. Передача собранных данных, однако, происходит как фоновая задача. Фоновая задача отправляет данные в буферах набора к механизму Simulink при помощи пакетов данных.
Хост инициирует большинство обменов как сообщения. Цель обычно отправляет ответ, подтверждающий, что она получила и обработала сообщение. Примеры сообщений и команд:
Сообщение связи / ответ связи
Запустите целевая симуляция / запускают ответ
Загрузка параметра / ответ загрузки параметра
Триггер руки для загрузки данных / триггерный ответ руки
Оконечная целевая симуляция / предназначается для ответа завершения работы
Образцовое выполнение останавливается, когда модель достигает своего итогового времени, когда хост отправляет оконечную команду, или когда блок Stop Simulation отключает выполнение. После завершения сервер сообщает хосту, что образцовое выполнение остановилось и закрывает свой сокет. Хост также закрывает свой сокет и выходит из режима external mode.
Исходные файлы для файла MEX взаимодействуют через интерфейс, компонент расположены в (открытой)
папке
, за исключением отмеченного:matlabroot/toolbox/coder/simulinkcoder_core/ext_mode/host
common/ext_comm.c
Этот файл является ядром коммуникации режима external mode. Это действует как ретрансляционная станция между целью и механизмом Simulink. ext_comm.c
связывается с механизмом Simulink при помощи структуры разделяемых данных, ExternalSim
. Это связывается с целью при помощи вызовов транспортного уровня.
Задачи, выполненные ext_comm.c
, включают установление связи с целью, загрузки параметров и завершения связи с целью.
common/rtiostream_interface.c
Этот файл является интерфейсом между протоколом режима external mode и коммуникационным каналом rtiostream
. Для получения дополнительной информации при реализации коммуникационного канала rtiostream
, смотрите Коммуникации rtiostream API (Embedded Coder). Реализуйте свой коммуникационный канал rtiostream
с помощью зарегистрированного интерфейса, чтобы избежать необходимости изменять файл rtiostream_interface.c
или другие связанные с режимом external mode файлы.
matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
Этот файл реализации потребовал функций транспортного уровня TCP/IP. Версия rtiostream_tcpip.c
, поставленного с программным обеспечением Simulink Coder, использует функции TCP/IP включая recv()
, send()
и socket()
.
matlabroot/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Этот файл реализации потребовал последовательных функций транспортного уровня. Версия rtiostream_serial.c
, поставленного с программным обеспечением Simulink Coder, использует последовательные функции включая ReadFile()
, WriteFile()
и CreateFile()
.
serial/ext_serial_transport.c
Этот файл реализации потребовал последовательных функций транспортного уровня. ext_serial_transport.c
включает ext_serial_utils.c
, который расположен в (открытом)
и содержит функции, характерные для сторон клиент-сервера.matlabroot/rtw/c/src/ext_mode/serial
common/ext_main.c
Этот файл является оберткой файла MEX для режима external mode. ext_main.c
взаимодействует через интерфейс к механизму Simulink при помощи стандартного вызова mexFunction
. (См. страницу с описанием mexFunction
и Выбор MATLAB API for Your Application (MATLAB) для получения дополнительной информации.) ext_main.c
содержит функционального диспетчера, esGetAction
, который отправляет запросы от механизма Simulink до ext_comm.c
.
common/ext_convert.c
и ext_convert.h
Этот файл содержит функции, используемые для преобразования данных от хоста до целевых форматов (и наоборот). Функции включают свопинг байта (большой к мало-порядку байтов), преобразование от плаваний non-IEEE® до IEEE удваивается, и другие преобразования. Эти функции вызваны и ext_comm.c
и непосредственно механизмом Simulink (при помощи указателей функции).
Вы не должны настраивать ext_convert
, чтобы реализовать пользовательский транспортный уровень. Однако вы можете хотеть настроить ext_convert
для намеченной цели. Например, если цель представляет тип данных float
в Техасе формат Instruments™, ext_convert
должен быть изменен, чтобы выполнить Texas Instruments к преобразованию IEEE.
common/extsim.h
Этот файл задает структуру данных ExternalSim
и макросы доступа. Эта структура используется для связи между механизмом Simulink и ext_comm.c
.
common/extutil.h
Этот файл содержит только условные выражения для компиляции макроса assert
.
common/ext_transport.h
Этот файл задает функции, которые должны быть реализованы транспортным уровнем.
Эти файлы соединяются в исполняемый файл
. Они расположены в model.exe
(открытом) за исключением отмеченного.matlabroot/rtw/c/src/ext_mode
common/ext_svr.c
ext_svr.c
походит на ext_comm.c
на хосте, но обычно ответственен за большее количество задач. Это действует как ретрансляционная станция между хостом и сгенерированным кодом. Как ext_comm.c
, ext_svr.c
выполняет задачи, такие как установление и завершение связи с хостом. ext_svr.c
также содержит функции фоновой задачи, что или запишите загруженные параметры в целевую модель, или извлеките данные из целевых буферов данных и передайте его обратно в хост.
common/rtiostream_interface.c
Этот файл является интерфейсом между протоколом режима external mode и коммуникационным каналом rtiostream
. Для получения дополнительной информации при реализации коммуникационного канала rtiostream
, смотрите Коммуникации rtiostream API (Embedded Coder). Реализуйте свой коммуникационный канал rtiostream
при помощи зарегистрированного интерфейса, чтобы избежать необходимости изменять файл rtiostream_interface.c
или другие связанные с режимом external mode файлы.
matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
Этот файл реализации потребовал функций транспортного уровня TCP/IP. Версия rtiostream_tcpip.c
, поставленного с программным обеспечением Simulink Coder, использует функции TCP/IP включая recv()
, send()
и socket()
.
matlabroot/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Этот файл реализации потребовал последовательных функций транспортного уровня. Версия rtiostream_serial.c, поставленного с программным обеспечением, использует последовательные функции включая ReadFile()
, WriteFile()
и CreateFile()
.
matlabroot/toolbox/coder/rtiostream/src/rtiostream.h
Этот файл задает функции rtIOStream*
, реализованные в rtiostream_tcpip.c
.
serial/ext_svr_serial_transport.c
Этот файл реализации потребовал последовательных функций транспортного уровня. ext_svr_serial_transport.c
включает serial/ext_serial_utils.c
, который содержит функции, характерные для сторон клиент-сервера.
common/updown.c
updown.c
обрабатывает детали взаимодействия с целевой моделью. Во время загрузок параметра updown.c
делает работу установки новых параметров в вектор параметра модели. Для загрузки данных updown.c
содержит функции, которые извлекают данные из вектора blockio
модели и пишут данные в буферы загрузки. updown.c
предоставляет услуги и ext_svr.c
и типовому кодексу (например, grt_main.c
). Это содержит код, который называется при помощи фоновых задач ext_svr.c
, а также кода, который называется как часть более высокого приоритетного выполнения модели.
(включенный сгенерированным файлом сборки модели matlabroot/rtw/c/src/dt_info.h
)model.h
Эти файлы содержат информацию о переходе типа данных, которая предоставляет доступ к структурам мультитипа данных через различные архитектуры ЭВМ. Эта информация используется в преобразованиях данных между хостом и целевыми форматами.
common/updown_util.h
Этот файл содержит только условные выражения для компиляции макроса assert
.
common/ext_svr_transport.h
Этот файл задает функции Ext*
, которые должны быть реализованы сервером (цель) транспортный уровень.
common/ext_share.h
Содержит определения сообщения кода и другие определения, требуемые обоими хост и целевые модули.
serial/ext_serial_utils.c
Содержит функции и структуры данных для коммуникации, ссылки MEX и сгенерированного кода, требуемого обоими хост и целевые модули транспортного уровня для последовательных протоколов.
Последовательная транспортная реализация включает дополнительные файлы
serial/ext_serial_pkt.c
и ext_serial_pkt.h
serial/ext_serial_port.h
Создайте пользовательский клиент (хост) транспортный протокол
Команды MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX
Укажите пользовательский клиент (хост) транспортный протокол
Создайте пользовательский сервер (цель) транспортный протокол
Последовательный получают буфер, меньшего размера, чем 64 байта
По умолчанию ext_svr.c
и updown.c
используют malloc
, чтобы выделить буферы в целевой памяти для сообщений, сбора данных и других целей, несмотря на то, что существует также опция, чтобы предварительно выделить статическое ЗУ. Если ваша цель использует другую схему выделения памяти, необходимо изменить эти модули.
Цель принята, чтобы поддержать и int32_T
и типы данных uint32_T
.
Реализовывать клиент (хост) сторона вашего низкоуровневого транспортного протокола,
Отредактируйте файл шаблона
, чтобы заменить низкоуровневые коммуникационные вызовы на ваши собственные коммуникационные вызовы.matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
Скопируйте и переименуйте файл к
(заменяющий rtiostream_name.c
на имя, значимое для вас).name
Замените функции rtIOStreamOpen
, rtIOStreamClose
, rtIOStreamSend
и rtIOStreamRecv
с функциями (того же имени), которые вызывают ваши низкоуровневые коммуникационные примитивы. Эти функции вызваны от других модулей режима external mode через rtiostream_interface.c
. Для получения дополнительной информации смотрите Коммуникации rtiostream API (Embedded Coder).
Встройте свою реализацию rtiostream
в разделяемую библиотеку, которая экспортирует rtIOStreamOpen
, rtIOStreamClose
, rtIOStreamRecv
и функции rtIOStreamSend
.
Создайте индивидуально настраиваемый исполняемый файл файла MEX использование функции MATLAB® mex
. См. Команды MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX для примеров вызовов mex
.
Не заменяйте существующий файл MEX ext_comm
, если вы хотите сохранить его функциональность. Вместо этого используйте опцию -output
, чтобы назвать новый исполняемый файл, например, my_ext_comm
. Для получения дополнительной информации смотрите mex
.
Укажите свой новый клиентский транспортный уровень с программным обеспечением Simulink, так, чтобы транспорт мог быть выбран для модели с помощью панели Interface диалогового окна Configuration Parameters. Для получения дополнительной информации смотрите Регистр Пользовательский Клиент (Хост) Транспортный протокол.
Демонстрационные команды для восстановления файлов MEX режима external mode перечислены в Командах MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX.
В следующей таблице перечислены команды для создания стандартного ext_comm
и модулей ext_serial_win32
на платформах UNIX® и PC.
Платформа | Команды |
---|---|
Windows®, TCP/IP | >> cd (matlabroot) >> mex toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_comm.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_convert.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\common\rtiostream_interface.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_util.c ... -Irtw\c\src -Itoolbox\coder\rtiostream\src\utils ... -Irtw\c\src\ext_mode\common ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common\include ... -lmwrtiostreamutils -lmwsl_services ... -DEXTMODE_TCPIP_TRANSPORT ... -DSL_EXT_DLL -output my_ext_comm ПримечаниеФункция |
Linux®, TCP/IP | Используйте команды Windows с этими изменениями:
|
Mac, TCP/IP | Используйте команды Windows с этими изменениями:
|
Windows, последовательный | >> cd (matlabroot) >> mex toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_comm.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_convert.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\serial\ext_serial_transport.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\serial\ext_serial_pkt.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\serial\rtiostream_serial_interface.c ... toolbox\coder\simulinkcoder_core\ext_mode\host\common\ext_util.c ... -Irtw\c\src -Itoolbox\coder\rtiostream\src\utils ... -Irtw\c\src\ext_mode\common ... -Irtw\c\src\ext_mode\serial ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common\include ... -lmwrtiostreamutils -lmwsl_services ... -DEXTMODE_SERIAL_TRANSPORT -DSL_EXT_DLL ... -output my_ext_serial_comm ПримечаниеФункция |
Linux, последовательный | Используйте команды Windows с этими изменениями:
|
Mac, последовательный | Используйте команды Windows с этими изменениями:
|
mex
требует компилятора, поддержанного MATLAB API. Смотрите страницу с описанием mex
и Выбор MATLAB API for Your Application (MATLAB) для получения дополнительной информации о функции mex
.
Чтобы указать пользовательский клиентский транспортный протокол с программным обеспечением Simulink, необходимо добавить запись следующей формы к файлу sl_customization.m
на пути MATLAB:
function sl_customization(cm) cm.ExtModeTransports.add('stf.tlc', 'transport', 'mexfile', 'Level1'); % -- end of sl_customization
где
является именем системного конечного файла, для которого транспорт будет указан (например, stf.tlc
'grt.tlc'
)
является транспортным именем, чтобы отобразиться в меню Transport layer на панели Interface диалогового окна Configuration Parameters (например, transport
'mytcpip'
)
является именем связанного внешнего интерфейсного файла MEX транспорта (например, mexfile
'ext_mytcpip_comm'
)
Можно задать несколько целей и/или транспортов с дополнительными строками cm.ExtModeTransports.add
, например:
function sl_customization(cm) cm.ExtModeTransports.add('grt.tlc', 'mytcpip', 'ext_mytcpip_comm', 'Level1'); cm.ExtModeTransports.add('ert.tlc', 'mytcpip', 'ext_mytcpip_comm', 'Level1'); % -- end of sl_customization
Если вы поместите файл sl_customization.m
, содержащий транспортную информацию о регистрации о пути MATLAB, ваш пользовательский клиентский транспортный протокол будет указан с каждым последующим сеансом Simulink. Имя транспорта появится в меню Transport layer на панели Interface диалогового окна Configuration Parameters. Когда вы выберете транспорт для своей модели, имя связанного внешнего интерфейсного файла MEX появится в недоступном для редактирования поле MEX-file name, как показано в следующей фигуре.
Прототипы функции rtIOStream*
в
задают интерфейс вызова и для сервера (цель) и для клиента (хост) функции транспортного уровня стороны.matlabroot/toolbox/coder/rtiostream/src/rtiostream.h
Прототипы функции Ext*
в
реализованы в matlabroot/rtw/c/src/ext_mode/common/ext_svr_transport.h
или matlabroot/rtw/c/src/ext_mode/common/rtiostream_interface.c
. В большинстве случаев вы не должны будете изменять matlabroot/rtw/c/src/ext_mode/serial/rtiostream_serial_interface.c
rtiostream_interface.c
или rtiostream_serial_interface.c
для вашего пользовательского TCP/IP или последовательного транспортного уровня.
Реализовывать сервер (цель) сторона вашего низкоуровневого TCP/IP или последовательного транспортного протокола:
Отредактируйте шаблон
или matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
, чтобы заменить низкоуровневые коммуникационные вызовы на ваши собственные коммуникационные вызовы.matlabroot/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Скопируйте и переименуйте файл к
(заменяющий rtiostream_name.c
на имя, значимое для вас).name
Замените функции rtIOStreamOpen
, rtIOStreamClose
, rtIOStreamSend
и rtIOStreamRecv
с функциями (того же имени), которые вызывают ваши низкоуровневые коммуникационные драйверы.
Необходимо реализовать функции, определяемые в rtiostream.h
, и реализации должны соответствовать прототипам, заданным в том файле. Обратитесь к исходному rtiostream_tcpip.c
или rtiostream_serial.c
для руководства.
Включите исходные файлы режима external mode для своего транспортного уровня в процесс сборки модели. Используйте механизм процесса сборки, такой как команда генерации кода сообщения или функция рычага before_make
, чтобы сделать транспортные файлы доступными для процесса сборки. Для получения дополнительной информации о механизмах процесса сборки смотрите, Настраивают Обработку Сборки Постгенерации кода, Настраивают Процесс сборки с Файлом STF_make_rtw_hook и Настраивают Процесс сборки с sl_customization.m.
Например:
Добавьте файл, созданный на предыдущем шаге к информации о сборке:
path/rtiostream_name
.c
Для TCP/IP добавьте следующий файл в информацию о сборке:
matlabroot/rtw/c/src/ext_mode/common/rtiostream_interface.c
Для сериала добавьте следующие файлы в информацию о сборке:
matlabroot/rtw/c/src/ext_mode/serial/ext_serial_pkt.c matlabroot/rtw/c/src/ext_mode/serial/rtiostream_serial_interface.c matlabroot/rtw/c/src/ext_mode/serial/ext_svr_serial_transport.c
Для режима external mode проверяйте, что rtIOStreamRecv
не является блокирующейся реализацией. В противном случае это может заставить сервер режима external mode блокироваться, пока хост не отправляет данные через слой comm
.
Для последовательной передачи, если сериал получает буфер вашей цели, меньше, чем 64 байта:
Обновите следующий макрос с фактическим целевым buffer size:
#define TARGET_SERIAL_RECEIVE_BUFFER_SIZE 64
Реализуйте изменение в следующих файлах:
matlabroot/rtw/c/src/ext_mode/serial/ext_serial_utils.c matlabroot/toolbox/coder/simulinkcoder_core/ext_mode/host/serial/ext_serial_utils.c
Запустите команду, чтобы восстановить файл MEX ext_serial_win32
. См. Команды MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX.