WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Automatisches Laden einer Funktion

 

amoibos
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.05.14
Wohnort: ---
Version: 2013a
     Beitrag Verfasst am: 25.07.2014, 12:10     Titel: Automatisches Laden einer Funktion
  Antworten mit Zitat      
Ich hab das Menü "Tools" in Simulink erweitert, welches über eine Funktion ermöglicht wird.
Nun möchte ich, dass diese Funktion beim Start von Matlab aufgerufen wird. Nur finde ich nicht die passende Stelle hierfür, hat jemand eine Idee?
_________________

An guten Tagen stürzt Matlab nur zweimal ab.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 25.07.2014, 12:29     Titel:
  Antworten mit Zitat      
Die startup.m Datei wird falls auf dem MATLAB Pfad vorhanden beim Startup ausgeführt. Sowas?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
amoibos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.05.14
Wohnort: ---
Version: 2013a
     Beitrag Verfasst am: 25.07.2014, 12:38     Titel:
  Antworten mit Zitat      
Theoretisch schon, funktioniert nur nicht in diesen Fall.
Zwar werden die Anweisungen ausgeführt(mit disp getestet), nur nicht der Aufruf von simulink_menu_expand().

Code:
function simulink_menu_expand()
% include menu entry
    cm  = sl_customization_manager;
    cm.addCustomMenuFcn('Simulink:ToolsMenu', @getMenuItems);
end

function schemaFcns = getMenuItems(callbackInfo)
% add handler for menu
    schemaFcns = {@getItem};
end

function schema = getItem(callbackInfo)
% definition menu and submenu handler
    schema = sl_container_schema;
    schema.label = 'Visard';
    schema.childrenFcns = {@save_model, @optimize_entry, @info_entry};
end

function schema = save_model(callbackInfo)
% definition menu item
    schema = sl_action_schema;
    schema.label = 'Create assembly';
    schema.callback = @pre_save_data;
end

function pre_save_data(callbackInfo)
    save_graph(get_graph(gcs), sprintf('%s.asm', gcs));
end

function schema = optimize_entry(callbackInfo)
% definition menu item
    schema = sl_action_schema;
    schema.label = 'Optimize';
    schema.userdata = '';
    schema.callback = @optimize;
end

function optimize()
    temp_name = '_optimized';
    new_system(temp_name);
    open_system(temp_name);
end

function schema = info_entry(callbackInfo)
% definition menu item
    schema = sl_action_schema;
    schema.label = '&Info';
    schema.callback = @info;
end

function info()
% info messages
    msgbox('Developed 2014');
end
 


Der Eintritt funktioniert, nur registriert er nicht den Handler.
_________________

An guten Tagen stürzt Matlab nur zweimal ab.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 25.07.2014, 13:34     Titel:
  Antworten mit Zitat      
Hmmm, dann liegt es wohl an der internen Reihenfolge. Ist es möglich das in einen Modellcallback zu schreiben? So wie "PreLoadFcn".

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
amoibos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.05.14
Wohnort: ---
Version: 2013a
     Beitrag Verfasst am: 25.07.2014, 14:41     Titel:
  Antworten mit Zitat      
Sind die Callbacks dann nicht ans Modell gebunden?
Der Menüeintrag soll unabhängig vom Modell sein, sprich immer zu sehen sein.
_________________

An guten Tagen stürzt Matlab nur zweimal ab.
Private Nachricht senden Benutzer-Profile anzeigen
 
amoibos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.05.14
Wohnort: ---
Version: 2013a
     Beitrag Verfasst am: 29.07.2014, 11:54     Titel:
  Antworten mit Zitat      
Über das Einbinden einer Library(slblocks.m) gehts wohl, nur muss ich dafür sicherstellen, das keine Warnung kommt weil abermals der Menüpunkt expandiert wird.
Hierfür ist es notwendig das ich ermittle ob der Eintrag schon vorhanden ist.
Geht das bzw. wie mache ich das?
_________________

An guten Tagen stürzt Matlab nur zweimal ab.
Private Nachricht senden Benutzer-Profile anzeigen
 
amoibos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.05.14
Wohnort: ---
Version: 2013a
     Beitrag Verfasst am: 30.07.2014, 09:23     Titel:
  Antworten mit Zitat      
Ich habe eine Lösung, nicht sehr schön aber sie funktioniert.
Das Menü wird über slblocks erweitert, damit das nicht mehrfach geschehen wird ein globale Variable(lock) genutzt, die in startup.m erzeugt wird.
Weil slblocks nur beim Aufruf von Simulink Library Browser erfolgt, muss dort auch explizit der Start und Schließung erfolgen. Das schaut ungefähr so aus:

startup.m
Code:

[...]
global visited;
visited = false;
simulink('open');
simulink('close');
 



slblocks.m
Code:

[...]
global visited;
if ~visited
    simulink_menu_expand();
    visited = true;
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.