MATLAB, как обрабатывать поток данных UDP пакета? новый вопрос
Добрый день для проверки и отладки работы фильтра в процессоре, решил загнать результат фильтра в матлаб через UDP пакеты.
Принимать пакеты асинхронно c Callback научился
Но дальше появились вопросы:
1) Как зациклить прием(сейчас после запуска скрипта принимаееться N пакетов и скрипт завершается) ?
Можно как то в Callback запустить ещё раз прием но от суда возникает второй вопрос
2) Как остановить скрипт ?
Если жать на паузу в момент работы, то сокет не закрываеться, и потом матлаб ругает что порт уже порт/сокет открыт занят, и не хочет работать до перезагрузки матлаба.
В общем в идеале хочу добиться, что бы принятые данных отображались на графике в режиме реального времени т.е со здвижкой данных+ кнопка включить/выключить прием(запуск скрипта).
В общем подскажите в какую сторону грести. Думаю скрипт(.m) надо оформить в виде модуля и подцепить его в симулинке, но с симулинком не работал по этому незнаю правильная или нет моя затея.
Ответы
Быстрее всего действительно сделать это в Simulink, потому что, скорее всего, будет достаточно одного блока UDP Recieve из пакета Instrument Control Toolbox. Запускаете модель - принимаете сигнал в Scope. Останавливаете - порт закрывается.
Если делать в MATLAB, то для удобной работы можно сделать приложение. Вот пример приложения для приема данных по Serial с Ардуино. Там есть описание логики работы.
https://www.mathworks.com/matlabcentral/fileexchange/57168
https://github.com/ETMC-Exponenta/LEDControlApp
В приложении rgb_control для приема данных используется callback-функция, а для обновления интерфейса и отрисовки графика создается асинхронный таймер.