异想天开

What's the true meaning of light, Could you tell me why

adams输出端口名称在simulink中末尾空格问题

日期:2017-05-10 21:34:22
  
最后更新日期:2017-05-10 21:42:19
adams输出端口有个奇怪的问题,名称末尾带有空格,比如model/adams_sub/VARIABLE_1,在simulink里面看到该路径会在后面随机添加几个空格,原本是打算根model/adams_sub/VARIABLE_1来映射到对应的另外一个block名为VARIABLE_1的输入端口。
解决办法:
1. 遍历adams_sub下面的type为block的对象
2. 选择BlockType为outport的这些对象
3. 通过遍历得到对象路径,用get_param得到输出的数字端口port1
4. 利用字符串的处理函数strtrim将尾部的空格去掉,通过字符串拼接成另外一个block的path,get_param获取到输入端口port2
5. 将这两个端口通过add_line连接起来

伪码如下:
[code lang="cpp"]
my_cell = find_system('my_model/adams_sub','Type','Block');
len = size(my_cell);
for i = 1:1:len(1)
if strcmp( get_param(my_cell(i),'BlockType'), 'Outport' )
to_str =my_cell{i};
port1 = get_param(to_str, 'Port');
to_str = sprintf('adams_sub/%s',port1);
my_str = strtrim( my_cell{i} );
ll = length(my_str);
from_str = my_str( 31:ll);
from_str = sprintf('my_model/Other_Block/%s',from_str);
port2 = get_param(from_str, 'Port');
from_str = sprintf('Other_Block/%s',port2);
add_line('my_model',to_str, from_str);
end
end
[/code]