在Simulink RT显示端口中将数据显示为字符串

问题描述

我的问题涉及使用RS-232 Simulink RT模块。

模型被上载到目标PC(xpc),并从控制电动机的变频驱动器(VFD)发送和接收数据。当我获取数据并尝试将数据作为字符串发送到模型中的显示块时,在接收端会出现问题。代码在这里会有所帮助:

disp = uint8(zeros(1,24));
display = uint8(zeros(1,length(disp)));
cmd = 0;
status = stat_lb;
%% Start-Up 
% Initialization Period
if (status == 0 || status == 1)
    cmd = 0;
    msg = uint8('Start up');
    display = [msg uint8(zeros( 1,length(disp)- length(msg) ))];
end
...
%Multiple status cases with unique displays.
...
disp = display

因此,这里的cmd部分按预期运行。如上所述,我想在Simulink模型的显示块上显示display字符串。如您所见,它的类型为uint8,所以我需要将其转换为string类型。但是,当我通过ascii2str Simulink块或将其放置在函数调用中(例如display = ascii2str(display))时,会收到以下错误消息:

执行'CheckData'命令会产生以下错误:无效的参数/值对参数

我的想法是,这与我使用MEX并且不支持功能ascii2str)有关。无论如何,我想知道是否有人知道我为什么收到此错误,是否有什么我可以解决方法

哦,还有最后一件事:如果我只卸下ascii2str,就可以使显示器工作;但是,唯一的问题是显示是uint8形式的,实际上没有帮助。因此,如果还有其他方法可以将uint8解码为字符串,那么我将不知所措。

谢谢!

解决方法

我发现Simulink RT中不支持此功能。一种选择是使用外部函数,但我发现应用程序最好简单地输出一个数字,并在仿真中使用一张表来解释每个数字的含义。