3

コンパイルされたコードを外部の Simulink のハードウェアで実行しているときに、BeagleBoard xM に接続されたセンサーからの出力を取得しようとしています。出力をスコープにパイプし、スコープに表示される '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