配合Extend方法使用:Simulink递归延申接口方法Extend
输入:
Sub: 当前子系统路径
SigName: 要查找的信号名
输出:
Found: 查找标志位,true代表找到
FromTag: 如果此接口已有Goto From,直接获取FromTag
LineHandle: 如果此端口没有线,延申出来信号线配合GotoGen使用
function [Found,FromTag,LineHandle] = PortSearch(Sub,SigName)
Found = false;
FromTag = '';
LineHandle = -1;
Subports = get_param(Sub,'PortHandles');
ports = find_system(Sub,'FindAll','on','SearchDepth',1,'type','port','PortType','outport');
ports = setdiff(ports,Subports.Outport);
for i = 1 : length(ports)
PropName = get(ports(i),'PropagatedSignals');
if isempty(PropName)
PropName = get(ports(i),'Name');
end
if strcmp(SigName,PropName)
Found = true;
parent = get(ports(i),'Parent');
type = get_param(parent,'BlockType');
%找到的是From
if strcmp(type,'From')
FromTag = get_param(parent,'GotoTag');
break
else
%找到的是其他模块
LineHandle = get(ports(i),'Line');
if LineHandle < 0
pos = get(ports(i),'Position');
LineHandle = add_line(Sub,[pos;pos(1) + 200,pos(2)]);
end
end
end
end
end