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 

Alive-Abfrage beim Mikrokontroller



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!

11.12.2012, 12:04
Beitrag #1

Atilla Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2012

11
2012
DE


Deutschland
Alive-Abfrage beim Mikrokontroller
Guten Tag,

Gegebene Situation:
Ich habe einen Mikrokontroller, worauf 6 LEDs zu Übungszwecken angebracht wurden. In meinem VI gebe ich eine Dezimalzahl ein und die LEDs zeigen die Dualdarstellung davon an.
Das funktioniert auch sehr gut.
Nun möchte ich noch versuchen nur durchs Auslesen, das die LEDs passend leuchtet auf dem Frontpanel angezeigt werden.

Das Problem:
Alle 5s muss ich dem Mikrokontroller die Anfrage "@X*" senden worauf er mir ein "OK" sendet. Damit signalisiert er mir, dass die Verbindung noch steht. Ansonsten erhalte ich ein "Verbindung unterbrochen".
Ich weiß leider nicht, wie ich diese Statusabfrage sauber parallel zu meinem Program laufen lassen kann. Denn ohne diese Abfrage verschiebt sich mein LED Muster.
Nach 5s erhalte ich ein "Verbindung unterbrochen", dann überspringt mein Programm diese LED und irgendwie verschiebt sich dann auch das Muster.
  • Wie kann ich diese Statusabfrage abwickeln?
  • Wie kann ich dem VI sagen, dass es in dem Fall nichts tuen soll?

Gruß Atilla

lv11_img    
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.12.2012, 12:44 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2012 12:44 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Hallo Attila,

Zitat:Wie kann ich diese Statusabfrage abwickeln?
Befehl zum Gerät senden, Antwort abfragen...

Zitat:Wie kann ich dem VI sagen, dass es in dem Fall nichts tuen soll?
Case-Strukturen nutzen...

Im Ernst:
- RubeGoldbergs entfernen (z.B. Bool erst nach String wandeln, dann diesen String auf "1" testen: da kann man gleich mit dem Bool arbeiten oder noch schlimmer: die geschachtelten Case-Strukturen zum Anzeigen der LEDs)
- eine Mini-Statemachine für Befehlsversand und Abfrage entwerfen: so bekommst du immer die Antwort auf deinen Befehl geliefert
- In der Hauptschleife je nach Befehl die Antwort auswerten: Case-Strukturen nutzen

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.12.2012, 15:50
Beitrag #3

Atilla Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2012

11
2012
DE


Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Hallo GerdW,

Meintest du das ca. so     lv11_img ?

Also ich die Statusabfrage noch nicht eingefügt, aber ich über die Cases der LED Ausgabe nachgedacht und überlegt, dass es vll einfacher wäre diese in ein Array zu packen.

Doch meine Umsetzung ist mir nu schwach gelungen. Aber ist es nun in dem Sinne, wie du es gedacht hast? Oder sehe ich das Ganze nun etwas zu kompliziert?

Das Schreiben auf den Mikrokontroller funktioniert noch wie zuvor ohne Probleme. Das Auslesen nicht.

Ich danke dir für deine Mühe.

Lg Atilla
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.12.2012, 15:54 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2012 15:55 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Hallo Attila,

zwei Verbraucher an nur einer Queue, das kann nicht funktionieren!
Es geht nur "mehrere Producer, ein Consumer". Andersherum gibt es Ärger!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2012, 14:04
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Alive-Abfrage beim Mikrokontroller
(11.12.2012 12:04 )Atilla schrieb:  Alle 5s muss ich dem Mikrokontroller die Anfrage "@X*" senden worauf er mir ein "OK" sendet.
Keine Antwort, nur Zwischenfrage:
Die serielle Kommunikation wird immer viel einfacher, wenn die Sende- und Antwortstrings mit Zeilenendezeichen abschließen. Wäre das hier der Fall?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2012, 10:22
Beitrag #6

Atilla Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2012

11
2012
DE


Deutschland
RE: Alive-Abfrage beim Mikrokontroller
(13.12.2012 14:04 )Lucki schrieb:  
(11.12.2012 12:04 )Atilla schrieb:  Alle 5s muss ich dem Mikrokontroller die Anfrage "@X*" senden worauf er mir ein "OK" sendet.
Keine Antwort, nur Zwischenfrage:
Die serielle Kommunikation wird immer viel einfacher, wenn die Sende- und Antwortstrings mit Zeilenendezeichen abschließen. Wäre das hier der Fall?

Ich hoffe ich habe deine Frage richtig verstanden.
Aber ich denke schon. Die Sendestrings habe eine bestimmte Struktur und fangen mit @ an und enden mit *. Die Antwortstrings nicht. Das sind einfach nur bestimmte Zeichen. bzw. Doch wenn ich abfrage welche LED leuchter erhalte ich @1/0* je nach dem ob die an ist oder nicht. Alle anderen Antworten die ich bekomme sind irgendwelche Strings.

@GerdW
Ok, also alles revidieren und von neuem anfangen.
Aber die idee mit dem LED string ist die besser?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.12.2012, 12:05
Beitrag #7

Atilla Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2012

11
2012
DE


Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Ich weiß doppel post sind nicht erwünscht, aber die Bearbeitungszeit ist viel zu kurz eingestellt.

    lv11_img

Ich habe mein Vi soweit wieder geändert. Nun schicke ich das Alive Signal einfach automatisch jedes mal mit. Beim Auslesen prüft er ob er eine DBL erhält, wandelt diese in Boolean um und schreibt sie in ein Array. Falls er aber keine DBL schmeißt er einen Fehler aus und hier ist das Problem. In dem Case, wo ich nichts dem Array übergebe, macht meine ausgabe einen Sprung und das Bild verschiebt sich um eine Stelle.

Also im Grund habe ich es geschafft, die unerwünschte Ruckmeldung auszufilter, doch dabei entsteht nun ein Loch, was trotzdem alles verschiebt.

Wie kann ich dem Array sagen, dass er einfach den vorherigen Wert an dieser Stelle beibehalten soll? Zur Zeit mache ich" Standart verwenden, wenn nicht verbunden", aber was sendet er wenn hier ein Hacken gesetzt wird? Was ist Standart?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2012, 12:42 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2012 12:44 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Hallo Attila,

Zitat:Also im Grund habe ich es geschafft, die unerwünschte Ruckmeldung auszufilter, doch dabei entsteht nun ein Loch, was trotzdem alles verschiebt.
Wie kann ich dem Array sagen, dass er einfach den vorherigen Wert an dieser Stelle beibehalten soll? Zur Zeit mache ich" Standart verwenden, wenn nicht verbunden", aber was sendet er wenn hier ein Hacken gesetzt wird? Was ist Standart?
Standard ist immer der "Grundwert" des jeweiligen Datentyps, also FALSE oder 0 (bool, Zahl)...

Überlegen wir mal kurz:
Code:
WENN kein Fehler
DANN empfangenen Wert ans Array anhängen
SONST nichts am Array ändern
Wenn/Dann/Sonst ist in LabVIEW die klassische Case-Struktur und in die beiden Cases kommt der passende Code hinein...

Ich würde das so machen:
   
Sieht das logisch für dich aus?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2012, 12:49
Beitrag #9

Atilla Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2012

11
2012
DE


Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Zitat:Sieht das logisch für dich aus?

Irgendwie schon, aber irgendwie auch nicht. Passiert dann nicht das selbe? Also wenn Fehler ist dann sendet Er eine 0.

Danke fur deine erklärung und Verbesserung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2012, 12:54 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2012 12:54 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alive-Abfrage beim Mikrokontroller
Hallo Attila,

Zitat:Irgendwie schon, aber irgendwie auch nicht.
???

Ich habe deine Anforderung in Pseudo-Code umgewandelt. Der sollte doch noch logisch sein.
Dann habe ich diesen Pseudo-Code in LabVIEW nachgestellt. Dein Fehler war, dass du sowohl für DANN als auch für SONST einen Wert ins Array eingefügt hast - obwohl du selbst geschrieben hattest, dass du dies doch gar nicht willst...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Music Abfrage des COMM_STATUS Schreiner 1 3.113 18.04.2013 07:50
Letzter Beitrag: Kasi
  If Abfrage inLabVIEW Christl 6 9.464 16.04.2009 11:54
Letzter Beitrag: Y-P
  Zyklische Abfrage hansidergute 8 5.535 29.08.2005 10:27
Letzter Beitrag: hansidergute

Gehe zu: