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 Termination



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!

04.03.2021, 17:51 (Dieser Beitrag wurde zuletzt bearbeitet: 04.03.2021 17:52 von Gottimp.)
Beitrag #1

Gottimp Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Mar 2021

2020
2019
DE



Visa Termination
Nabend Zusammen,

ich habe heute versucht ein einfaches Programm zu realisieren, welches mir eine 18 Byte Nachricht über eine serielle Schnittstelle (UART) ausliest und darstellt.(Siehe Anhang)

Leider funktioniert es noch nicht so wie gewünscht. Die zu lesende Nachricht besteht aus 18 Byte, wobei das 18te Byte der Terminator der Zeichenkette ist "\0".

Meine Fragen wären:

1. Muss ich dann bei Visa-lesen 17 oder 18 Byte angeben?

2. Wie kann ich die Terminierung auf "\0" setzen?

3. Kann jemand andere Fehler entdecken, weshalb das Programm nicht funktioniert?( etwas Grundlegendes außer Acht gelassen oder eher ein Hardwareproblem? Ich nutze digitus usb zu seriell konverter)

edit:
4. Spielt es eine Rolle ob ich die Anzeigeelemente in der Schleife habe oder nicht?

Falls euch noch weitere Informationen fehlen, um mir zu helfen, reiche ich diese gerne nach.

Ich freu mich auf eure Antworten, bleibt gesund

Gruß Gotti


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.03.2021, 18:22 (Dieser Beitrag wurde zuletzt bearbeitet: 04.03.2021 18:23 von jg.)
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 Termination
Hallo Gotti,
(04.03.2021 17:51 )Gottimp schrieb:  1. Muss ich dann bei Visa-lesen 17 oder 18 Byte angeben?
Mind. 18 (je nachdem, ob du die Terinierung aktivierst oder nicht
(04.03.2021 17:51 )Gottimp schrieb:  2. Wie kann ich die Terminierung auf "\0" setzen?
HEX-Wert 0 beim termination char auswählen, vgl. https://en.wikipedia.org/wiki/ASCII
(04.03.2021 17:51 )Gottimp schrieb:  3. Kann jemand andere Fehler entdecken, weshalb das Programm nicht funktioniert?( etwas Grundlegendes außer Acht gelassen oder eher ein Hardwareproblem? Ich nutze digitus usb zu seriell konverter)
Was genau funktioniert denn nicht? Glas1
(04.03.2021 17:51 )Gottimp schrieb:  edit:
4. Spielt es eine Rolle ob ich die Anzeigeelemente in der Schleife habe oder nicht?
Das kommt darauf an, was du erreichen willst. Aktuell wird nur der String "Lesepuffer" immer wieder aktualisisert, deine Einzelbytes erst nach Betätigung des Stopp-Buttons.

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
10.03.2021, 13:27 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021 13:46 von Gottimp.)
Beitrag #3

Gottimp Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Mar 2021

2020
2019
DE



RE: Visa Termination
Vielen Dank für deine Antwort Jens.

Ich habe mittlerweile herausgefunden, dass ich dem uC zuerst einen String schicken muss, damit er die Daten überhaupt sendet.

Nun könnte ich tips gebrauchen wie ich es in mein Programm implementieren kann.

Ich habe mir das Beispiel VI UART 8N1 angeschaut, kann es aber nicht wirklich auf meine Problemstellung umändern, da dort nur gesendet und das gesendete empfangen wird.

Grundsätzlich wäre die Idee den "getData" String an den uC zu senden und dann die erwartete Antwort zu bekommen.
Kann mir jemand eine Beispiel VI als unterstützung empfehlen oder generell tips zur umsetzung des Vorhabens geben?

Könnte es mit der Sequenzstruktur funktionieren, dass ich quasi in der ersten Sequenz den String sende und in der zweiten Sequenz dann die Schnittstelle auslese?

Bleibt gesund
Gruß Gotti
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2021, 13:30
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Visa Termination
Hallo gotti,

