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

Multi Threading in Matlab GUI

 

ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2020, 14:24     Titel: Multi Threading in Matlab GUI
  Antworten mit Zitat      
Hallo Leute,

kurz mein Vorgehen: Beim Klick auf einen Button steuert eine Funktion einen LED Ring in einer Dauerschleife. Eine zweite Funktion soll dann aus einem Buzzer Töne wiedergeben.

Ist das in Matlab irgendwie möglich die Funktionen parallel im GUI laufen zu lassen? Mit Multithreading oder so?

Danke euch!


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2020, 14:57     Titel:
  Antworten mit Zitat      
Hallo,

ja, z.B. über spmd .

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
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2020, 17:05     Titel:
  Antworten mit Zitat      
Kann ich auch mit einer Funktion in Statement 1 z.B. eine Funktion mit einer dauerhaften while-Schleife in Statement 2 beenden? Falls ja, wie?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2020, 17:55     Titel:
  Antworten mit Zitat      
Hallo,

du kannst bei spmd Informationen hin- und herschicken bzw. abfragen mit Funktionen wie labSend, labReceive und labProbe.

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
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2020, 22:19     Titel:
  Antworten mit Zitat      
Wie bekomme ich das mit einem Arduino zum Laufen? Über spmd gibt es leider kaum Beispiele...

Wenn ich den command versuche auszuführen, kommt der Fehler, dass playTone eine unbekannte Funktion sei - die kommt ja auch vom Arduino.

Wie kann ich das beheben?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.12.2020, 23:01     Titel:
  Antworten mit Zitat      
Hallo,

ich habe nicht wirklich Ahnung von Arduino.
Kommt der Fehler zu playTone nur im spmd-Block oder auch im Command Window? Falls letzteres, würde ich die Themen spmd und Arduino erst mal separat angehen.

Für Unterstützung mit spmd bitte genau schreiben, was du versucht hast - am besten mit einem lauffähigen Code-Beispiel.

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
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2020, 18:41     Titel:
  Antworten mit Zitat      
Hallo,

ich habe noch nicht wirklich viel probiert, da ich nicht wirklich weiß wie.
So hatte ich es bis jetzt:

Code:
parpool(2)
spmd
    switch labindex
        case 1
            app.Song
        case 2
            app.LED_Blink(5,'blue',0.3,0)
    end
end


Die erste Funktion spielt einfach Töne ab z.B. mit
Code:
playTone(a,'D8',Frequenz)
pause(0.3)


Die zweite Funktion lässt den LED Ring blinken.
Jetzt dachte ich, wenn ich das wie oben schreibe, dass ich dem einen "worker" die eine Funktion zuweise und dem anderen die andere Funktion. Funktioniert das nicht so?

Die Fehlermeldung habe ich mal angehängt. Diesmal mit "writeColor", was die Funktion LED_Blink benutzt, um Kommandos zum LED-Ring zu schicken, wieder vom Arduino. Separat funktionieren beide Funktionen aber ich glaube spmd kommt nicht ganz mit den internen (?) Funktionen vom Arduino klar Sad

Screenshot 2020-12-07 183752.jpg
 Beschreibung:

Download
 Dateiname:  Screenshot 2020-12-07 183752.jpg
 Dateigröße:  82.82 KB
 Heruntergeladen:  279 mal
Screenshot 2020-12-07 183725.jpg
 Beschreibung:

Download
 Dateiname:  Screenshot 2020-12-07 183725.jpg
 Dateigröße:  45.17 KB
 Heruntergeladen:  290 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2020, 21:48     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung schlägt vor, die Abhängigkeit explizit zu übergeben. Hast du das mal versucht?

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
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2020, 18:41     Titel:
  Antworten mit Zitat      
Nein, ich weiß leider nicht was ich in addattachedfiled eintragen soll..
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.12.2020, 19:46     Titel:
  Antworten mit Zitat      
Hallo,

na, z.B. die writeColor und ggf. andere Funktionen, die später nicht erkannt werden. Alternativ schauen, in welchem Verzeichnis writeColor ist (which) und das gesamte Verzeichnis anfügen.

Grüße,
Harald


Anonymous hat Folgendes geschrieben:
Nein, ich weiß leider nicht was ich in addattachedfiled eintragen soll..

_________________

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
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2020, 13:14     Titel:
  Antworten mit Zitat      
Aber wo bekomm ich denn die Funktionen her? Die sind ja in den Librarys vom Arduino aber die habe ich ja nicht als .m-file vorliegen Confused
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2020, 13:48     Titel:
  Antworten mit Zitat      
Die arduino.m File habe ich jetzt mit dem which Befehl gefunden.
Darin ist auch die Funktion playTone enthalten.

Das writeColor kommt aber aus dieser Library: https://de.mathworks.com/matlabcent.....r-arduino?s_tid=srchtitle
und wenn ich danach mit which suche, bekomme ich kein Ergebnis Sad
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.12.2020, 15:43     Titel:
  Antworten mit Zitat      
Hallo,

funktioniert writeColor, wenn du es außerhalb von spmd aufrufst? Falls ja, dann würde ich erwarten, dass es auch von which gefunden wird. Im Zweifelsfall
Code:


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
 
ICookie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2020, 20:37     Titel:
  Antworten mit Zitat      
Ich komm dem ganzen langsam näher. Mit
Code:

hat's tatsächlich funktioniert. Nun weiß ich nicht genau, wo ich addAttachedFiles hinpacken muss.

So funktioniert es schon mal nicht:

Code:
parpool(2)
            poolobj = gcp('nocreate');
            addAttachedFiles(poolobj,{'C:\Users\xxx\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\NeoPixel Add-On Library for Arduino\+arduinoioaddons\+Adafruit\NeoPixel.m','C:\ProgramData\MATLAB\SupportPackages\R2020b\toolbox\matlab\hardware\supportpackages\arduinoio\@arduino\arduino.m'})

            spmd
                switch labindex
                    case 1
                        app.Song
                    case 2
                        app.LED_Blink(5,'blue',0.3,0)
                end
            end


Was mache ich noch falsch? Muss das Ganze in den spmd Block?

Danke!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.12.2020, 21:42     Titel:
  Antworten mit Zitat      
Hallo,

in der Art würde ich es versuchen. Bitte wenn etwas "nicht funktioniert", immer (!!) dazu schreiben, was nicht funktioniert.
Was hat denn
Code:

nun zurückgegeben?

Wo kommt "app" her?

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
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.