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 

VISA Lesen



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!

25.04.2013, 12:19
Beitrag #1

Samy1 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2009
2013
DE



VISA Lesen
Hallo Leute,

ich möchte zwei verschiedene 8-bit Werte über VISA von meinem ATMega128 an LabView senden und diese fortlaufend jeweils in zwei Graphen darstellen.
Der Mikrocontroller sendet die Werte im folgenden Format:

Wert1;Wert2;\n

Ich habe das VI "VISA:Seriellen Port Konfigurieren" genutzt um die benötigten Einstellungen vorzunehmen:

Ressourcenname: COM1
Datenbits: 8
Baudrate: 115200
Abschlusszeichen: 0xA
Stoppbits: 1
Parität: keine

Danach habe ich noch das VI "VISA: Puffergröße festlegen" eingefügt und dann folgt die while-schleife in der
sich das VI "VISA: Lesen" befindet zum Einlesen des Strings. Diese gebe ich dann auf das VI "Tabellen-String nach Array" um aus dem String die Werte zu erhalten.
Das Semikolon dient dabei als Trennzeichen und \n bzw. 0xA als Abschlusszeichen. Insgesamt werden also jeweils 5 Bytes übertragen.

Mein Problem ist jetzt dass keine Werte ankommen bzw. das Array immer nur 0 enthält.
Ich habe noch keine große Erfahrung mit LabView und weiß nicht ob das alles so richtig ist.

Ich habe ein Screenshot gemacht und das VI angehängt.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2013, 12:28
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VISA Lesen
Schon mal Debugging betrieben?

Wie sieht denn der String aus, den du empfängst?

Außerdem, wenn der Spaltentrenner ein ";" ist, dann solltest du das auch programmieren:
   
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
25.04.2013, 13:15
Beitrag #3

Samy1 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2009
2013
DE



RE: VISA Lesen
Danke für den Tip!

Den String den ich erhalte sieht beispielsweise so aus:

-; r;


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

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VISA Lesen
(25.04.2013 13:15 )Samy1 schrieb:  -; r;
Aha, und wie soll jetzt ein Bindestrich und ein "r" in eine Zahl gewandelt werden? Hmm
Da muss ja ein Array mit nur Nullern rauskommen.

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
25.04.2013, 13:46
Beitrag #5

Samy1 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2009
2013
DE



RE: VISA Lesen
Ja ich dachte das VI "Tabelle-String nach Array" wandelt die Zeichen dann in die Dezimalzahl um die ich gesendet habe. Blink

Wie muss ich das denn sonst machen? Bin ich denn überhaupt auf dem richtigen Weg mit meinem Ansatz?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2013, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2013 15:43 von Lucki.)
Beitrag #6

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: VISA Lesen
(25.04.2013 13:15 )Samy1 schrieb:  Den String den ich erhalte sieht beispielsweise so aus:
-; r;
Wenn der String so aussieht, dann läuft etwas falsch.
Denn: Bei Flusssteuerung mit Endezeichen (Hier: \n) müssen die Daten als ASCII-String gesendet werden. Wenn also z.B eine dezimale Zahl "45" (Hex "2D") gesendet werden soll, dann kein Stringzeichen "-" (mit dem ASCII-Wert 45) senden, sondern dezimalen oder Hexadezimalen String "045" bzw. "2D".

Wenn man das nicht macht, dann kommen bei den Daten unvermeidbar auch Steuerzeichen vor. Eine Zahl "10" entspräche z.B \n und würde mitten in den Daten als Abschlusszeichen interpretiert.

Wenn es sich, wie Du schreibst, um "Dein" AtMega128 handelt, dann wird es ja kein Problem geben, das gesendete Format entprechend zu ändern.

Das Format, wie ich es beschrieben habe, ist übrigens quasi die Norm. Ein Ausnahme wird man nur machen, wenn es ein Problem mit der Übertragunsgeschwindigkeit gibt. Denn bei ASCII-Hexformat werden (und das ist der dann ins Gewicht fallende Nachteil) für jedes Zahlenbyte 2 Stringbytes (00..FF) benötigt, bei Dezimalformat sogar drei (000..255).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2013, 14:16 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2013 14:39 von Samy1.)
Beitrag #7

Samy1 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2009
2013
DE



RE: VISA Lesen
Okay danke für die Erklärung, das war mir noch nicht ganz klar!!

Allerdings habe ich mit meinem gesendet Format doch die Norm eingehalten oder?

Denn ich schicke ja so:

void USART_Transmit_2Values(unsigned char data, unsigned char peak)
{
USART_Transmit(data); //value1
USART_Transmit(0x3B); //0x3B --> Tabulator
USART_Transmit(peak); //value2
USART_Transmit(0x3B); //0x3B --> Tabulator
USART_Transmit(0xA); //0xA --> Abschlusszeichen
}

Also: Wert1;Wert2;\n

Ach ich muss also die Werte data und peak als hexadezimalen string senden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2013, 14:37
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VISA Lesen
(25.04.2013 14:16 )Samy1 schrieb:  Ach ich muss also die Werte data und peak als hexadezimale zahl senden.
Ja, das würde helfen. Dann sendest du zwar jeweils 2 Byte anstatt einem, aber so wie du es jetzt machst, können "data" und "peak" ebenfalls den Wert 0x3B oder 0x0A haben. Und dann bricht dein gesamtes Parsing zusammen.

Den zweiten "Strichpunkt" kannst du übrigens weglassen, der macht in der Folge in LabVIEW nur wieder Probleme.

Parsing in LabVIEW dann so:
   

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
25.04.2013, 15:05
Beitrag #9

Samy1 Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Apr 2013

2009
2013
DE



RE: VISA Lesen
Zum Testen habe ich jetzt einfach mal folgendes gesendet:

void USART_Transmit_2Values(unsigned char data, unsigned char peak)
{
USART_Transmit(0x1); //value1
USART_Transmit(0x5);
USART_Transmit(0x3B); //0x3B --> Tabulator
USART_Transmit(0x1); //value2
USART_Transmit(0x6);
USART_Transmit(0xA); //0xA --> Abschlusszeichen
}

Dann bekomme ich aber wieder nur irgendwelche Zeichen und im Array 0 raus.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.04.2013, 15:38 (Dieser Beitrag wurde zuletzt bearbeitet: 25.04.2013 15:39 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: VISA Lesen
Hallo Samy,

Zitat:USART_Transmit(0x1); //value1
USART_Transmit(0x5);
Falls du die Zahl "15" übertragen willst, solltest du die ASCII-Werte 0x31 und 0x35 senden. 0x1/0x5 sind nämlich auch Steuerzeichen...

Wikipedia hilft dir gern!

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
  Fehler -1073807298 bei VISA: Lesen Schnittlauch 7 10.324 17.01.2017 16:07
Letzter Beitrag: GerdW
  Problem mit 0A im Rückgabestring bei Visa Lesen sumsi 5 5.932 17.02.2015 10:56
Letzter Beitrag: sumsi
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 14.316 10.11.2013 12:16
Letzter Beitrag: Y-P
  VISA Lesen: I/O-Fehler Samy1 7 10.249 11.06.2013 10:56
Letzter Beitrag: rolfk
  VISA Lesen Samy1 2 3.283 29.05.2013 10:43
Letzter Beitrag: Samy1
  VISA-Lesen VI hängt sich unter LV2011 auf!? Roter Milan 4 5.733 29.09.2011 09:43
Letzter Beitrag: Roter Milan

Gehe zu: