1

I'm parsing a text file with matlab which looks like this :

[Date]
2019-03-27 10:45:10.167618
[Component]
  Component_Name : Manager principal
  Component_ID : _ocl_MEu9Eemg_bhrv2HEbw
  {Port}
    Port_Name : FOP 1
    Port_ID : _sZMXoEu9Eemg_bhrv2HEbw
    Port_Type : Outgoing Port

[Component]
  Component_Name : Manager 2
  Component_ID : _r-HlMEu9Eemg_bhrv2HEbw
  {Port}
    Port_Name : FIP 1
    Port_ID : _sZWIoku9Eemg_bhrv2HEbw
    Port_Type : Incoming Port

[Link]
  Link_Name : On/Off
  Link_ID : _sZfSkku9Eemg_bhrv2HEbw

  Link_Source_Name : Manager principal
  Link_Source_ID : _ocl_MEu9Eemg_bhrv2HEbw
  Link_Source_Port_Name : FOP 1
  Link_Source_Port_ID : _sZMXoEu9Eemg_bhrv2HEbw

  Link_Target_Name : Manager 2
  Link_Target_ID : _r-HlMEu9Eemg_bhrv2HEbw
  Link_Target_Port_Name : FIP 1
  Link_Target_Port_ID : _sZWIoku9Eemg_bhrv2HEbw

I create a systeme for each [Component] i find and in each systems i create an input or output if the [Component] is a Source or a Target of a [Link]. In my text file example : On/Off is a link between 'Manager principal' and 'Manager 2'. So in the first System (Manager principal) i have an output called On/Off with a specific tag in tag description i set and in the second system (Manager 2) an input called On/Off with a specific tag in the Block tag i set.

So when i launch my code i have 2 system with 1 block in each system. In this 2 blocks, if it's about the same link (in this example it is) we have this tag :

@_sZMXoEu9Eemg_bhrv2HEbw ==> @_sZWIoku9Eemg_bhrv2HEbw

The ID of the source port ==> the ID of the target port

This is what distinguish a Link than an other.

The context is : if the user change only the name of the Link for example Off/On instead of On/Off it must not create a new block because it's the same Link. So i would like to make a findBlocks() and for each blocks in the current system, i would like to do : if both ID's in tag description are same than in the text file so we just update the name of the block for example .

Here is the code where i create my blocks : Update : I success to recover C which is the string inside Block tag.

B = find_system(sprintf('%s', component_NameValue));
C = get_param(find_system(sprintf('%s/%s', component_NameValue, link_NameValue)), 'Tag');

if (compareOut == 1) && (compareSource == 1) % Si c'est un port sortant et que c'est le port source du link 
    add_block('simulink/Ports & Subsystems/In1',[component_NameValue '/' link_NameValue]); % alors on ajoute un block Output de même nom que le link dans le système du composant que l'on parse
    linkDescription = sprintf('Link : \n\n%s ==> %s \n\nComposant : \n\nDe : %s (%s) \nVers : %s (%s) \n\nPort Source : \n\n%s \n%s \n\n', link_NameValue , link_IDValue  , link_SourceNameValue , link_SourceIDValue, link_TargetNameValue , link_TargetIDValue, link_SourcePortNameValue, link_SourcePortIDValue);
    linkTag = sprintf('@%s ==> @%s', link_SourcePortIDValue, link_TargetPortIDValue);
    set_param(gcb, 'Tag', linkTag);
    set_param(gcb,'Description',linkDescription); % On ajoute une description au block contenant les infos du lien en question contenus dans le fichier texte
end
if (compareIn == 1) && (compareTarget == 1) % Si c'est un port entrant et que c'est le port target du link
    add_block('simulink/Ports & Subsystems/Out1',[component_NameValue '/' link_NameValue]); % alors on ajoute un block Input de même nom que le link dans le système du composant que l'on parse
    linkDescription = sprintf('Link : \n\n%s ==> %s \n\nComposant : \n\nDe : %s (%s) \nVers : %s (%s) \n\nPort Target : \n\n%s \n@%s', link_NameValue , link_IDValue  , link_SourceNameValue , link_SourceIDValue, link_TargetNameValue , link_TargetIDValue,link_TargetPortNameValue, link_TargetPortIDValue);
    linkTag = sprintf('@%s ==> @%s', link_SourcePortIDValue, link_TargetPortIDValue); %On ajoute un @ devant l'ID du port pour pouvoir le retrouver et voir si un port à été modifié/rajouté/supprimé
    set_param(gcb, 'Tag', linkTag);
    set_param(gcb,'Description',linkDescription); % On ajoute une description au block contenant les infos du lien en question contenus dans le fichier texte
end

Thanks for helping in advance

Lucas
  • 247
  • 3
  • 13

0 Answers0