LabVIEWForum.de - Button Click Event

LabVIEWForum.de

Normale Version: Button Click Event
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo,

ich bräuchte nochmal eure Hilfe.

ich hab ein C Code geschrieben der mir ein Signal mit einem bestimmten Takt aus meinem Arduino ausgibt...

So zum Beispiel wenn die serielle Schnittrstelle ein "A" bekommt soll das Signal in der Form 1010 , dh _|¯|_|¯|_ ausgegeben werrden

Wenn man über die serielle Schnittstelle ein "B" sendet soll 1100 ausgegeben werden , dh |¯¯|__|¯¯|


Mich würde nun interessieren, wie ich es in LabView umsetzen kann mit den Visa Elementen, dass er beim Klicken des einen Buttons ein "A" schickt
und beim Klicken des anderen Buttons ein "B" sendet..usw.



danke & gruß Smile


edit:

hier mal mein c-code und das derzeitige vi

Leider funktioniert es nicht :/ findet evtl jmd den fehler ?

Code:
#define NOP __asm__ __volatile__ ("nop\n\t");
#define PAUSE NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP
#define PAUSEEND NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP

void setup() {
  
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(115200);
  
}

void loop() {
/*
on pin 5: 1010 1010 1100 1100  
on pin 6: 1110 1110 1010 1010


*/
  Pio *p = digitalPinToPort(7); // Port.C
  
  uint32_t s56 = digitalPinToBitMask(5)|digitalPinToBitMask(6);
  uint32_t s5 = digitalPinToBitMask(5);
  uint32_t c5 = digitalPinToBitMask(5);
  uint32_t c56 = digitalPinToBitMask(5)|digitalPinToBitMask(6);
  uint32_t c6 = digitalPinToBitMask(6);
  uint32_t s6 = digitalPinToBitMask(6);
  
char input = (char)Serial.read();
  
  
    
    if(input == 'A'){
    p->PIO_SODR = s56;PAUSE p->PIO_CODR = c5;PAUSE p->PIO_SODR = s5;PAUSE p->PIO_CODR = c56;PAUSE
    p->PIO_SODR = s56;PAUSE p->PIO_CODR = c5;PAUSE p->PIO_SODR = s5;PAUSE p->PIO_CODR = c56;PAUSE
    p->PIO_SODR = s56;PAUSE p->PIO_CODR = c6;PAUSE p->PIO_CODR = c5;p->PIO_SODR = s6;PAUSE p->PIO_CODR = c6;PAUSE
    p->PIO_SODR = s56;PAUSE p->PIO_CODR = c6;PAUSE p->PIO_CODR = c5;p->PIO_SODR = s6;PAUSE p->PIO_CODR = c6;PAUSEEND
     }    
  
}

Der Code ist allerdings noch nicht überarbeitet, dh ich will erstmal nur testen ob er beim Drücken des Knopfes überhaupt was ausgibt...in diesem Code soll praktisch beim drücken des Buttons auf pin 5 und 6 ein jeweils unterschiedliches Signal ausgegeben werden..... erst wenn das funktioniert sollen dann mehere Button mit entsprechenden Signalen erstellt werden...
Dein VI sendet ununterbrochen A oder Leerzeichen.
Die While schleife wird ja nicht angehalten.
Die Baudrate wird sich wohl nicht ändern oder? Wenn dies so ist nehme eine Konstante. Man vergisst schnell mal den Wert einzustellen. Dann geht nichts und man wundert sich warum plötzlich.

Gruß
Freddy
Hallo,

Sowas wird mit einer Eventstruktur ganz einfach: man reagiert damit auf die vorher programmierten Events Wie Button1 oder Button2...

Das mit dem autocleanup hast du noch nicht verinnerlicht? Smile
(16.06.2016 17:16 )GerdW schrieb: [ -> ]Hallo,

Sowas wird mit einer Eventstruktur ganz einfach: man reagiert damit auf die vorher programmierten Events Wie Button1 oder Button2...

