rtiostream
API rtiostream
поддерживает коммуникации для целевого API возможности соединения. Используйте API rtiostream
, чтобы реализовать канал связи, который включает обмен данными между различными процессами.
PIL симуляция требует целевого хостом коммуникационного канала. Этот коммуникационный канал включает код драйвера, который работает на хосте и цели. API rtiostream
задает подпись целевой стороны и функций стороны хоста, которые должен реализовать этот код драйвера.
API независим от физического уровня, который отправляет данные. Возможные физические уровни включают RS232, Ethernet или Сеть области контроллера (CAN).
Полная реализация rtiostream
требует и стороны хоста и драйверов целевой стороны. Программное обеспечение генерации кода включает драйверы стороны хоста для реализации TCP/IP по умолчанию и версию для последовательной передачи данных. Использовать:
Коммуникационный канал rtiostream
TCP/IP, необходимо обеспечить или получить от третьего лица, целевых драйверов устройств TCP/IP.
Канал последовательной передачи данных, необходимо обеспечить или получить от третьего лица, целевых драйверов последовательного устройства.
Для других каналов связи и платформ, программное обеспечение генерации кода не обеспечивает реализации по умолчанию. Необходимо обеспечить и сторону хоста и драйверы целевой стороны.
API rtiostream
включает следующие функции:
Для получения информации о:
Используя функции rtiostream
в реализации возможности соединения, смотрите, Создают Целевую Реализацию API Возможности соединения.
Тестирование rtiostream
совместно использовало методы библиотеки из кода MATLAB®, смотрите rtiostream_wrapper
.
При отладке и проверке поведения пользовательских реализаций интерфейса rtiostream
, смотрите Тест rtiostream Драйвер.
Если вы используете API rtiostream
, чтобы реализовать коммуникационный канал, хост и цель должны синхронизироваться, который препятствует тому, чтобы Simulink® передал и получил данные, прежде чем целевое приложение будет полностью инициализировано.
Чтобы синхронизировать хост и цель для TCP/IP rtiostream реализации, используйте метод setInitCommsTimeout
от rtw.connectivity.RtIOStreamHostCommunicator
. Этот подход работает хорошо на TCP/IP с установлением соединения реализации rtiostream
, потому что Simulink автоматически ожидает, пока целевой сервер не запускается.
С другими реализациями rtiostream
, например, последовательный, сторона Simulink связи rtiostream
открывается, не ожидая цели, которая будет полностью инициализирована. В этом случае необходимо заставить реализацию Launcher
ожидать, пока целевое приложение полностью не инициализируется. Используйте один из следующих подходов, чтобы синхронизировать ваш хост и цель:
Добавьте паузу в конце реализации Launcher
, которая заставляет Launcher
ожидать, пока целевая инициализация не завершена.
В реализации Launcher
используйте сторонний загрузчик или API отладчика, которые ожидают, пока целевая инициализация не завершена.
Реализуйте механизм квитирования в Launcher
/ реализация rtiostream
, которая подтверждает завершение целевой инициализации.
rtiostream
Используйте тестовый набор, чтобы отладить и проверить поведение пользовательских реализаций интерфейса rtiostream
.
Тестовый набор имеет следующие преимущества:
Уменьшает время для интеграции специального оборудования, которое не имеет встроенной поддержки rtiostream
.
Уменьшает время для тестирования пользовательских драйверов rtiostream
.
Помогает анализировать производительность пользовательских драйверов rtiostream
.
Тестовый набор имеет две части. Одна часть тестового набора работает на цели.
После создавания целевого приложения загрузите его на цель и запустите его.
Чтобы запустить эту часть, скомпилируйте и соедините следующие файлы, которые находятся в (открытой)
папке
.matlabroot/toolbox/coder/rtiostream/src/rtiostreamtest
rtiostream.h
, расположенный в (открытой)
папке
matlabroot/toolbox/coder/rtiostream/src
Реализация rtiostream
под следствием (например, rtiostream_tcpip.c
)
Чтобы запустить часть MATLAB тестового набора, вызовите rtiostreamtest
. Синтаксис следующие:
rtiostreamtest(connection,param1,param2)
connection
является вектором символов, указывающим на коммуникационный метод. Это может иметь значения 'tcp'
или 'serial'
.
param1
и param2
имеют различные значения в зависимости от значения connection
.
Если connection
является 'tcp'
, то param1
и param2
являются именем узла и портом, соответственно. Например, rtiostreamtest('tcp', 'localhost', 2345)
.
Если connection
является 'serial'
, то param1
и param2
является COM-порт и скорость в бодах, соответственно. Например, rtiostreamtest('serial', 'COM1', 9600)
.
Можно запустить часть MATLAB тестового набора можно следующим образом:
rtiostreamtest('tcp','localhost','2345')
### Test suite for rtiostream ### Initializing connection with target... ### Hardware characteristics discovered Size of char : 8 bit Size of short : 16 bit Size of int : 32 bit Size of long : 32 bit Size of float : 32 bit Size of double : 64 bit Size of pointer : 64 bit Byte ordering : Little Endian ### rtiostream characteristics discovered Round trip time : 0.96689 ms rtIOStreamRecv behavior : non-blocking ### Test results Test 1 (fixed size data exchange): ......... PASS Test 2 (varying size data exchange): ......... PASS ### Test suite for rtiostream finished successfully ###
На панели Hardware Implementation, когда вы задаете настройки Device vendor и Device type, вы предоставляете PIL симуляциям адресную информацию памяти о целевом компьютере.
Например, рассмотрите случай, когда Device vendor установлен в Texas Instruments
, и Device type установлен в C5000
.
Настройки указывают, что целевой компьютер использует 16-битные адреса слова и порядок слов с обратным порядком байтов. rtiostream реализация действует с 16-битными словами.
На целевом компьютере, если функция rtIOStream
задает размер 1, то целевой компьютер должен отправить или получить одно 16-битное слово (2 байта). sizeof(char)
и sizeof(short)
возвращаются 1, который соответствует одному 16-битному слову. Функция rtIOStream
ожидает, что порядок байтов в слове будет прямым порядком байтов, то есть, менее значительные байты передаются перед более значительными байтами.
rtiostreamtest
идентифицирует целевой компьютер и обрабатывает данные с точки зрения 16-битных слов, например, значение байта передается как 16-битное значение слова.
rtIOStreamClose
| rtIOStreamOpen
| rtIOStreamRecv
| rtIOStreamSend
| rtiostream_wrapper
| rtw.connectivity.RtIOStreamHostCommunicator