Zitat:Ich habe mittlerweile herausgefunden, dass ich dem uC zuerst einen String schicken muss, damit er die Daten überhaupt sendet.
Nun könnte ich tips gebrauchen wie ich es in mein Programm implementieren kann.
Dann packe doch einfach ein VISAWrite vor die Schleife, um einmalig deinen "String" zu schicken.
Ansonsten gehört das VISAWrite in die Schleife, um den Befehl mehrmalig zu senden…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2021, 15:11
Beitrag #5

Gottimp Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Mar 2021

2020
2019
DE



RE: Visa Termination
Hi Gerd,

danke für die schnelle Antwort.

Ich habe versucht es umzusetzen. (siehe Anhang)

Leider empfange ich noch nicht die gewünschten Daten mit dem Programm.

Vom Ablauf her sollte doch jetzt die Nachricht "getData \0" gesendet werden und dann empfängt er 17 Byte und endet mit \0.

Ich kann leider noch keinen logischen Fehler in dem Programm entdecken.
Könnt ihr mir noch mehr hilfreiche Tips geben?

Gruß Gotti


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

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Visa Termination
Hallo gotti,

dummerweise können wir immer noch keine Bilder mit LabVIEW debuggen… (Ich bevorzuge LV2017.)

Zitat:Ich habe versucht es umzusetzen. (siehe Anhang)
Leider empfange ich noch nicht die gewünschten Daten mit dem Programm.
Vom Ablauf her sollte doch jetzt die Nachricht "getData \0" gesendet werden und dann empfängt er 17 Byte und endet mit \0.
Ich kann leider noch keinen logischen Fehler in dem Programm entdecken.
- Ein "Fehler" könnte durch den dicken fetten roten CoercionDot bewirkt werden…
- Ein weiterer Fehler könnte der Wert in deinem TermChar-Control darstellen: wir können leider keine Bilder debuggen! Warum ist das überhaupt ein Control und keine Konstante im Blockdiagramm???
- Wer hat gesagt, dass du den Empfangspuffer nach dem VISAWrite leeren sollst?
- "getData \0" enthält ein Space nach dem letzten "a", dein U8-Array aber nicht…
- Welchen Fehler bekommst du, wenn du nicht die erwartete Antwort vom Gerät bekommst?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.03.2021, 16:25 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021 16:26 von Gottimp.)
Beitrag #7

Gottimp Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Mar 2021

2020
2019
DE



RE: Visa Termination
Danke Gerd,
hätte mir auch klar sein können, dass das Bild nicht hilft.



- Ein "Fehler" könnte durch den dicken fetten roten CoercionDot bewirkt werden…
Sollte man lieber mit Ascii oder binär arbeiten?
- Ein weiterer Fehler könnte der Wert in deinem TermChar-Control darstellen: wir können leider keine Bilder debuggen! Warum ist das überhaupt ein Control und keine Konstante im Blockdiagramm???
Das habe ich aus einem Beispiel übernommen, ohne es zu hinterfragen. Da es bei mir aber mit Sicherheit bei \0 bleibt werde ich es in eine Konstante ändern.
- Wer hat gesagt, dass du den Empfangspuffer nach dem VISAWrite leeren sollst?
Auch da habe ich gedacht das der Puffer leer sein muss, wenn ich die Nachricht empfange, somit war es für mich nicht relevant wo es ist, solange es vor dem lesen kommt
- "getData \0" enthält ein Space nach dem letzten "a", dein U8-Array aber nicht…
Das liegt an meiner schlampigen Doku, die Nachricht enthält dort kein Leerzeichen
- Welchen Fehler bekommst du, wenn du nicht die erwartete Antwort vom Gerät bekommst?
Es passiert nix, bis ich das VI beende und es gibt einen Visa-Fehler.

Anbei das Programm

Benutzt du 2017 aus persönlichen Referenzen oder siehst du Vorteile in der Version?


Angehängte Datei(en)
17.0 .vi  UART_NEU.vi (Größe: 13,39 KB / Downloads: 224)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2021, 18:08
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 Termination
Hallo gotti,

