来自Simulink的系统调用外部硬件(Raspberry PI)

时间:2018-04-25 13:53:24

标签: matlab terminal raspberry-pi system-calls simulink

我想在外部硬件上运行的Matlab Simulink模型中进行系统调用。 在我的情况下,我想关闭原来的Raspberry Pi Touch Display(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

任何想法如何使这项工作或我需要使用这里提到的另一个块System call from Simulink possible?(答案中的链接不起作用)

或者我是否必须用C语言编写并将其集成到Simulink中?

2 个答案:

答案 0 :(得分:1)

这是我的解决方案,因为它不能直接从matlab simulink块中工作:

  1. 添加" Matlab系统"块
  2. 添加运行.c / .h代码的.m源文件。
  3. 添加一个.c / .h文件,该文件从c。
  4. 运行系统命令
    #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);
        }
    }
    

答案 1 :(得分:0)

MATLAB system函数不支持codegen。因此,如果您在MATLAB功能块中使用system,它将不会生成代码,因此不会产生任何影响。

如果你想要问题中提到的东西,你应该创建一个新的块。