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

Fehlermeldung wenn GUI startet ohne geöffnete Simulinkmod.

 

invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 07:09     Titel: Fehlermeldung wenn GUI startet ohne geöffnete Simulinkmod.
  Antworten mit Zitat      
Ich habe innerhalb meiner GUI eine Checkbox, die die Position meines einzigen Manual Switch im Simulinkmodell prüft. Wenn ich jetzt per Rechtsklick auf die .m-Datei mit "Run" starte UND das Simulinkmodell nicht im Hintergrund geöffnet ist, kriege ich folgende Fehlermeldung:
Code:
Error using gui_hvleitung>gui_hvleitung_OpeningFcn (line 84)
Invalid Simulink object name: simscape/Manual Switch

Error in gui_mainfcn (line 221)
    feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in gui_hvleitung (line 42)
    gui_mainfcn(gui_State, varargin{:});


Wenn jedoch das Simulinkmodell geöffnet ist, startet das GUI ohne die genannte Fehlermeldung.
Ich lade das Simulinkmodell innerhalb der GUI per load_system();

Hier der Code innerhalb der GUI der zur Fehlermeldung führt:

Code:
% Checkbox aktualisieren
Value = get_param([bdroot '/Manual Switch'],'sw');
if strcmp(Value,'0')
   set(handles.checkbox1_switch,'Value',0)
else
    set(handles.checkbox1_switch,'Value',1)
end


invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 07:13     Titel:
  Antworten mit Zitat      
Wie kann ich diese Fehlermeldung vermeiden?

open_system() anstelle von load_system würde ich ungern nehmen, weil dann das Simulinkmodell im Vordergrund vor der GUI geöffnet ist, oder gibt es auch dafür einen Befehl?
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 25.07.2013, 09:47     Titel:
  Antworten mit Zitat      
Hallo,
entweder durch nutzen von try...catch,
oder eleganter, indem du erstmal bdroot abfragst und wenn die Rückgabe nicht leer ist (oder dem zu erwartenenden Systemnamen entspricht, oder weißderGeier), erst dann mit dem Script weitermachen.

Code:

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 14:03     Titel:
  Antworten mit Zitat      
try...catch löst das Problem für mich ausreichend elegant Smile Nach dem Run der GUI wird so direkt das Problem festgestellt, per Catch das Modell geladen und anschließend springt er wie gewünscht zum GUI zurück.

Gibt es eigentlich eine Art Schreibschutz für das Modell, damit nicht jeder das Modell so direkt bearbeiten kann?
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 25.07.2013, 14:16     Titel:
  Antworten mit Zitat      
Ich wette ja, aber kennen tue ichs jetzt nicht.
Schau doch einfach mal selber, ob du was in der Liste findest:
    get_param(bdroot,'ObjectParameters')


...neugier läßt grüßen...

Ja, gibt es nennt sich direkt Lock.

Code:

Wenn man dann etwas am Modell ändert, bekommt man eine Fehlermeldung mit der Auswahlmöglichkeit "unlock" oder "abbrechen".
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 14:41     Titel:
  Antworten mit Zitat      
Ich habe den Befehl..

Code:

% Schreibschutz Simulinkmodell
set_param('modellname','Lock', 'on');
 


... direkt nach dem Start/Öffnen des Simulink-Modells innerhalb des .m-Quellcode gesetzt und kann das Modell leider trotzdem noch bearbeiten.

Ist der Befehl überhaupt für so eine Art Schreibschutz geeignet? Auf mathworks steht, dass er eine block library schützt.

Zitat:
Lock or unlock a block library. Setting this parameter to on prevents a user from inadvertently changing a library.
Verschoben: 25.07.2013, 14:45 Uhr von denny
Von GUIs nach Simulink
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 25.07.2013, 14:57     Titel:
  Antworten mit Zitat      
invaliderror hat Folgendes geschrieben:
Ich habe den Befehl..

Code:

% Schreibschutz Simulinkmodell
set_param('modellname','Lock', 'on');
 


... direkt nach dem Start/Öffnen des Simulink-Modells innerhalb des .m-Quellcode gesetzt und kann das Modell leider trotzdem noch bearbeiten.


Bei mir erscheint bei dem versuch z.B. einen Const-Block zu verändern die Fehlermeldung:
??? Attempt to modify a locked (read-only) model.

Setz doch mal einen Breakpoint direkt nachdem du dein modell auf lock-on gesetzt hast und ließ mal den Wert zurück.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 10:46     Titel:
  Antworten mit Zitat      
Den setparam habe ich in .m-Datei der GUI direkt nach dem open_system-Befehl. Trotzdem kann ich im Modell alles beliebig verändern.

Wenn ich den setparam-Befehl im commandwindow von MATLAB probiere, kriege ich folgende Warnung:
Warning: Cannot set parameter 'Lock' to 'on' because it is not allowed (Model: modell)

Dementsprechend liefert mit der getparam-Befehl ein 'off'.

Wie kann das erlauben? Google hat mir bisher nicht das gewünschte Ergebnis zu dieser Fehlermeldung geliefert.
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 11:59     Titel:
  Antworten mit Zitat      
Dachte der Lock ist nur für eine Library?
Private Nachricht senden Benutzer-Profile anzeigen
 
invaliderror

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 09:39     Titel:
  Antworten mit Zitat      
Bei Mmmartina scheint es ja zu funktionieren. Ich konnte innerhalb des Simulink-Modells leider immer noch keine Lösung zu folgender Fehlermeldung finden:

Zitat:
Warning: Cannot set parameter 'Lock' to 'on' because it is not allowed (Model: modell)
 
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.