Этот раздел помогает вам соединить пользовательский целевой объект с помощью режима 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 (последовательной) связи. Целевой объект Real-Time™ Simulink Desktop поддерживает обмен общей памятью. The Wind River® Системы Торнадо® целевой объект поддерживает только TCP/IP.
Продукт Simulink Coder предоставляет полный исходный код как для клиентских, так и для серверных модулей режима external mode, как используется целями GRT, ERT, Rapid Simulation и Tornado, а также продуктами Simulink Desktop Real-Time и Simulink 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
The rtiostream_interface.c
файл является интерфейсом между протоколом режима external mode и rtiostream
канал связи. Для получения дополнительной информации о реализации и проверке rtiostream
канал связи, см.:
Communications rtiostream API (Embedded Coder)
Реализуйте свои rtiostream
коммуникационный канал при помощи документированного интерфейса, чтобы избежать необходимости вносить изменения в файл rtiostream_interface.c
или другие связанные с внешним режимом файлы.
Примечание
Не изменяйте рабочие исходные файлы. Используйте шаблоны, указанные в /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 диалогового окна Параметры конфигурации.
Дополнительные сведения см. в разделе Создание транспортного протокола пользовательского клиента (хоста).
Общая процедура реализации низкоуровневого транспортного протокола на стороне сервера заключается в следующем:
Отредактируйте шаблон 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 с помощью пакетов данных.
Хост инициирует большинство обменов как сообщения. Цель обычно отправляет ответ, подтверждающий, что она получила и обработала сообщение. Примерами сообщений и команд являются:
Сообщение о соединении/ответ о соединении
Запустите симуляцию цели/запустите ответ
Ответ загрузки параметра/загрузки параметра
Триггер руки для загрузки данных триггера руки
Завершает симуляцию цели/ответ завершения работы цели
Выполнение модели заканчивается, когда модель достигает своего последнего времени, когда хост отправляет команду terminate или когда блок 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
канал связи, см. Communications rtiostream API (Embedded Coder). Реализуйте свои rtiostream
коммуникационный канал с использованием документированного интерфейса, чтобы избежать необходимости изменения файла rtiostream_interface.c
или другие связанные с внешним режимом файлы.
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
, который расположен в
(open) и содержит функции, общие для клиентской и серверной сторон.matlabroot
/ rtw/c/src/ext_mode/serial
common/ext_main.c
Этот файл является оболочкой файлов MEX для режима external mode. ext_main.c
интерфейсы к движку Simulink при помощи стандартного mexFunction
вызов. (См. mexFunction
Страница с описанием и выбор MATLAB API для вашего приложения для получения дополнительной информации.) ext_main.c
содержит диспетчер функций, esGetAction
, который отправляет запросы от механизма Simulink в ext_comm.c
.
common/ext_convert.c
и ext_convert.h
Этот файл содержит функции, используемые для преобразования данных из хоста в целевые форматы (и наоборот). Функции включают байт-обмен (большой на little-endian), преобразование из не-IEEE® с плавающей точкой в IEEE удваивается, и другие преобразования. Эти функции вызываются обеими ext_comm.c
и непосредственно механизмом Simulink (при помощи указателей на функцию).
Примечание
Вам не нужно настраивать ext_convert
для реализации пользовательского транспортного слоя. Однако можно хотеть настроить ext_convert
для предполагаемой цели. Для примера, если цель представляет float
тип данных в формате Instruments™ Техаса, ext_convert
необходимо изменить, чтобы выполнить преобразование инструментов Техаса в 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
канал связи, см. Communications rtiostream API (Embedded Coder). Реализуйте свои rtiostream
коммуникационный канал при помощи документированного интерфейса, чтобы избежать необходимости изменения файла rtiostream_interface.c
или другие связанные с внешним режимом файлы.
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
Зарегистрируйте пользовательский транспортный протокол клиента (хоста)
Создайте пользовательский транспортный протокол сервера (Target)
По умолчанию ext_svr.c
и updown.c
использовать malloc
выделять буферы в целевой памяти для сообщений, набора данных и других целей, хотя существует также опция предварительного выделения статической памяти. Если ваша цель использует другую схему выделения памяти, вы должны изменить эти модули.
Цель принята для поддержки обоих int32_T
и uint32_T
типы данных.
Для реализации клиентской (хост) стороны низкоуровневого транспортного протокола,
Отредактируйте файл шаблона
заменить низкоуровневые коммуникационные вызовы на собственные коммуникационные вызовы.matlabroot
/ toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c
Скопируйте и переименуйте файл в
(замена rtiostream_<reservedrangesplaceholder0 >
.c
с именем, значимым для вас).name
Замените функции rtIOStreamOpen
, rtIOStreamClose
, rtIOStreamSend
, и rtIOStreamRecv
с функциями (с тем же именем), которые вызывают ваши низкоуровневые примитивы связи. Эти функции вызываются из других модулей режима external mode через rtiostream_interface.c
. Для получения дополнительной информации смотрите Communications 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 диалогового окна Параметры конфигурации. Для получения дополнительной информации см. раздел Регистрация транспортного протокола пользовательского клиента (хоста).
Примеры команд для перестройки MEX-файлов внешнего режима перечислены в MATLAB Commands to Rebuild ext_comm и ext_serial_win32 MEX-файлах.
В следующей таблице перечислены команды для создания стандартных ext_comm
и ext_serial_win32
модули на ПК и 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 для вашего приложения для получения дополнительной информации о 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 диалогового окна Параметры конфигурации. При выборе транспорта для модели имя связанного внешнего файла MEX интерфейса появится в поле MEX-file name с недоступностью для редактирования, как показано на следующем рисунке.
The 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
Примечание
The 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_<reservedrangesplaceholder0 >
.c
с именем, значимым для вас).name
Замените функции rtIOStreamOpen
, rtIOStreamClose
, rtIOStreamSend
, и rtIOStreamRecv
с функциями (с тем же именем), которые вызывают ваши низкоуровневые драйверы связи.
Необходимо реализовать функции, определенные в rtiostream.h
, и ваши реализации должны соответствовать прототипам, заданным в этом файле. См. оригинал rtiostream_tcpip.c
или rtiostream_serial.c
для руководства.
Включите исходные файлы режима external mode для вашего транспортного слоя в процесс сборки модели. Используйте механизм процесса сборки, такой как команда post генерации кода или before_make
функция hook для обеспечения доступности транспортных файлов для процесса сборки. Дополнительные сведения о механизмах процесса сборки см. в разделах Настройка обработки сборки после генерации кода, Настройка процесса сборки с помощью 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».