Code immer so gut lesbar programmieren wie möglich. Das bedeutet dann aus meiner Sicht:

Den Sende-String als String anlegen - nicht mit den ASCII-Codes rumhantieren, und da du das Abschlußzeichen 0x0 in der Stringanzeige brauchst,
den Display-Style an der String-Konstanten aktivieren (Rechtsklick -> ...)
   
und dann die Anzeige des Strings auf "\Codes Display" umschalten (Linksklick auf den Display-Style):
   

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
10.03.2021, 20:04 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2021 20:06 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Visa Termination
Hallo gotti,

da kann ich Jens nur zustimmen: Code immer so gut lesbar programmieren wie möglich!

Dein VI nach meinem Aufräumen:
   
- String-Konstante wie von Jens beschrieben
- Am VISASerialPortInit nur das anschließen, was nötig ist! Und nötig sind nur die Werte, die sich von den Default-Werten unterscheiden…
- Kein EmptyBuffer…
- Einfaches Umwandeln deines Arrays vom ReadString in einen Cluster aus 17 U8-Werten. Der Cluster sollte noch typdefiniert werden und die Elemente nach deinen Vorgaben benannt werden…

Zitat:Es passiert nix, bis ich das VI beende und es gibt einen Visa-Fehler.
Weil in deiner Schleife jegliches Error-Handling fehlt!

Zitat:Benutzt du 2017 aus persönlichen Referenzen oder siehst du Vorteile in der Version?
Das ist die Version, die ich auf Arbeit benutze. Wenn du tagsüber Antworten von mir erwartest, musst du eben deine VIs in LV2017 bereitstellen.
Steht ja auch in meinem Profil…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2021, 15:40
Beitrag #10

Gottimp Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Mar 2021

2020
2019
DE



RE: Visa Termination
Erstmal vielen Dank für eure guten Hilfen, ihr habt mir schon mega gut geholfen.

Da ich noch Laie bin würde ich noch gerne Fragen zu dem Programm stellen.(vielleicht auch weniger schlaue Fragen)


- Kein EmptyBuffer…
Die Idee hinter dem EmptyPuffer war immer die ganze Nachricht zu erhalten. versteh ich das richtig, dass es entfällt da nur auf Anfrage gesendet wird und somit der Puffer gar nicht voll sein kann und auch die nachricht selbst terminiert ist mit "\0"?

- Einfaches Umwandeln deines Arrays vom ReadString in einen Cluster aus 17 U8-Werten. Der Cluster sollte noch typdefiniert werden und die Elemente nach deinen Vorgaben benannt werden…
Typdefiniert bedeutet das Design im Frontpanel?

Weitere Verständnis Fragen:

-in deinem Programm steht "getData\00" aus anderen Programmiersprachen kenne ich nur "\0" gibts da ein Unterschied oder nur eine Null zu viel gedrückt?

-der uC antwortet nur nachdem er aufgefordert wurde mit getData, brauch ich da überhaupt noch die Schleife? Oder ist sie notwendig um alle Byte zu lesen?

-Also in der Schleife werden dann 18 Byte gelesen und im Cluster ausgegeben, wobei nochmal das 4 und 5 byte selektiert werden und zu einem 16 bit Integer zusammengeführt und Dargestellt werden?

Nochmal vielen Dank an Gerd und Jens.

Grüße Gotti
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 14.316 10.11.2013 12:16
Letzter Beitrag: Y-P
  Termination Character an VISA write dbuckl 17 13.568 01.10.2013 11:16
Letzter Beitrag: dbuckl
  TCP/IP Read liest nicht bis zum Termination Character Gabs 9 10.177 06.02.2009 19:19
Letzter Beitrag: rolfk
  visa write; visa read zeitgesteuert ThomasDipl 8 11.522 20.11.2008 06:46
Letzter Beitrag: Achim
  VISA Termination Char mctommson 5 9.822 11.03.2008 15:26
Letzter Beitrag: mctommson

Gehe zu: