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:

Unidirektionale RS232-Verbindung



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!

22.07.2016, 11:47
Beitrag #1

Hosenscheisser Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Apr 2015

2014
2012
EN



Unidirektionale RS232-Verbindung
Hallo Miteinander,

ich habe schon einen POST bezüglich RS232 via PCIe-Karte geschrieben. Es geht um folgendes. Normale RS232 Geräte erhalten immer einen Befehl ein Signal zu senden (Visa Write). Ich hingegen empfange nur was. Jede Sekunde kommt ein 13 byte Wort an.

Jetzt wollte ich fragen, ob das mit meinem VI gut ist? Angenommen es kommen nur mal 12 bytes oder sogar 14 bytes an. Geht dann mein Programm in einen falschen Zustand über? Ich beende meine Signale von meinen zwei Ohaus-Waagen immer mit einem TermChar. Ich verwende zwei RS232-Ports.


Beste Grüße,

Stefan


Angehängte Datei(en)
13.0 .vi  Forum-Eintrag.vi (Größe: 24,08 KB / Downloads: 288)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.07.2016, 12:26
Beitrag #2

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Unidirektionale RS232-Verbindung
Hallo Stefan,
versuch es mal so.

Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 12:50
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Unidirektionale RS232-Verbindung
Hallo,

wenn du mit TermChar arbeitest, dann lass einfach BytesAtPort weg! Einfach stupide VISARead mit 20 zu lesenden Zeichen abfragen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 13:15
Beitrag #4

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Unidirektionale RS232-Verbindung
Hallo GerdW,
meinst Du das so?

Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 13:27
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Unidirektionale RS232-Verbindung
Was soll das VISAActivateEvent bewirken? In jeder Iteration auch noch?

Dafür gibt es doch das SerialPortInit, welches mit seinen zwei Inputs bzgl. des TermChars alles nötige erledigt!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 13:53
Beitrag #6

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Unidirektionale RS232-Verbindung
Wall

Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.07.2016, 15:54
Beitrag #7

Hosenscheisser Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Apr 2015

2014
2012
EN



RE: Unidirektionale RS232-Verbindung
Vielen Dank für eure Hilfe, wenn ich das richtig verstanden habe läuft das Programm dann so:

Schreibe in Buffer bis TermChar kommt--> lese RS232 aus und gib es in LV aus--> lösche Buffer

Angenommen es kommt einmal zufällig kein TermChar, weil es einen Paritätsfehler gibt, etc. Dann schreibt mir der ja zwei 13 byte Wörter also 26 byte (bzw. 25 weil das TermChar fehlerhaft ist) hintereinander in den Buffer. Stürzt mir dann nicht das VI ab, weil anstatt kleiner 20 byte aufeinmal 25 byte anliegen? Und es kommen bei mir meistens nur 13 byte an, wartet der dann nicht auf 20 byte? Ich denke mal 15 byte wäre ein guter Sicherheitsbereich.

Sorry für mein GenerveSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 16:33 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2016 16:35 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Unidirektionale RS232-Verbindung

Akzeptierte Lösung

Hallo Scheisser,

Zitat:läuft das Programm dann so: Schreibe in Buffer bis TermChar kommt--> lese RS232 aus und gib es in LV aus--> lösche Buffer
Die serielle Schnittstelle bzw. deren (VISA-)Treiber hat einen internen Buffer. In diesem landen die am Port ankommenden Daten. Das VISARead wartet jetzt bis zum Empfang eines TermChar (bzw. bis zum TimeOut) und liest/holt dann die Daten aus dem Buffer…

Zitat:Angenommen es kommt einmal zufällig kein TermChar, weil es einen Paritätsfehler gibt, etc.
Bei einem Paritätsfehler bekommst du eine Fehlermeldung…

Zitat:Stürzt mir dann nicht das VI ab, weil anstatt kleiner 20 byte aufeinmal 25 byte anliegen?
Wieso sollte es "abstürzen"? Meinst du, der LabVIEW-Speichermanager kommt mit einem 25 Zeichen langen String nicht klar?

Zitat:Und es kommen bei mir meistens nur 13 byte an, wartet der dann nicht auf 20 byte?
Nein.
VISARead wartet auf folgende Bedingungen:
- Anzahl der angefragten Bytes steht im Buffer bereit.
- Das konfigurierte TermChar ist im Buffer angekommen.
- TimeOut
- Fehler
So steht es jedenfalls in der LabVIEW-Hilfe, die du ja sicher auch schon durchgelesen hast!

Was passiert wohl, wenn du auf 20 Zeichen wartest und auf ein TermChar?

Zitat:Ich denke mal 15 byte wäre ein guter Sicherheitsbereich.
Das hängt davon ab, wieviele Bytes in deinen Messages enthalten sind. Entweder es sind immer 13 (+TermChar) oder eben nicht…
Abgesehen davon: wie oben dargelegt, ist es irrelevant, ob du auf 20, 99 oder 9999 Zeichen wartest - solange dein TermChar vorher ankommt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 16:47
Beitrag #9

Hosenscheisser Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Apr 2015

2014
2012
EN



RE: Unidirektionale RS232-Verbindung
Vielen Dank für eure großartige Hilfe!!!!

Gerd und Freddy ihr habt mir super geholfen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: