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 

Über Serielle RS232 gelesenen String zu Zahl wandeln



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!

03.11.2005, 14:24
Beitrag #1

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Hallo zusammen.

Leider habe ich mit der Suchmaschine nichts dazu gefunden. Vielleicht ist es auch einfach zu banal...

Also: Via VISA-Read bekomme ich einen String eingelesen, welcher z.B. wie folgt aussieht:
DA80

Dies entspricht einer Sedezimalen (Hexadezimalen) Schreibweise von 0000 - FFFF (In diesem Fall also 55936).

Wie bekomme ich jetzt diesen String zu dieser Zahl gewandelt?
Ich habe es schon mit Hexadezimalstring nach Zahl und mit String nach Byte-Array probiert, aber es will mir nicht gelingen.

Dake für jeden Tipp!
Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.11.2005, 14:58
Beitrag #2

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Hi T.,

also bei mir geht es mit Hexadecimal String to number...

Probiere es also nochmal..

Gruß
Oliver
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.11.2005, 15:22
Beitrag #3

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Jetzt habe ich mir da mal was übles zusammengebastelt, was funktioniert.

Das kann aber nicht wirklich der gesunde Weg sein, oder?

Aber das mit Hex-String zu Zahl funzt einfach net.

Was mache ich denn falsch?


Angehängte Datei(en)
Sonstige .vi  Datei_IO.vi (Größe: 64,88 KB / Downloads: 305)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.11.2005, 15:37
Beitrag #4

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
hi T.,

habe z.Z. nur 6.1 installiert (habe 7 und 7.1 gar nicht mehr wieder installiert - warte auf 8)

Habe für dich mal ein Beispiel in 6.1 zusammengestellt.
Wichtig ist, das du die Ansicht im String Control nicht veränderst!!!.

gruß
Oliver


Angehängte Datei(en)
Sonstige .vi  Hexkonvertierung_Mr.T.vi (Größe: 9,12 KB / Downloads: 264)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.11.2005, 15:48
Beitrag #5

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Hä?

Habe ich das nicht genauso? (ich weiß - wohl nicht..)
Was ist denn der String control?

Sorry, ich bin noch unbeholfener Anfänger.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.11.2005, 18:20
Beitrag #6

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Hi T.

ich schau mal zu hause in dein VI.

Ein Control ist in der deutschen Version ein Bedienelement (glaub ich jedenfalls).

Es gibt halt auch unter uns "deutschsprachigen Nutzer" einige, die mit der englischsprachigen LabVIEW Version arbeiten. Da der größte Teil der Hilfe und Tutorials die englischen Begriffe nutzt, haben wir hier halt die englische Version...

Gruß
Oliver
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.11.2005, 23:41
Beitrag #7

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Mr.T schrieb:Jetzt habe ich mir da mal was übles zusammengebastelt, was funktioniert.
ACK
Zitat:Das kann aber nicht wirklich der gesunde Weg sein, oder?
Korrekt - das nicht ganz optimal.
Zitat:Aber das mit Hex-String zu Zahl funzt einfach net.

Was mache ich denn falsch?
Nicht so viel... Nur dass Hex-String zu Zahl in deinem Fall nicht funktioniert - nicht funktionieren kann.

Das hatten wir hier schon öfter und es wird auch nicht das letzte mal sein, dass es Verwechslungen und Missverständnisse gibt zwischen der Darstellung mittels druckbarer ASCII Zeichen, der Zahl selbst und der Abbildung der Zahl im Speicher. Falls es einmal nicht zu Missverständnissen kommen würde, dann sorgen Big- und Little-Endian ggf. dafür, dass wieder etwas nicht so ist, wie es erwartet wurde.

Eine Zahl, wie in deinem Beispiel Dezimal 55936 oder Hex 0xDA80 kann mittels zweier Bytes gespeichert werden. Bei Big-Endian wird das höherwertige Byte zuerst gespeichert 0xDA gefolgt von 0x80. Bei Little-Endian wird das niederwertige Byte zuerst gespeichert 0x80 gefolgt von 0xDA.

Wird die Zahl lesbar dargestellt, dann erfolgt diese Darstellung mittels druckbarer ASCII Zeichen als "DA80" (im Speicher stehen die Bytes 0x44 0x41 0x38 0x30). Nur diese Form der Darstellung kann z.B. mittels der Funktion "Hexadecimal String to Number" in einen Integer umgewandelt werden.

In deinem Fall kommt die Zahl so wie sie ist und zu meiner Freude auch im Big-Endian Format. Die Umwandlung geht ganz einfach mittels "Type Cast" (Palette Advanced, Data Manipulation) in einen U16 (unsigned 16 Bit Integer).

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2005, 09:41
Beitrag #8

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Klasse!

Danke für die Erklärungen. Das sieht jetzt schon deutlich besser aus.

Noch ne Frage: Versehentlich hatte ich zuerst mittels einer Konstante nicht in u16 sondern in u32 gewandelt - dann wurde ein anderer Wert dargestellt (viel größer). Ich verstehe jetzt aber nicht, weshalb. 0xFFFF ist doch immer die gleiche Zahl?.

Eine weitere Frage noch: Wenn ich den einfachen Fehlerbehandler benutze kommt in meinem fall nach abschluss aller (Optimal funktionierenden) Vorgänge folgender Fehler:

Fehler -1073807253 ist bei VISA: Lesen in Datei-IO.vi aufgetreten
Mögliche Gründe:

VISA: (Hex 0xBFFF006B) Während der Übertragung ist ein Rahmensynchronisations-Fehler (framing error) aufgetreten

Was ist ein Rahmensynchronisationsfehler?
Gruß und Dank


Angehängte Datei(en)
Sonstige .vi  Datei_IO.vi (Größe: 52,32 KB / Downloads: 262)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2005, 11:01
Beitrag #9

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Mr.T schrieb:Noch ne Frage: Versehentlich hatte ich zuerst mittels einer Konstante nicht in u16 sondern in u32 gewandelt - dann wurde ein anderer Wert dargestellt (viel größer). Ich verstehe jetzt aber nicht, weshalb. 0xFFFF ist doch immer die gleiche Zahl?.
Die "Type Cast" Funktion beginnt mit dem ersten Byte, 0xDA. Das ist das höchstwertige Byte. Als nächstes folgt das zweite Byte mit 0x80. Das dritte und vierte Byte ist nicht vorhanden und es wird dann mit 0x00 eingesetzt. Als Ergebnis bekommst du 0xDA8000 oder Dezimal 3665821696.

Bei einer internen Darstellung als Little-Endian (üblich u.a. auf Intel Prozessoren, PC) hättest du jetzt tatsächlich auch wieder die Zahl 55936 (Dezimal). Da kann LabVIEW seine Herkunft nicht verleugnen, denn Big-Endian wird von den Motorola Prozessoren (Macintosh) verwendet.

[quote]Eine weitere Frage noch: Wenn ich den einfachen Fehlerbehandler benutze kommt in meinem fall nach abschluss aller (Optimal funktionierenden) Vorgänge folgender Fehler:

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2005, 12:34
Beitrag #10

Mr.T Offline
LVF-SeniorMod


Beiträge: 1.007
Registriert seit: Jun 2005

2009
2005
kA

88400
Deutschland
Über Serielle RS232 gelesenen String zu Zahl wandeln
Nachdem ich jetzt das Open umgesetzt hatte und die Parameter kontrolliert habe tritt der Fehler leider noch immer auf.
Jetzt habe ich das Open rausgenommen - trotzdem Fehler.

Wenn ich die Fehlermeldung immer direkt nach den einzelnen VISA - VIs anbinde (abwechselnd nacheinander) tritt der Fehler immer nur erst an der Stelle, nach dem Lesen auf. Bringt uns das weiter?

Es erscheinen aber trotzdem alle gelesenen Werte richtig.

Danke, dass Du Dir so viel Mühe mit mir gibstLol
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
  Servomex Messwerte auslesen über RS232/RS485 Chefkoch 6 9.398 18.07.2016 13:54
Letzter Beitrag: jg
  problem mit LF (0x0A) über RS232 klaus_at 7 6.570 20.11.2013 13:34
Letzter Beitrag: klaus_at
  Labview-Kommunikation mit Jumo über RS232 redhand 35 34.972 28.10.2013 09:45
Letzter Beitrag: GerdW
  Keithley K2000 über RS232 auslesen Alpenpower 6 14.156 09.09.2013 07:55
Letzter Beitrag: GerdW
  Kraftprüfmaschine von Zick/Roell über RS232 steuern 1johleh 24 34.108 20.12.2012 19:31
Letzter Beitrag: Tobi2012
  Keine Daten kommen an vom Hameg 8115 über VISA RS232 USB fsg4u 3 5.921 09.08.2012 14:33
Letzter Beitrag: fsg4u

Gehe zu: