Преобразовать сериализованные uint8 Поток данных MAVLink на невиртуальную шину Simulink
Панель инструментов БПЛА/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).