19.07.2010, 09:27
Beitrag #1
|
Scarto
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Jul 2010
8.5
2010
de
Deutschland
|
Warten auf Signal
Folgendes Problem besteht:
Ich habe eine RS232 Anbindung. Die funktioniert einwandfrei. Irgendwann kommt darüber ein String. Sobald dieser String kommt soll der an einen anderen String angefügt werden und in eine Datenbank geschrieben werden.
Event-Strukturen reagieren ja nur auf Ereignisse am Frontpanel...gibts auch ein "Warten auf Signal"? Ich hab schon versucht die Stringlänge des RS232 Ports zu prüfen.
Hab auch schon mit Cases zu arbeiten... noch klappts nciht... Gibts da ne einfachere Struktur? Also eine Event-Struktur für Signale?
|
|
|
19.07.2010, 09:37
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Warten auf Signal
Schau Dich mal nach einem "dynamischen Event" um, oder verwende die Property "Value Signaling". Damit sollte es klappen.
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
19.07.2010, 13:16
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Warten auf Signal
So wie du das erzählst, brauchst du keine Event-Struktur, die langt die einfache Case-Struktur.
Und hier hast du eigentlich schon genau das nötige Vorgehen beschrieben:
' schrieb:Mein Problem: Ich weiß nciht wann die Daten kommen. Wenn ich das Programm starte und gerade keine Daten kommen, bekomme ich eine Fehlermeldung, weil die Syntax zum schreiben in die Datenbank nicht stimmt (logischerweise).
Ich brauche jetzt eine Struktur, die sozusagen auf prüft ob Daten kommen. Wenn ja, soll der empfangene Datenstring weitergereicht werden. Wenn nciht, dann weiter warten bis was kommt.
Wenn keine Daten da -> tue nichts.
Wenn Daten über RS232 da -> tue was, nämlich Daten in DB schreiben.
In Fall 2 kann natürlich noch ein Parser enthalten sein, der dir den empfangenen String bei Bedarf aufarbeitet.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
19.07.2010, 13:19
Beitrag #5
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Warten auf Signal
Da kannst Du auch die Funktion "Empty String" verwenden und nur wenn der String nicht leer ist an die DB senden.
In meinem Bsp. ist der String beim 5. Schleifendurchlauf nicht leer:
Empty_String.vi (Größe: 8,11 KB / Downloads: 294)
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
19.07.2010, 13:35
Beitrag #6
|
|
|
20.07.2010, 09:42
Beitrag #9
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Warten auf Signal
Wie Jens schon sagt, braucht Du hier keine Ereignisstruktur, und zwar deshalb nicht, weil das VI Serial Read selbst so eine Art Ereignisstruktur impliziert. Das VI wartet mit dem Lesen, bis ein bestimmtes Ereignis eintritt. Das kann sein:
a) Termchar trifft ein. Du hast zwar ein Endzeichen definiert, aber ich habe den Verdacht, das Du TermChar gar nicht aktiviert hast und von dieser komfortablen Möglichkeit der Datensteuerung gar keinen Gebrauch machst oder etwas falsch machst.
b) Bei Vorgabe einer Anzahl Bytes: Du vorgegebene Bytezahl im Buffer ist erreicht.
|
|
|
20.07.2010, 09:42
|
Scarto
LVF-Grünschnabel
Beiträge: 16
Registriert seit: Jul 2010
8.5
2010
de
Deutschland
|
Warten auf Signal
zu 1) ich warte das mindestens 10 Zeichen vorliegen und prüfe DANN auf Start Stoppzeichen. Das mache ich weil ich ab und zu auch zwar mehr als 10 Zeichen habe, aber das Ende fehlt oder so. Und da soll eine "Fehlerhafte Datenübertraggung" auftauchen. Warum ich 10 genommen habe: 15 sind es mindestens wenns richtig läuft (auch mit fehlendem Datenende), aber ich wollte nciht an der Grenze sein.
zu 2) Der String ist "leer" es wird also nichts gesendet. Warum das so ist ist klar: ich habs gemacht. Der False Case ist bei mir ein leerer String, weil ich sonst einen Fehler "fehlende Tunnelzuordnung" bekomme. Komischerweise funktionierts ja auch so manchmal
Ich habs jetzt auch gelöst: ich überprüfe den String einfach nochmal direkt bevor ich in die DB schreibe. Also noch ein CASE einbauen und ich habe mittlerweile 200 Daten erfolgreich in die DB geschrieben.
|
|
|
| |