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 

Dieses Thema hat akzeptierte Lösungen:

RS232 - Rückgabewerte auslesen



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!

28.07.2023, 13:13
Beitrag #1

Kaya Offline
LVF-Grünschnäbelin
*


Beiträge: 39
Registriert seit: Jul 2023

16
2019
DE


Deutschland
RS232 - Rückgabewerte auslesen
Hallo ihr Lieben,

ich habe ein VI geschrieben, in dem ich über eine serielle Schnittstelle drei Befehle (Schalten in Remote-Betrieb, Parameter einstellen, Rückstellen aus Remote-Betrieb) an meinen Generator sende.
Hierbei muss ich in der Read-Funktion die Anzahl der Bytes angeben, die empfangen werden sollen, um die Antwort der seriellen Schnittstelle auszulesen (bei mir über numerische Konstanten auf 17, 4 und 4 festgelegt).
Die Antwort des Gerätes ist allerdings immer unterschiedlich lang. Ich muss also vor dem Senden schon die Länge der Antwort kennen, kenne ich aber nicht.

Weiß jemand, wie ich das lösen kann? Schon mal lieben Dank und viele Grüße! Smile


Angehängte Datei(en)
16.0 .vi  SerielleKommunikation_Spannung.vi (Größe: 14,67 KB / Downloads: 125)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.07.2023, 10:44
Beitrag #2

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 423
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: RS232 - Rückgabewerte auslesen

Akzeptierte Lösung

Dein Generator wird doch wahrscheinlich am Ende einer Antwort ebenfalls ein Linefeed senden (und auch eine Checksumme).
Beim öffnen der Schnittstelle bzw. einstellen der Parameter hast du "Enable Termination Character" abgeschaltet. Das muss dabei eingeschaltet werden. Der "termination char" ist schon auf Linefeed eingestellt.
Beim lesen gibst du dann nur noch die maximale Anzahl Bytes an, die du lesen willst, als z.B. einfach 256 Bytes. Sobald ein Linefeed empfangen wird, wird auch die Read Funktion beendet. BTW: Mit LabVIEW hat das gar nichts zu tun. Das wäre in jeder anderen Programmiersprache auch nicht anders.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.08.2023, 08:04
Beitrag #3

Kaya Offline
LVF-Grünschnäbelin
*


Beiträge: 39
Registriert seit: Jul 2023

16
2019
DE


Deutschland
RE: RS232 - Rückgabewerte auslesen
Danke Dir trotzdem, löst das Problem. Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.10.2023, 10:35
Beitrag #4

Kaya Offline
LVF-Grünschnäbelin
*


Beiträge: 39
Registriert seit: Jul 2023

16
2019
DE


Deutschland
RE: RS232 - Rückgabewerte auslesen
Hallo ihr Lieben,
mein Programm hat sich fortentwickelt, das Problem ist aber immer noch das gleiche: das Auslesen der Rückgabewerte.
Ich kommuniziere mit einer serielle Schnittstelle und lese die Antworten aus, indem ich die am Generator eingestellte Testdauer warte. Ich möchte aber gerne nur warten, bis eine Antwort empfangen wurde und dann maximal die Testdauer, bekomme dies aber nicht implementiert. Datengesteuert sozusagen. Zusätzlich gibt es bei meinem neuen Generator nun auch die Möglichkeit, dass pro Befehl nicht nur eine Rückmeldung kommt, sondern mehrere. Auch hier weiß ich nicht, wie ich dies implementieren kann. Gibt es auch hier eine datengesteuerte Lösung anstatt die Anzahl an Impulsen in eine Schleife zu geben. Hoffe, so weit verständlich. Ein VI mit einer möglichen Kommunikation hänge ich an.
LG Kaya


Angehängte Datei(en)
16.0 .vi  Erzeugung Befehlsstring.vi (Größe: 13,02 KB / Downloads: 96)

16.0 .vi  HF-Testablauf.vi (Größe: 41,03 KB / Downloads: 105)

