コンパイルされたコードを外部の 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