INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Tastatursteuerung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

31.01.2011, 15:41
Beitrag #1

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Tastatursteuerung
Hallo LV-User!

Ich bin neu hier, arbeite seit 3-4 Monaten mit LabView und bleibe immer wieder an "kleinen" Sachen hängen, deren Problemlösung mir Kopfzerbrechen bereiten. So, dann stelle ich gleich mal meine erste Frage (Vorher habe ich hier im Forum gestöbert, aber nichts in der Art dazu gefunden). Ob diese hier richtig plaziert ist, ähhh ... weiß ich nicht so richtig.

Problemstellung:

Im Anhang seht Ihr fogendes vereinfachtes VI (8.6.1). Mit diesem steuere ich meinen x-y-Tisch mithilfe der Pfeiltasten (im vi: Tastatursteuerung xy-Tisch), was auch super funktioniert. Wenn ich aber die Ereignisstruktur beende, kann ich keine weiteren Tasten bzw. Schalter (im vi: Anwendung) in meinem vi betätigen, das System hängt einfach und nichts geht mehr.

Wieso? Wäre schön, wenn mir jemand eine Antwort geben könnte.


Viele Grüße Marcel


Angehängte Datei(en)
Sonstige .vi  Tastatursteuerung.vi (Größe: 17,71 KB / Downloads: 672)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.01.2011, 16:28 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2011 16:29 von NWOmason.)
Beitrag #2

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
Tastatursteuerung
Hallo Marcel,

hier fallen mir mehrere Sachen auf:

1) Zu deinem Problem: Die Eventstruktur wird "beendet". Du beendest die innere Schleife direkt. Das kann erst passieren, wenn wieder ein Event kommt.
Viel besser: Stop.Button für die innere Schleife als Event registrieren.

2) Warum ist die Schaltbedingung des "Tastatursteuerungs"-Buttons auf "Bis zum loslassen schalten"?

3) die kleinen Case-Strukturen sind unsinnig. Du kannst die Abfragen der Vergleicher gleich direkt an die Elemente verdrahten.

3) Das Event für Taste gedrückt ist richtig. Aber du kannst dir gleich direkt aus der "VTaste" die up down left right auslesen.


Ich habe mal n kurzes VI zusammengeklickert, wobei das bestimmt nicht Weisheits letzter Schluss ist.

Lv85_img

Beste Grüße,NWO


Angehängte Datei(en)
Sonstige .vi  Steuerung.vi (Größe: 14,66 KB / Downloads: 556)

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2011, 17:15 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2011 17:33 von Meinhart_E.Steil.)
Beitrag #3

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Tastatursteuerung
Vielen Dank für die Antwort, das geht ja superfix hier:

zu 1. Die Eventstruktur mittels eines Stop-Buttons zu beenden scheint der richtige Weg zu sein. Ich habe aber festgestellt, dass ich nur Software-Buttons benutzen kann. Sobald ich die Tastatur betätige hängt dier Software. Habe es mal nach deinem Vorschlag umgestrickt (s. Anhang).

zu 2. Ich möchte nicht, dass der Tastatursteuerungs-Button dauerhaft geschaltet bleibt, da nach Beenden durch den Stop-Button die Schleife sofort wieder starten würde (Diese befindet sich ja in einer While-Schleife).

zu 3. Du hast völlig recht, das is Quark.

zu 4. Das wusste ich nicht, is ja viel einfacher zu handhaben.Smile

Lv86_img

Viele Grüße
Marcel


Angehängte Datei(en)
Sonstige .vi  Tastatursteuerung_2.vi (Größe: 12,45 KB / Downloads: 353)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2011, 22:21 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2011 22:22 von Meinhart_E.Steil.)
Beitrag #4

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Tastatursteuerung
zu 1. Des Rätsels Lösung: Einfach das Häkchen rausnehmen.

Vielen Dank für die Hilfe!

Freue mich schon auf den nächsten Beitrag, dass die Fragen immer schwieriger werden.Smile

Gruß Marcel

Lv86_img


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2011, 13:14
Beitrag #5

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Tastatursteuerung
' schrieb:Lv86_img
Tastatursteuerung_2.vi

Normaler Weise wird eine Eventstrucktur NICHT in eine while-Schleife gepappt. Deine Anwendung ist kann schlecht ausgeführt werden. Denn der Zustand (in welcher Schleife steht das Programm) ist nicht klar!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2011, 20:12
Beitrag #6

Richard Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 70
Registriert seit: Jun 2009

8.6,9.0,9.1,10.0,11.0
2008
DE_EN

80797
Deutschland
Tastatursteuerung
Bei mir hängt sich dein Programm total auf, die Eventstruktur in den Case packen ist ne echt schlechte idee.

