Системный вызов от Simulink с внешним оборудованием (Raspberry PI) - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу сделать системный вызов из модели Matlab Simulink, работающей на внешнем оборудовании. В моем случае я хочу выключить оригинальный сенсорный дисплей Raspberry Pi (7 ") и установить

Я пытался использовать функцию Matlab с системной командой Matlab, но она просто не влияет на отображение (система сама вызывает работу с терминалом) .

function display_backlight(old_status)
coder.extrinsic('system')

if old_status == 1
    system('echo 1 | sudo tee /sys/class/backlight/rpi_backlight/bl_power')
else 
    system('echo 0 | sudo tee /sys/class/backlight/rpi_backlight/bl_power')
end    
end

Есть идеи, как заставить это работать, или мне нужно использовать другой блок, как упомянуто здесь Возможен системный вызов из Simulink? (ссылка в ответе не работает)

Или мне даже нужно написать это на C и интегрировать это в Simulink?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Это мое решение, так как оно не будет работать напрямую из блока matlab simulink:

  1. Добавить блок "Matlab System"
  2. Добавить исходный файл .m, который выполняется.c / .h code.
  3. Добавить файл .c / .h, который запускает системную команду из c.
#include <display_backlight_on.h>

char command[50];        

void display_backlight_on_command(boolean_T turn_on)
{  
    if (turn_on == 1)
    {
        strcpy( command, "echo 0 | sudo tee /sys/class/backlight/rpi_backlight/bl_power" );
        system(command);
    }
}
0 голосов
/ 03 мая 2018

Функция MATLAB system не поддерживает кодоген. Поэтому, если вы используете system в функциональном блоке MATLAB, он не будет генерировать код и, следовательно, не будет никакого эффекта.

Вам следует создать новый блок, если вы хотите что-то, как указано в вопросе.

...