3

我正在尝试从连接我的 BeagleBoard xM 的传感器捕获输出,同时在 Simulink 的硬件上运行编译后的代码。我将输出传送到一个范围,我得到一个显示在范围上的整数值“2”。

function y = fcn()
%#codegen

persistent firstTime;
persistent pf;
persistent g;
persistent z;
z = '0';
g='0';

if isempty(firstTime)
    firstTime = 0;   
    pf = coder.opaque('FILE *');
    if isequal(coder.target, 'rtw')
        cmd1 = c_string('i2cset -y 2 0x53 0x2D 0x8');
        coder.ceval('system', coder.rref(cmd1));
    end
end

y = coder.nullcopy(uint8(0));
res = coder.nullcopy(uint8(zeros(1, 10)));
readOnly = c_string('r');
readCmd = c_string('echo 3');
cmd2 = c_string('echo 3');

if isequal(coder.target, 'rtw')
    pf = coder.ceval('popen', coder.rref(readCmd), coder.rref(readOnly));
    coder.ceval('fgets', coder.wref(res), 10, pf);
    g = coder.ceval('printf', c_string('%s'), c_string(res));
    y = uint8(g);

    coder.ceval('pclose', pf);
end

end

function str = c_string(str)
  str = [str, 0];
end
4

0 回答 0