Ausserdem bleiben die Tasten hängen, fährt da der Tisch keinen Crash?

Gruß Richard

Vorschlag:

Lv85_img

Sonstige .vi  XY_Keys.vi (Größe: 14,97 KB / Downloads: 337)

Murphy was an optimist
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 11:09 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2011 11:14 von Meinhart_E.Steil.)
Beitrag #7

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Tastatursteuerung
Hallo Gemeinde!

' schrieb:Normaler Weise wird eine Eventstrucktur NICHT in eine while-Schleife gepappt. Deine Anwendung ist kann schlecht ausgeführt werden. Denn der Zustand (in welcher Schleife steht das Programm) ist nicht klar!!

Wie soll das Event dann aber dauerhaft abgefragt werden?


' schrieb:Bei mir hängt sich dein Programm total auf, die Eventstruktur in den Case packen ist ne echt schlechte idee.
Ausserdem bleiben die Tasten hängen, fährt da der Tisch keinen Crash?

s. Beitrag 4 (Bild) ==> geänderte Version s. Anhang
k. A. ob das optimal programmiert ist, kriege es aber nicht besser hin. Der Case ist dafür da, damit die Eventstruktur nicht ständig läuft. Wenn du 30 Abfragen hast, geht dein System schnell in die Knie, oder ist das eher egal?

Lv86_img

Vielen Dank für die Hinweise.
VG Marcel


Angehängte Datei(en)
Sonstige .vi  Tastatursteuerung_3.vi (Größe: 12,75 KB / Downloads: 365)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 11:49
Beitrag #8

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
Tastatursteuerung
' schrieb:Wie soll das Event dann aber dauerhaft abgefragt werden?

Die Eventstruktur in eine eigene While-Schleife packen => Producer/Consumer (mit Events). Die Eventstrukur selbst muss man ja nicht abragen, da sie aktiv wird, wenn ein Event auftritt (Also ein Interrupt und nicht Polling).

' schrieb:Der Case ist dafür da, damit die Eventstruktur nicht ständig läuft. Wenn du 30 Abfragen hast, geht dein System schnell in die Knie, oder ist das eher egal?

Es sind ja keine Abfragen, sondern Events. Ich habe immer gut 100 Events in meiner Eventstrukur (Menüsteuerung über Mausklicks hauptsächlich). Wenn du im Producer/Consumer Konzept die Evenstruktur laufen lässt, wird die Eventschleife erst ausgelöst, wenn ein eingestelltes Event auftritt. Ansonsten wird sie nicht ausgeführt und verursacht dann auch keine CPU-Last.

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 15:39
Beitrag #9

Meinhart_E.Steil Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jan 2011

8.6.1
2010
de


Deutschland
Tastatursteuerung
Also könnte ich alle Events, die existieren, in eine Eventstruktur packen (die sich in einer while-Schleife befindet). Und wenn hier ein Event gestartet wird, startet mein Code, der sich z. B. außerhalb in einem Case befindet?!

Ok!

Vielen Dank für die Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2011, 16:41
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastatursteuerung
' schrieb:Also könnte ich alle Events, die existieren, in eine Eventstruktur packen (die sich in einer while-Schleife befindet).
Genau: Alle Events kommen in eine Eventstruktur, die alleine in einer eigenen While-Schleife sitzt.

Zitat:Und wenn hier ein Event gestartet wird, startet mein Code, der sich z. B. außerhalb in einem Case befindet?!
Eigentlich: Nein.

Ein Event wird außerhalb der Eventstruktur "gestartet", z.B. durch einen Tastendruck, durch ein ValueSignalisierend oder durch ein Benutzerevent. "Bearbeitet" wird der Event in der Eventstruktur. Soll der Tastendruck per Event einen Ablauf ("mein Code") starten, so muss im Event-Case ein Befehl stehen, der den Ablauf startet.

Oft ist ein Ablauf eine Statemachine - die wiederum wird durch eine Case-Struktur wieder in eigener While-Schleife realisiert.

Da die Event-Whileschleife und die Statemachine-Whileschleife programmtechnisch getrennt sind, kann man Daten nicht direkt vom Event zum Case verdrahten - hierfür gibt es dann z.B. eine Queue.

Die Abarbeitung eines Events sollte so schnell wie möglich sein. Damit nämlich andere Events auch bearbeitet werden können. Es ist daher nicht ratsam, langdauernde Abläufe in einen Event-Case zu setzen. Solch einen Ablauf in die Event-Whileschleife neben die Event-Struktur zu setzen, ist natürlich genauso nachteilig.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: