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

Nutzereingabe Standalone Executable

 

evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 11.10.2012, 13:39     Titel: Nutzereingabe Standalone Executable
  Antworten mit Zitat      
Hallo liebes Forum,

ich habe ein Problem mit selbsterstellten Matlab Executables.
Innerhalb des Matlab-Skripts werden eine Reihe von Nutzerabfragen getätigt, die über input() erfolgen. Wenn ich das ganze dann kompiliere und unter Windows die exe im cmd-Fenster aufrufe, stürzt das Programm ab.
So sieht das Testfile aus:
Code:

function test
if isdeployed
    disp(isdeployed)
end
inp=input('EIngabe','s');
disp(inp)
end
 

Die Test-exe wird über
Code:

im cmd-Fenster von Windows aufgerufen. Kommt es dann zur Eingabe, bricht das Programm ab, weil der Befehl nicht erkannt wird.
Kann mir jemand sagen, wie ich solche Nutzerabfragen in mein Programm einbauen kann. Oder geht das nur mit einer Gui?

Viele Grüße.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.10.2012, 08:35     Titel:
  Antworten mit Zitat      
Hallo,

bei mir klappt das von dir beschriebene. Rückfragen:

- Welche MATLAB-Version verwendest du?
- Welches Betriebssystem?
- Mit welchem Befehl kompilierst du?
- Welche Fehlermeldung bekommst du genau?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 12.10.2012, 08:51     Titel:
  Antworten mit Zitat      
Hallo Harald,

schön das jemand antwortet. Ich verwende Windows 7 64 bit. Zum kompilieren verwende ich das deploy-Tool von Matlab (Matlab 2012b, Compiler Version 4.18 ). Der Compiler Aufruf lautet:
Code:

mcc -o test -W WinMain:test -T link:exe -d F:\Matlab_exe\test\src -w enable:specified_file_mismatch -w enable:repeated_file -w enable:switch_ignored -w enable:missing_lib_sentinel
 

Test.exe wird dann über ein batch-File gestartet.
Code:

@pushd F:\Matlab_exe
@start test.exe
@echo Bitte warten Sie bis das neue Fenster öffnet
@pause > nul
 

Ich habe gerade bemerkt, dass ich wohl die falsche exe genommen habe. Bisher verwendete ich immer die exe aus src Ordner. Mit der exe aus dem distri Ordner funktionierts, jedoch bin ich mit der Performance nicht ganz zufrieden.
Ist es normal, dass die Eingabe so "verzögert" reagiert? Gibt es eigentlich eine bessere Möglichkeit den Bildschirm der Shell länger aufzulassen, bis der Bildschirm der Exe erscheint. Wenn ich ohne pause im bat. file arbeite oder die exe durch doppelklick starte, erscheint kein Eingabefenster.

@edit: Ich habe gerade versucht die test.exe direkt über die Eingabeaufforderung zu starten. Dann kommt.

Code:

Eingabej
Der Befehl "j" ist entweder falsch geschrieben oder konnte nicht gefunden werden
 

Es klappt also doch nicht so richtig. Da war meine Vorfreude etwas verfrüht.

Viele Grüße
Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.10.2012, 20:12     Titel:
  Antworten mit Zitat      
Hallo,

ja, man sollte die .EXE aus dem distrib(ute) Verzeichnis nehmen. In src stehen nur Zwischenprodukte.

Zitat:
Ist es normal, dass die Eingabe so "verzögert" reagiert?

Was genau ist verzögert? Das Erscheinen der Eingabeaufforderung, erscheinen die dann eingegebenen Buchstaben mit Verzögerung, oder um was geht es?

Falls es um den Start der .EXE geht: da sind je nach Rechner ca. 2-10 Sekunden normal, da im Hintergrund die MCR (MATLAB Compiler Runtime) geladen werden muss.

Zitat:
...den Bildschirm der Shell länger aufzulassen, bis der Bildschirm der Exe erscheint.

Das verstehe ich nicht.

Zitat:
oder die exe durch doppelklick starte, erscheint kein Eingabefenster.

kann ich so (bei gleichem System) nicht reproduzieren.

Zitat:
Ich habe gerade versucht die test.exe direkt über die Eingabeaufforderung zu starten.

Auch das kann ich leider nicht nachvollziehen. Das j kam nicht etwa vor oder nach der Ausführung der .EXE an sich?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 12.10.2012, 21:00     Titel:
  Antworten mit Zitat      
Hi,
Zitat:

Was genau ist verzögert? Das Erscheinen der Eingabeaufforderung, erscheinen die dann eingegebenen Buchstaben mit Verzögerung, oder um was geht es?

Wenn der input() Befehl abgearbeitet wird, reagiert die Tastatureingabe "verzögert". Ich muss mehrere Male auf die Tastatut einwirken, damit das "j" in dem Dos Command Window erscheint.
Zitat:

Zitat:

......den Bildschirm der Shell länger aufzulassen, bis der Bildschirm der Exe erscheint.

Das verstehe ich nicht.

Ich starte momentan meine test.exe mittels batch-File.
Code:

@start test.exe
@pause > nul
 

Ohne den pause Befehl erscheint schon gar nicht die Aufforderung zur Eingabe im Command Window, weil dieser sofort ausgeht. Wie nutzt ihr denn die executables, um Eingabewerte zu verarbeiten.

Zitat:

kann ich so (bei gleichem System) nicht reproduzieren.

Klicke ich doppelt auf die exe ploppt kurz ein Command Window auf und schließt sofort wieder, ohne die Nutzerabfrage abzuarbeiten.

Im Moment verwende ich statt der input() Funktion die inputdlg() Funktion, die eine bessere Performance bietet.
Würdet ihr für eine bessere Nutzerintegration die Verwendung einer Gui empfehlen? Mit der input() Funktion, die sehr gut im Matlab Command Window funktionert, kann man nur ungenügend im Dos Command Window arbeiten.

Viele Grüße
Christof
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 - 2025 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.