16.0 .vi  Port öffnen SubVI.vi (Größe: 20,34 KB / Downloads: 108)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.10.2023, 11:49 (Dieser Beitrag wurde zuletzt bearbeitet: 09.10.2023 11:52 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: RS232 - Rückgabewerte auslesen
Hallo Kaya,

Zitat:Ich möchte aber gerne nur warten, bis eine Antwort empfangen wurde und dann maximal die Testdauer, bekomme dies aber nicht implementiert. Datengesteuert sozusagen.
Haben wir das nicht in deinem anderen Thread schon länger diskutiert?

Gib doch bitte mal ein konkretes Beispiel, was "warten bis zur Antwort" und "dann maximal die Testzeit warten" genau bedeutet? Und vergiss bei einem konkreten Beispiel bitte auch nicht, dass du beim SerialPortInit einen Timeout von 1000ms definiert hast!

Warum verwendest du zum Warten die Funktion "Wait until next multiple"? Du kennst den Unterschied zum "normalen" Wait?

Zitat:Zusätzlich gibt es bei meinem neuen Generator nun auch die Möglichkeit, dass pro Befehl nicht nur eine Rückmeldung kommt, sondern mehrere. Auch hier weiß ich nicht, wie ich dies implementieren kann. Gibt es auch hier eine datengesteuerte Lösung anstatt die Anzahl an Impulsen in eine Schleife zu geben. Hoffe, so weit verständlich.
Von welchen "Impulsen" redest du hier? Wieso benötigst du "Impulse", wenn ein Befehl mehrere Rückmeldungen gibt??? (Nein, die Frage ist nicht verständlich…)

Weißt du, wieviele Antworten der Befehl senden wird, wenn mehrere möglich sind?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2023, 11:38
Beitrag #6

Kaya Offline
LVF-Grünschnäbelin
*


Beiträge: 39
Registriert seit: Jul 2023

16
2019
DE


Deutschland
RE: RS232 - Rückgabewerte auslesen
Also ich versuche es noch mal besser zu erklären.

Ich hab ein VI erstellt, was das Ganze hoffentlich verdeutlicht. Ich öffne meinen Port, mache eine Verbindungskontrolle mit meinem Generator (Port öffnen SubVI Burst). Dann schreibe ich den VN-Befehl für den Teststart und übergebe die Parameter und mit AA; wird der Test gestartet.

Jetzt kommt der Part, den ich leider einfach nicht hinbekomme: der Generator erzeugt Rückmeldungen, die in unregelmäßigen Abständen kommen, die ich alle auslesen und verarbeiten möchte. Ich weiß nicht, wie viele Antworten gesendet werden oder wann sie kommen. Mein Ansatz ist eine Schleife mit einer Pause, die ausließt bis keine Antworten mehr kommen. Das meine ich mit "warten bis zur Antwort".

Die Impulse sind das, was der Generator erzeugt. Ich gebe eine Anzahl an Impulsen und eine Testdauer vor.

Danke für Eure Hilfe!
LG Kaya


Angehängte Datei(en)
16.0 .vi  Burst-Testablauf.vi (Größe: 15,01 KB / Downloads: 103)

16.0 .vi  Erzeugung Befehlsstring.vi (Größe: 13,02 KB / Downloads: 87)

16.0 .vi  Port öffnen SubVI Burst.vi (Größe: 20,34 KB / Downloads: 103)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.10.2023, 12:18 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2023 12:21 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: RS232 - Rückgabewerte auslesen
Hallo Kaya,

Zitat:Ich hab ein VI erstellt, was das Ganze hoffentlich verdeutlicht. Ich öffne meinen Port, mache eine Verbindungskontrolle mit meinem Generator (Port öffnen SubVI Burst). Dann schreibe ich den VN-Befehl für den Teststart und übergebe die Parameter und mit AA; wird der Test gestartet.
Wo genau sieht man das in deinen (neuen) VIs?
Ich finde nur die Befehle "CC" und "EN"…

Zitat:der Generator erzeugt Rückmeldungen, die in unregelmäßigen Abständen kommen, die ich alle auslesen und verarbeiten möchte. Ich weiß nicht, wie viele Antworten gesendet werden oder wann sie kommen. Mein Ansatz ist eine Schleife mit einer Pause, die ausließt bis keine Antworten mehr kommen. Das meine ich mit "warten bis zur Antwort".
Du meinst also "warten bis keine Antwort mehr kommt" anstatt "warten bis zur Antwort"!?

Kannst du eine Zeitspanne angeben, nach der "keine Antwort mehr kommt"? Das ist der kritische Punkt in diesem Problem - und zeigt auch die Lösung auf…

Zitat:Ich gebe … eine Testdauer vor.
Ist das eventuell die Zeit, nach der "keine Antworten mehr kommen"?

Deine neuen VIs passen nicht zu deiner Message und es fehlen immer noch Informationen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2023, 12:47
Beitrag #8

Kaya Offline
LVF-Grünschnäbelin
*


Beiträge: 39
Registriert seit: Jul 2023

16
2019
DE


Deutschland
RE: RS232 - Rückgabewerte auslesen
Hi Gerd,

vielen Dank für Deine Geduld! Angel_not

Hab mich beim Upload mit dem Generator vertan, CC; ist die Verbindungskontrolle, EN,... übergibt die Parameter, AA; startet die Prüfung.

Ich denke ich muss quasi beides tun. Erst "warten bis eine Antwort kommt" und dann "warten bis keine Antwort mehr kommt".
Eine Zeitspanne, nach der "keine Antwort mehr kommt" hab ich zwar in dem Sinne nicht, weil die Zeit nach der "keine Antworten mehr kommen" unterschiedlich ist.
Ich glaube der Generator sendet aber immer bei vollendetem Test ein "RR 00;". Vielleicht ist es eine Möglichkeit, bis zu dieser Rückmeldung zu warten.

LG Kaya
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2023, 14:28 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2023 14:32 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: RS232 - Rückgabewerte auslesen
Hallo Kaya,

Zitat:Ich denke ich muss quasi beides tun. Erst "warten bis eine Antwort kommt" und dann "warten bis keine Antwort mehr kommt".
Das ist nur eine Frage der Wartezeit: die Zeit bis zum "es kommt keine Antwort mehr" muss größer sein als die Zeit bis "eine Antwort kommt"…
Also z.B. in einer Schleife immer eine Sekunde (dein TimeOut-Wert!) auf eine Antwort warten und wenn etwas kommt, auch auswerten. Wenn aber eine bestimmte Anzahl Iterationen, z.B. 20 Iteration entsprechend 20s, keine Antwort kam, wird abgebrochen…

Zitat:Eine Zeitspanne, nach der "keine Antwort mehr kommt" hab ich zwar in dem Sinne nicht, weil die Zeit nach der "keine Antworten mehr kommen" unterschiedlich ist.
Was heißt "unterschiedlich? Unterschiedlich wie "2500ms != 2501ms" oder "2500ms != 20h"?

Zitat:Ich glaube der Generator sendet aber immer bei vollendetem Test ein "RR 00;". Vielleicht ist es eine Möglichkeit, bis zu dieser Rückmeldung zu warten.
Oh Mann, du "glaubst"… (Programmierer sollten "wissen", wenn sie nicht gerade ein KI-Modell auf ihre Daten loslassen! Big Grin)
Gibt es denn keine (verlässliche) Dokumentation zu deinem Gerät?
Entweder dein Gerät sendet eine "Test beendet"-Botschaft oder es tut es nicht…

Und wenn dein Gerät eine solche Botschaft sendet, dann solltest du eine StateMachine programmieren mit den States 1/"Init", 2/"Acquire" und 3/"De-Init". Übergangsbedingung von State 2 zu 3 ist dann die "RR"-Botschaft…

Schlussbemerkung: Programmieren basiert (fast immer) auf harten Fakten - das hast du in mehreren Wochen, die du hier fragst, noch immer nicht gelernt. Ständig kommt "glauben", "unterschiedlich", "ich denke ich muss", "vielleicht", aber nie "ich warte maximal 10min"…

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
  Auslesen RS232 M.M.H. 3 4.945 12.11.2021 09:23
Letzter Beitrag: M.M.H.
  Servomex Messwerte auslesen über RS232/RS485 Chefkoch 6 8.928 18.07.2016 13:54
Letzter Beitrag: jg
  Keithley K2000 über RS232 auslesen Alpenpower 6 13.728 09.09.2013 07:55
Letzter Beitrag: GerdW
  RS232 Schnitstelle auslesen mit VISA cRyo 2 13.102 09.07.2012 14:57
Letzter Beitrag: cRyo
  Datenverlust beim RS232 auslesen Dominator 3 5.265 20.04.2012 14:43
Letzter Beitrag: Dominator
  Eco Physics CLD über RS232 auslesen/steuern macke 3 7.023 20.05.2011 11:27
Letzter Beitrag: macke

Gehe zu: