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 

Serielle Kommunikation



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!

14.07.2010, 16:02
Beitrag #11

labuser2010 Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Jun 2010

LabVIEW 2009
-
de

26731
Deutschland
Serielle Kommunikation
Die Wartezeit habe ich entfernt. Dies brachte aber keinen großen Erfolg. Das Protokoll wurde auch erweitert. Habe dazu eine Konsolenanwendung geschrieben, die Werte zunächst codiert und dann wieder decodiert. Dies funktionierte wunderbar. Die Decodierung wurde dann in das LabVIEW Projekt eingebunden. Auf der anderen Seite der Schnittstelle wurde die Codierung eingebunden.

Beim Test ist zu erkennen, dass manchmal richtige Werte ankommen, nach mehrmaligem Neustarten des VI. Jedoch wenn einmal ein richtiger Wert erfasst wurde, dann aktualisiert sich nichts.

An das VISA Serial habe ich einen Schalter gesetzt, damit das Abschlusszeichen deaktiviert wird.

Die „Index Array“ Funktion verstehe ich nicht so ganz.

Also in C Pseudocode stelle ich mir das Ganze so vor:

while(){
Array = VISA_WERTE_holen;

FunktionDecodierung(Array[i], Array[i+1], Array[i+2], Array[i+3]){

Berechnung…….

ADC1 =…..;
ADC2=…...;


}

i++;

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.07.2010, 20:40 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2010 20:41 von GerdW.)
Beitrag #12

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Serielle Kommunikation
Hallo labuser,

"Die „Index Array“ Funktion verstehe ich nicht so ganz."
Was verstehst du da nicht so ganz? Man gibt ein Array vor und sagt, welche Elemente man davon haben will... In deinem VI entspricht das "Array[i], Array[i+1], Array[i+2], Array[i+3]" mit i=0.

"in C Pseudocode"
Dein VI entspricht dem doch weitgehend.

"dann aktualisiert sich nichts."
Du müsstest nur schon ausgewertete Bytes aus deinem String wieder entfernen, da du sonst immer wieder die gleichen 4 Byte vom Stringanfang auswertest... Oder dir halt merken, bis zu welcher Stelle im String du schon ausgewertet hast (also einen Zähler entsprechend deinem "i" mitführen).

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.07.2010, 21:03 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2010 21:06 von eg.)
Beitrag #13

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Serielle Kommunikation
Hi labuser!

Wäre schön, wenn es so einfach wäre. Deine VISA_WERTE_holen Funktion sollte aber intelligenter sein, weil sie noch den Anfang deiner 4 Bytes erkennen soll. Ausserdem muss dein Programm online funktionieren, deshalb solltest du lieber nur 4 Bytes von der Schnittstelle lesen und den Rest im seriellen Buffer lassen (dabei soll ich sagen, dass es diesen Rest normalerweise nicht gibt, da deine Berechnung schneller funktionieren sollte, als die Übertragung der Daten).

Konkrete Fragen zu deinem Pseudocode wären:

Wieviel Bytes soll VISA Lesen lesen? Alle, die es im seriellen Puffer gibt? Was passiert wenn es weniger als 4 sind?
Wie stellst du sicher, dass Array[i] wirklich der erste Byte von vier ist?

Gruß, eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 09:17
Beitrag #14

labuser2010 Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Jun 2010

LabVIEW 2009
-
de

26731
Deutschland
Serielle Kommunikation
Ich lege jetzt immer einen Index an die "Index Array" funktion. Nun klappt das auch soweit mit dem Decodieren.

Ja ein Problem ist es noch mit der seriellen Schnittstelle, da der string immer voller wird und das Ganze nach einer Zeit immer langsamer wird und hängen bleibt. Meine Idee wäre eine Art Ringspeicher zu generieren. Da meine Daten ja schneller angezeigt werden, als sie über den Bus kommen, könnte man doch den Speicher der angezeigten Werte wieder frei geben für neue Werte. WIe kann man sowas umsetzen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 09:26
Beitrag #15

labuser2010 Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Jun 2010

LabVIEW 2009
-
de

26731
Deutschland
Serielle Kommunikation
Die Idee nur vier Bytes aus dem Lesespeicher zu lesen hört sich auch interessant an. Wie kann ich dies am besten machen? Entsteht dann auch wieder das Problem, das der Puffer überläuft? Sonst wäre die ja die eleganteste Lösung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 12:03
Beitrag #16

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Serielle Kommunikation
Ungefähr so


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 13:40
Beitrag #17

labuser2010 Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Jun 2010

LabVIEW 2009
-
de

26731
Deutschland
Serielle Kommunikation
Habe es wie bei "Ungefähr so " aufgebaut. Problem ist, dass wieder nur einmal Werte geholt werden. Der aktuelisiert noch nicht. Muss ich noch irgendwas ändern?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:26
Beitrag #18

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Serielle Kommunikation
' schrieb:Habe es wie bei "Ungefähr so " aufgebaut.
Eine sehr präzise Aussage...
' schrieb:Problem ist, dass wieder nur einmal Werte geholt werden. Der aktuelisiert noch nicht. Muss ich noch irgendwas ändern?
Glas1...Glas2, VI-Upload? Oder bist du immer noch bei dem Status wie in #1? Dann genau vergleichen!

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:44 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2010 15:26 von jg.)
Beitrag #19

labuser2010 Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Jun 2010

LabVIEW 2009
-
de

26731
Deutschland
Serielle Kommunikation
Hier nochmal das VI mit den mitlerweile erstellten subVIs. An dem Protokoll hat sich nur geändert, dass jetzt acht Bytes übertragen werden können (Protokoll funktioniert alles Wunderbar, habe ich getestet). Es geht jetzt nur um die serielle Verbindung. Wenn ich es wie auf dem angehängten Bild aufbaue funktioniert es, jedoch schreibt er den Puffer wohl voll und irgendwann wird es langsam und stürzt ab (nach ca. 3 Minuten).

Wenn ich es so wie in dem angehängen VI mache funktioniert es gar nicht mehr.

Ich möchte es so machen, das nach Möglichkeit der Speicher, der schon verarbeiteten Bytes, wieder freigegeben wird und nicht mehr zur Last fällt.

Lv09_img2


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  AronSchaltung_SubVI_.vi (Größe: 22,74 KB / Downloads: 170)

Sonstige .vi  ProtokollDecodierung_SubVI_.vi (Größe: 30,48 KB / Downloads: 166)

Sonstige .vi  SeriellPC1_VISA0107.vi (Größe: 39,54 KB / Downloads: 161)

Sonstige .vi  Wertumrechnung_SubVI_.vi (Größe: 18,07 KB / Downloads: 162)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 15:02
Beitrag #20

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Serielle Kommunikation
Also ich bin hier raus, sorry.

Gruß, eg

Webseite des Benutzers besuchen 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
  Arduino Mega 2560 Serielle Kommunikation RX/TX 1-3 NISI 0 6.637 05.05.2014 14:56
Letzter Beitrag: NISI
  Serielle Kommunikation joachim3 4 4.904 24.01.2014 08:42
Letzter Beitrag: Y-P
  Serielle Kommunikation NuDAM USB->RS485-DAQ trestann 8 9.343 22.11.2013 10:45
Letzter Beitrag: jg
  Serielle Kommunikation Labviewnoob2000 13 11.249 10.09.2013 15:10
Letzter Beitrag: jg
  serielle Kommunikation mit NI-VISA Peitsche 3 6.408 02.08.2013 11:39
Letzter Beitrag: GerdW
  Pyrometer Serielle Kommunikation squavel 4 6.455 12.01.2013 17:23
Letzter Beitrag: squavel

Gehe zu: