Kann ich mit Matlab ein anderes Programm steuern?

Hallo,
ich nutze ein Programm, in welchem ich einen wiederkehrende Ablauf habe.
(

  • in einem Dropdownmenü schalte ich einen Kanal weiter
  • es folgt eine Berechnung
  • im Anschluss muss manuell eine Datei gespeichert werden
  • und das gleiche von vorn
    )
    Da dabei zum Teil 50 Kanäle vorhanden sind, würde ich das gerne automatisieren.
    Zum Programm habe ich quasi keine Informationen (wie es erstellt wurde).
    Ich würde gerne mit Matlab eine Schleife bauen, was mir das klicken…warten…klicken…warten in ein nur warten umwandelt.
    Die Frage ist, ob es prinzipiell geht?
    Eine darausfolgende Frage ist, wie ich hier ansetze. Der Bedienung mit Matlab ist sehr erwünscht und quasi zwingend.
    Gruß Suser.

Hallo suser,

laut MathWorks geht das nur, indem man sich direkt etwas in Java programmiert: How can I programmatically control mouse motion and ….

Einfacher wäre es, wenn das Programm, das du hast, auch über Kommandozeile bedienbar wäre. dann bräuchte man von Matlab aus nur ein paar Befehle mit system(‚command‘) ausführen.

Guten Tag,

wie bekomme ich heraus, ob das Programm so bedienbar ist?

RTFM

in dem „friendly manual“ sollten diese Optionen beschrieben sein.

Wenn der Hersteller des Programms keine Dokumentation geliefert hat, dann ist Schicht im Schacht.

Reverse Engineering ist teuer und steckt immer mit einem Fuß in Lizenz- und Patentklagen.

Gruß, Lutz

hallo.

Ich würde gerne mit Matlab eine Schleife bauen, was mir das
klicken…warten…klicken…warten in ein nur warten umwandelt.
Die Frage ist, ob es prinzipiell geht?

prinzipiell geht alles.

Eine darausfolgende Frage ist, wie ich hier ansetze.

wenn sich das programm auch über tasten steuern läßt, wäre „sendkeys“ evtl. eine alternative.
kleines beispiel für matlab (ist nicht von mir, sondern von da: http://www.mathworks.de/support/solutions/en/data/1-…):

h = actxserver(‚WScript.Shell‘);
h.Run(‚notepad‘); %Invokes notepad.exe
pause(3); %Waits for the application to load.
h.AppActivate(‚Notepad‘); %Brings notepad to focus
h.SendKeys(‚hello world~‘); %Sends keystrokes
h.SendKeys(’^s’); % save file
pause(3);
h.SendKeys(‚test.txt~‘); % save as ‚test.txt‘ and return
h.SendKeys(’%{F4}’); % close Notepad Alt+F4

gruß

michael

Es liegt leider keinerlei Dokumentation vor (weder programmintern noch durch Dokumente)
Sackgasse an dieser Stelle! (?)
Gruß Suser

Hi,
der Ansatz klingt interessant. Erste Versuche scheiterten, aber ich versuche es mal weiter.
Gruß Suser.

hallo.

der Ansatz klingt interessant. Erste Versuche scheiterten,

kann ich mir vorstellen. es ist mitunter ein bißchen knifflig, gerade wenn’s um tastenkombinationen geht. evtl. muß man hier und da ein delay einbauen…
aber wenn’s prinzipiell schon mal funktioniert, kriegst du’s am ende auch hin.

aber ich versuche es mal weiter.

viel erfolg!

gruß

michael

Danke Michael :smile:
Der Ansatz funktioniert mittlerweile für das gegebene Problem gut. Es ist zwar ein wenig frimmelig, aber mit Hilfe von Verzögerungen zielführend. Somit ist es an dieser Stelle „nur“ noch eine Pfleißaufgabe (Abfragen müssen abgefangen werden; was ändert sich alles beim Schleifendurchlauf…).
Gruß Suser.

PS.: Danke natürlich auch an andere Antworten. An weiteren Lösungsansätzen bin ich weiterhin interssiert.

Der Ansatz funktioniert mittlerweile für das gegebene Problem
gut.

na das ist doch was :smile:

An weiteren
Lösungsansätzen bin ich weiterhin interssiert.

für andere ansätze (z.b. das mit der kommandozeile, was sicherer und komfortabler wäre) müßte man mehr über das programm wissen.
so ganz ohne doku wirst du dich mit der sendkeys-methode begnügen müssen.

um was für „kanäle“ handelt es sich denn? wird hier eine meßkarte angesteuert? evtl. gibt’s zu dieser mehr dokumentation.

oder ist das alles so geheim, daß du’s hier nicht offenbaren darfst?

gruß

michael

Nix spektakuläres :smile:
Die Ergebnisskanäle einer Berechnung/Messung liegen alle in einer Datei. Eine oder mehrere Dateien lade ich vorher rein + Voreinstellung.
Hier beginnt der automatisierte Weg:
In dem Programm wähle ich nun von zwei oder mehr Dateien die zugehörigen Kanäle über ein Dropmenü. Kanal 1 von Datei 1 - x brauche ich zusammen (x bekannt). Es folgt eine Rechnung mit Ergebnisfile. Danach das gleiche mit nächsten Kanal.

Ich habe es jetzt schon recht weit geschafft(2 Kanäle hintereinander hat funktioniert). Ich muss nur noch testen inwieweit das funktioniert, wenn das automatische Computer sperren einsetzt. Da der Rechner während der Schleifen nicht benutzbar ist, könnte hier ein Prob auftreten.

Gruß Suser

Bei „Computer sperren“ und ich glaube auch schon beim Einsetzen des Bildschirmschoners versagt bei mr diese Methode. An diese Einstellungen komme ich zwecks mangelnder Adminrechte nicht heran. Ansonsten funktionert es soweit.

Hallo suser,

ich würde einfach mal die Kommandozeile starten und das Programm dort aufrufen. ggf. mit dem Parameter –help oder /?.