我有一台用Python设置的服务器,并且已经成功地建立了一个简单的通信协议,其中一个客户端运行在Matlab脚本中。我需要在Simulink模型中运行此函数,以测试我正在开发的一些控制器。由于UDP不支持代码生成,我已经尝试设置功能外在如下: 使用Matlab功能块的Simulink中的UDP
function z = fcn(u)
elevationMatrix = zeros(3,3);
coder.extrinsic('udp', 'fwrite', 'fopen');
% connect to the server
t = udp('localhost', 2002);
fopen(t);
% write a message
fwrite(t, 'This is a test message.');
% read the echo
bytes = fread(t, [t.BytesAvailable, 1], 'char');
%fit the data into a matrix
temp = reshape(bytes, [8 9]);
z = zeros(1,9);
for col = 1:9
bytepack=uint64(0);
for row = 1:8
temp(9-row, col)
bytepack = bitshift(temp(9 - row, col),8*(8-row));
z(col) = bitor(bytepack,z(col));
temp(row, col);
end;
end;
z = reshape(z, [3,3])';
% close the connection
fclose(t);
我得到了一些错误,我无法解决;即“尝试从”mxArray“中提取字段”BytesAvailable“,我猜测是因为我需要以某种方式预先定义t的大小。我对“字节”,“temp”和“bytepack”都有同样的看法。
除非您可以指出我可以通过内置Simulink UDP模块发送不同字符串的方式,否则我宁愿不要沿着该路线走,因为我将按名称调用在python服务器上调用函数。
2015-07-28
RYS