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

Abfangen von Maus-Events

 

flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2012, 10:29     Titel: Abfangen von Maus-Events
  Antworten mit Zitat      
[EDITED, Moderator] Dieser Thread wurde abgetrennt von http://www.gomatlab.de/usb-maus-auslesen-t25659.html.


Jan S hat Folgendes geschrieben:

Auch das ist nicht leicht. Wenn man z.B. mit der Linken Maustaste auf den Close-Button von Matlab's Command-Window klickt, wird Matlab geschlossen. dann ist das Auslesen der Maustaste nicht mehr machbar... Wenn man in ein Fenster eines anderen Programmes klickt, wird diese Program aktiviert. Auch dann kann Matlab nicht ohne weiteres auf die Maus zugreifen.


Das stimmt nicht, wenn ich mich an die OS Events anhänge, ist es völlig anwendungsunabhängig. Es gibt z.B. Tools die zählen den Weg den der Mauszeiger zurück legt, nach Deiner Aussage wäre dies gar nicht möglich, denn sobald die Anwendung den Fokus verliert würde man nicht mehr feststellen können, wie die Bewegung ist.

Die Aussage ist somit nicht korrekt, es geht durchaus mit Matlab, man muss sich via Mex eben an die API des Betriebsystems hängen und die Daten abgreifen
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.09.2012, 12:08     Titel:
  Antworten mit Zitat      
Hallo flashpixx,
Jan S hat Folgendes geschrieben:
Wenn man z.B. mit der Linken Maustaste auf den Close-Button von Matlab's Command-Window klickt, wird Matlab geschlossen. Dann ist das Auslesen der Maustaste nicht mehr machbar... [...]


flashpixx hat Folgendes geschrieben:
Das stimmt nicht, wenn ich mich an die OS Events anhänge, ist es völlig anwendungsunabhängig.

Ach ja? Wie kann denn Matlab OS-Events abfragen, wenn es wie in meinem Beispiel mit gerade diesem Event geschlossen wird?
Ich bleibe bei meiner Aussage, dass Matlab nicht ohne weiteres auf die Maus-Events zugreifen kann, falls es den Focus verliert. Das ist ja gerade die Definition von "Focus".

Ohne Zweifel gibt es natürlich auch Methoden, sich in die OS-Events einzuhängen, wenn andere Programme aktiv sind. Sonst gäbe es ja keine Key-Logger, die alle Tastendrück aufzeichnen. Solche allgemeinen Diskussion, was Du oder ich mit dem Computer so alles anstellen können, helfen n.force aber nicht weiter, da er "die Sensordaten unseres Octocopters auslesen" möchte. Wenn Du n.force hierzu konkrete Ratschläge geben kannst, wäre er sicherlich dankbar.

Es ist schon eine recht freie Interpretation von "mit Matlab", wenn Du dazu Mex-Funktionen zählst, die das Windows-API benutzen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2012, 12:44     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:

Ach ja? Wie kann denn Matlab OS-Events abfragen, wenn es wie in meinem Beispiel mit gerade diesem Event geschlossen wird?


Das CloseEvent liegt nach dem ClickEvent, d.h. wenn ich von der OS API alle Clicks abfange, bekomme ich jeden Click mit, natürlich den auch auf dem Closebutton des aktuell im Focus liegenden Window. Was ich damit mache ist dann eine andere Frage.

Jan S hat Folgendes geschrieben:

Ich bleibe bei meiner Aussage, dass Matlab nicht ohne weiteres auf die Maus-Events zugreifen kann, falls es den Focus verliert. Das ist ja gerade die Definition von "Focus". [...]
Es ist schon eine recht freie Interpretation von "mit Matlab", wenn Du dazu Mex-Funktionen zählst, die das Windows-API benutzen.


Mex ist "nur" ein DLL Call, nicht mehr und das ist ein allgemeiner Standard. Es geht in dem Ursprungspost Sensordaten einzulesen am Beispiel der Maus und dafür stellt das OS nun mal eine Schnittstelle bereit, die man verwenden sollte.

Im Speziellen für den Octocopter wird auch eine entsprechende API existieren. Je nach dem Design kann man evtl durchaus direkt aus Matlab zugreifen (evtl weil der Hersteller schon entsprechende API Pakete mitliefert), der Normalfall wird es aber sein, dass die API in C/C++ vorliegt und man eben einen Wrapper für die Sprache bauen muss in der man dann arbeiten möchte (z.B. wird es in Legomindstorms gemacht, es gibt dort ein Java Interface, was aber letztendlich auf JNI aufsetzt).

Matlab ist auch nur eine Programmiersprache, die eben für bestimmte Probleme schon fertigte build-in Funktionen mit bringt, nur weil diese vielleicht nicht für ein spezielles Problem heisst das nicht, dass es "nicht" geht oder, wie Du es hier formulierst "eine recht freie Interpretation ist". Das Problem, das der OP hat, ist "wie lese ich Sensordaten aus, die von irgendeiner Hardware via USB an das System kommen" und darauf lautet die Antwort eben Treiber / API / OS Funktionalität verstehen und anbinden.
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 30.09.2012, 12:47 Uhr von Jan S
Von Beitrag USB Maus auslesen aus dem Forum Sonstige MATLAB Fragen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.09.2012, 12:57     Titel:
  Antworten mit Zitat      
Hallo flashpixx,

Ich kann nicht mehr folgen. Was ist das Ziel dieser Diskussion? Was genau möchtest Du mit den Argumenten belegen oder widerlegen? Hat die korrekte Tatsache, dass die Click-Events vor den Close-Events kommen etwas mit der "Octocopter"-API zu tun, die der OP aber noch nicht einmal erwähnt hat?

Gruß, Jan
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.