Simulink输入接口查找PortSearch

配合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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值