Этот раздел помогает вам соединить свою пользовательскую цель при помощи режима external mode с помощью собственного низкоуровневого коммуникационного слоя. Темы включают:
Обзор проекта и операция режима external mode
Описание исходных файлов режима external mode
Инструкции для изменения исходных файлов режима external mode и создания исполняемого файла, чтобы справиться с задачами ext_comm
по умолчанию Файл MEX
Этот раздел принимает, что вы знакомы с выполнением Simulink® Программы Coder™, и с основной операцией режима external mode.
Связь режима external mode между механизмом Simulink и целевой системой основана на клиент-серверной архитектуре. Клиент (механизм Simulink) передает сообщения, запрашивающие сервер (цель), чтобы принять изменения параметра или загрузить данные сигнала. Сервер отвечает путем выполнения запроса.
Низкоуровневый транспортный уровень обрабатывает физическую передачу сообщений. И механизм Simulink и типовой кодекс независимы от этого слоя. И транспортный уровень и код, непосредственно взаимодействующий через интерфейс к транспортному уровню, изолируются в отдельных модулях, что формат, передача, и получают пакеты данных и сообщения.
Этот проект позволяет различным целям использовать различные транспортные уровни. GRT, ERT и RSim предназначаются для коммуникации хоста/цели поддержки при помощи TCP/IP и RS-232 (последовательная) коммуникация. Цель Simulink Desktop Real-Time™ поддерживает коммуникацию общей памяти. Wind River® Системный торнадо® предназначайтесь поддерживает 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, и основан на опции Transport layer, которую вы задаете. Модули, названные из основной программы и механизма выполнения модели, независимы от сгенерированного типового кодекса.
Общая процедура для реализации вашего собственного клиентского низкоуровневого транспортного протокола следующие:
Отредактируйте шаблон 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 для получения дополнительной информации.) ext_main.c
содержит функционального диспетчера, esGetAction
, это отправляет запросы от механизма Simulink до ext_comm.c
.
common/ext_convert.c
и ext_convert.h
Этот файл содержит функции, используемые для преобразования данных от хоста до целевых форматов (и наоборот). Функции включают свопинг байта (большой к мало-порядку байтов), преобразование из не-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
вызовы.
Не заменяйте существующий ext_comm
Файл MEX, если вы хотите сохранить его функциональность. Вместо этого используйте -output
опция, чтобы назвать новый исполняемый файл, например, my_ext_comm
. Для получения дополнительной информации смотрите mex
.
Укажите свой новый клиентский транспортный уровень с программным обеспечением Simulink, так, чтобы транспорт мог быть выбран для модели с помощью панели Interface диалогового окна Configuration Parameters. Для получения дополнительной информации смотрите Регистр Пользовательский Клиент (Хост) Транспортный протокол.
Демонстрационные команды для восстановления файлов MEX режима external mode перечислены в Командах MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX.
В следующей таблице перечислены команды для создания стандартного ext_comm
и ext_serial_win32
модули на PC и UNIX® платформы.
Платформа | Команды |
---|---|
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 ... -R2018a ... -Itoolbox/coder/rtiostream/src ... -Itoolbox/coder/rtiostream/src/utils_host ... -Itoolbox/coder/simulinkcoder_core/ext_mode/host/common/include ... -Irtw/c/src/ext_mode/common ... -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 ... -R2018a ... -Itoolbox\coder\rtiostream\src ... -Itoolbox\coder\rtiostream\src\utils_host ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common ... -Itoolbox\coder\simulinkcoder_core\ext_mode\host\common\include ... -Irtw\c\src\ext_mode\common ... -Irtw\c\src\ext_mode\serial ... -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 для получения дополнительной информации о 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
Реализации TCP/IP находятся в
.matlabroot
/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
Последовательные реализации находятся в
.matlabroot
/toolbox/coder/rtiostream/src/rtiostreamserial/rtiostream_serial.c
Примечание
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.crtiostream_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
Запустите команду, чтобы восстановить ext_serial_win32
Файл MEX. См. Команды MATLAB, чтобы Восстановить ext_comm и ext_serial_win32 файлы MEX.