Преобразование сериализованных uint8
Поток данных MAVLink в невиртуальную шину Simulink
БПЛА Toolbox/MAVLink
Блок десериализатора MAVLink получает uint8
буфер и декодирует буфер для сообщений MAVLink. Когда блок получает сообщение MAVLink для выбранного типа сообщения MAVLink, блок выводит Simulink® невиртуальная шина, представляющая пакет MAVLink, содержащий идентификатор сообщения, идентификатор системы, идентификатор компонента, последовательность и информацию полезной нагрузки, соответствующую выбранному типу сообщения MAVLink.
На каждом шаге симуляции блок декодирует входные uint8
буфер и извлекает сообщения MAVLink, которые принимаются после декодирования. Если новое сообщение для выбранного типа сообщения MAVLink получено, блок извлекает это сообщение из списка принятых сообщений и преобразует его в невиртуальный сигнал шины Simulink.
Логика декодирования MAVLink в блоке обеспечивает выполнение сценариев, в которых пакет MAVLink был принят частично из канала связи. Блок десериализатора MAVLink внутренне сохраняет текущее состояние анализа и возобновляет декодирование с предыдущего этапа, когда новый буфер был принят по каналу связи. Если полный пакет MAVLink был принят, а принятая контрольная сумма совпадает с вычисленной контрольной суммой для полученных байтов, это указывает, что было получено сообщение MAVLink. Сохранение состояния анализа гарантирует, что блок может декодировать пакеты MAVLink, принятые в нескольких частях.
По умолчанию блок выводит последнее полученное сообщение MAVLink для выбранного типа сообщения MAVLink (если оно получено). Это поведение можно изменить, выбрав Queue Messages in output параметр. В этом случае все принятые сообщения MAVLink для желаемого типа ставятся в очередь, и на каждом шаге симуляции блок выводит самое старое сообщение.
Чтобы ускорить преобразование полученных сериализованных данных, рекомендуется применить следующие настройки в блоке приема канала связи:
Считывайте данные с максимально возможной скоростью, чтобы убедиться, что никакие пакеты не отбрасываются. Используйте IsNew выход десериализатора MAVLink вместе с логикой, чтобы использовать сообщения MAVLink, чтобы узнать, является ли выход блока новым сообщением или нет.
Если блок приема выводит любое количество байтов, которые принимаются независимо от требуемого размера данных (частичный прием), упомяните размер чтения данных как большое количество и используйте длину фактического количества байтов, принятых в качестве входов для блока десериализатора MAVLink (используйте Length входной порт).