Das mit dem autocleanup hast du noch nicht verinnerlicht? Smile

Hättest du mal ein Beispiel für mich mit so einer Ereignis Struktur beim tastendrücken ? irgendwie erscheint mir die labview hilfe da nicht so richtig einleuchtend Big Grin

edit: Okay hat sich erledigt Smile

Ja das Autocleanup nutzeich immer erst wenn alles läuft Big Grin da es sonst meinen eigenen Überblick verfälscht Smile
Hallo tobsn,

Zitat:Ja das Autocleanup nutzeich immer erst wenn alles läuft da es sonst meinen eigenen Überblick verfälscht
Wie behälst du den Überblick, wenn die Drähte nicht gerade oder sogar von rechts nach links verlaufen?
Und das auch schon bei einem so kleinen VI wie diesem? Hmm
Das geht wahrscheinlich nur weil man es selbst so gemacht hat Big Grin


Andere Frage: Ich habe jetzt ein Event Case erstelle mit 4 Unterteilen...er sendet mir jetzt auch immer beim Drücken den gewünschten Wert...nur wenn ich den Button wieder aus mache, soll er nix mehr senden....Jedoch ist wenn ich mir den Lesepuffer anzeigen lassen immer der zuletzt gedrückte wert noch drin und dieser somit nicht leer...


Kann man das irgendwo einstellen ?
Häng doch mal Dein VI an.
Hallo tobsn,

Zitat:Ich habe jetzt ein Event Case erstelle mit 4 Unterteilen...
Hast du eine Event-Struktur mit 4 Event-Cases - oder einen Event-Case, die eine Case-Struktur mit weiteren 4 Cases enthält?
Wenn du schon kein VI (oder Snippet) anhängst, solltest du wenigstens die korrekte Wortwahl bedenken!

Zitat:er sendet mir jetzt auch immer beim Drücken den gewünschten Wert...
Ist doch schön!

Zitat:nur wenn ich den Button wieder aus mache, soll er nix mehr senden....
Wenn der Button nur beim Drücken, etwas auslösen soll, solltest du einen "Latch"-Modus verwenden.
Ein Button im Switch-Modus erzeugt eben beim Drücken und beim Zurücksetzen ein Event!

Zitat:Jedoch ist wenn ich mir den Lesepuffer anzeigen lassen immer der zuletzt gedrückte wert noch drin und dieser somit nicht leer...
Was hat der Lesepuffer mit dem Button zu tun?
Okay also ich versuche meine ganze Sache / mein Vorhaben mal zu schildern.

Das Vi soll praktisch 2 Aufgaben erfüllen. Im Reiter Analog, soll es solange ein " Messen " Schalter gedrückt ist die Werte aufnehmen die am analogen Eingang meiner Messkarte aufgenommen werden.

Gleichzeitig möchte ich im Reiter Digital ein bestimmtes Signal, welches man auswählen kann, am digitalen Ausgang der Karte ausgeben. Mit dem Lesepuffer meinte ich das Element "Derzeitiges Signal" wo halt immer was drin steht auch wenn ich nix mehr drücke...was ja heißt er sendet es trotzdem noch weil ich es zuletzte gedrückt habe, oder liege ich da falsch ?


Ich weis, das ganze sieht noch sehr wirr aus Big Grin aber es waren vorher zwei einzelne programme und ich sitze derzeit dran, beides zusammenzuführen, damit ich es später ein gesamtes Prüfprogramm wird. Allerdings arbeite ich mit LabView auch erst seit kurzem, desshalb habe ich da noch nicht all so viel Ahnung Smile
Ich habe Dir mal ein Beispiel für die Verarbeitung mit Event Schleife angehängt.
Es gibt natürlich viele Möglichkeiten.
Wenn es mehr wird sollte man z.B. Queues verwenden. Für die einfache 4 Schaltertechnik sollte das reichen.

Gruß
Freddy
Seiten: 1 2 3
Referenz-URLs