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 

Double Value von 0,2 in 0.2 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!

18.03.2011, 08:21
Beitrag #1

Karotte
Unregistered


 







Double Value von 0,2 in 0.2 wandeln?
Hallo Leute,

ich bin dabei eine AG33522A (Arbitary Waveform Generator von Agilent) mit LabView zu betreiben. Dazu habe ich mir die ofiziellen Treiber von Agilent über die LabView-Funktion 'Find Instruments Drivers' installiert.
Bei der Verwendung stelle ich nun fest, dass die ganzen Funktionen in dem Treiberpaket keine Double-Werte mit Komma, wie im Deutschen üblich, sondern nur Werte mit Punkt, akzeptiert (0,2 vs. 0.2). Dies liegt daran, da die Treiber intern die Double-Werte mit der Funktion 'Format into string' in Ascii-Strings wandelt.

Leider kann ich meinem LabView nicht beibringen, aus 0,2 eine 0.2 zu machen. Zumindest kenne ich keinen Weg.

Habt ihr eine Lösung für das Problem?

Mit freundlichen Grüßen

Christian
---------------------------
LabView-Version: 8.5.1
Sprache: Englisch
Diese Nachricht in einer Antwort zitieren to top
18.03.2011, 08:27
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Double Value von 0,2 in 0.2 wandeln?
(18.03.2011 08:21 )Karotte schrieb:  Habt ihr eine Lösung für das Problem?
Im Formatstring noch %.; angeben ...

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2011, 08:29
Beitrag #3

Karotte
Unregistered


 







RE: Double Value von 0,2 in 0.2 wandeln?
Dann muss ich aber in allen Treiber-Dateien den Formatstring anpassen. Ich wollte eigentlich den Treiber nicht anfassen... Zumal ich das dann auf mehreren Rechnern machen müsste.

Gibts keinen anderen Weg Labview zu sagen, dass es auch 0.2 als Double akzeptiert? Es macht ja leider aus 0.2 automatisch 0,2.
Ok, Update:

Es ist %. verwendet worden. Dann kann ich doch noch nicht verstehen, warum das Gerät meint, dass "-121,"Invalid character in number".
Na gut, ich suche weiter.
Diese Nachricht in einer Antwort zitieren to top
18.03.2011, 08:37 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2011 08:42 von IchSelbst.)
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Double Value von 0,2 in 0.2 wandeln?
(18.03.2011 08:29 )Karotte schrieb:  dass es auch 0.2 als Double akzeptiert?
Du bekommst also vom Gerät den String "0.2". Den gibst du auf das Element "In String suchen" Als Formatstring verwendest du "%.;%f". Dann wird der String "0.2" in die Zahl 0.2 umgewandelt.

Hast du als String "0,2", dann lautet der Formatstring "%,;%f". Dann wird aus dem String "0,2" die Zahl 0.2.

Zitat:Es macht ja leider aus 0.2 automatisch 0,2.
Da kann man ja nichts dagegen sagen: Wenn du am Frontpanel "0,2" siehst, hat das mit dem Datenaustausch, der zwischen LV und dem Gerät passiert, gar nichts zu tun. Wenn du mit dem Gerät Zahlen mit DezimalPUNKT austauschen musst, dann verwende einfach die entsprechenden Elemente mit dem Formatstring "%.;".

Nachtrag:
Was meinst du denn mit Treiber? Die mitgelieferten VI vom Hersteller? - Das ist schlecht.

Es gibt in den Einstellungen von LabVIEW eine Einstellung, wie der Dezimaltrenner behandelt werden soll. Man kann dort also '.' oder ',' einstellen. Dann findet aber eine grundsätzliche Umstellung statt.

Auch im Betriebssystem kann man den Dezimaltrenner umstellen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2011, 08:45
Beitrag #5

Karotte
Unregistered


 







RE: Double Value von 0,2 in 0.2 wandeln?
Ok, der Fehler muss noch wo anders liegen. Der String, der an das Gerät gesendet wird, sieht folgendermaßen aus:

SOUR1:VOLT:UNIT VPP
SOUR1:FREQ:MODE CW
SOUR1:FUNC ARB
SOUR1:FUNC:ARB Lorentz.arb
SOUR1:FUNC:ARB:SRAT 40000.000000
SOUR1:VOLT 0.200000 VPP
SOUR1:VOLT:OFFS 0.050000

Auf den ersten Blick alles korrekt. Ich werde mal das Manual zu Rate ziehen.
Diese Nachricht in einer Antwort zitieren to top
18.03.2011, 09:35
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: Double Value von 0,2 in 0.2 wandeln?
(18.03.2011 08:21 )Karotte schrieb:  Leider kann ich meinem LabView nicht beibringen, aus 0,2 eine 0.2 zu machen. Zumindest kenne ich keinen Weg.
LV auf Dezimalpunkt zu ändern halte ich für eine sehr gute Entscheidung, mal ganz uinabhängig von deinem momentanen Problem.
So geht es:
Werkzeuge / Optionen / Frontpanel / Allgemein
Dort Häkchen "Lokales Dezimalzeichen verwenden" entfernen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2011, 10:52 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2011 17:57 von rolfk.)
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Double Value von 0,2 in 0.2 wandeln?
Also was willst Du jetzt eigentlich?

(18.03.2011 08:21 )Karotte schrieb:  Bei der Verwendung stelle ich nun fest, dass die ganzen Funktionen in dem Treiberpaket keine Double-Werte mit Komma, wie im Deutschen üblich, sondern nur Werte mit Punkt, akzeptiert (0,2 vs. 0.2). Dies liegt daran, da die Treiber intern die Double-Werte mit der Funktion 'Format into string' in Ascii-Strings wandelt.

Leider kann ich meinem LabView nicht beibringen, aus 0,2 eine 0.2 zu machen. Zumindest kenne ich keinen Weg.

Dezimalpunkt ist zwingend erforderlich wenn man mit einem Agilent Apparat kommuniziert. Die implementieren keine doppelte Syntax nur um ein paar Sonderlinge die Dezimalkommas bevorzugen zu behagen.

Was das Anzeigen der Fliesskommazahlen angeht verwendet LabVIEW in Frontpanelelemente grundsätzlich das was Du in Deinen Systemeinstellungen eingestellt hast.

Format into String hat einen sogenannten Prefix mit dem man LabVIEW mitteilen kann wie man Dezimalzahlen formatiert haben möchte.

kein Prefix oder %; heisst, verwende was immer in den Systemeinstellungen steht.
%.; verwendet einen Dezimalpunkt bei allen Fliesskommazahlen
%,; verwendet ein Dezimalkomma bei allen Fliesskommazahlen

Steht alles auch sehr gut dokumentiert in der Onlinehilfe zu dieser Funktion. Rtmfx

Aber gehe jetzt nicht alle Format Into Strings anpassen dass sie ein Dezimalkomma verwenden um zu Deinem Agilent Apparat zu schicken. Dann versteht der Agilent nämlich nur noch Bahnhof.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.03.2011, 07:16
Beitrag #8

Karotte
Unregistered


 







RE: Double Value von 0,2 in 0.2 wandeln?
Guten Morgen,

zu erst dachte ich, dass die LabView-Treiber des Gerätes den lokalisierten Dezimalpunkt an das Agilent-Gerät übertragen, da das Gerät einen Fehler meldet, der da hieß 'unerlaubtes Zeichen' (oder so ähnlich). Ich habe mir die Befehle angeschaut, die der LabView-Treiber übermittelt, und habe nur normale Ascii-Zeichen gesehen, sowie halt Zahlen in Ascii gewandelt. Ich hatte also vermutet, dass evtl meine Double nicht locale-unabhängig gewandelt wurden und so den Fehler generierten.
Nach dem ihr geschrieben habt, wie man ein Double korrekt wandelt, habe ich das überprüft und festgestellt, dass die LabView-Treiber das so machen, wie ihr es beschrieben habt.

Nun war der nächste Schritt, dass ich die Befehle, die die Treiber an das Gerät absetzen, händisch an das Gerät schicke (über den Measurement & Automation Explorer). Dabei habe ich festgestellt, dass das Gerät einen der Befehle, so wie ihn der LabView-Treiber generiert, nicht versteht.

Also bin ich hin und habe mir das Programmer's Guide besorgt um die Dokumentation den Aufbau des Befehls zu überprüfen.
Leider hat Agilent die Programmer's Guides nicht mehr als PDF sondern nur noch als CHM-Datei, die auf meinen Rechner auf Grund von Sicherheitsrichtlinien nicht angezeigt werden können.

Also ich vermute, dass es weniger an LabView sondern mehr an den Befehlen, oder dem Gerät liegt.

Viele Grüße!
Diese Nachricht in einer Antwort zitieren to top
27.06.2011, 09:37 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2011 09:38 von Takuro.)
Beitrag #9

Takuro Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 122
Registriert seit: May 2011

2010 SP1
2011
DE

31177
Deutschland
RE: Double Value von 0,2 in 0.2 wandeln?
Auch wenn es jetzt nicht daran liegt, aber ich hatte ein ähnliches Problem: Mein Gerät versteht nur Steuerbefehle mit Punkt als Dezimaltrennzeichen. Da aber diverse User aus diversen Ländern mein Programm nutzten wollen, wollte ich diese Beschränkung nicht.

Ging aber recht einfach. Bei jede Eingabe in der Sendenprozedur wird bei mir nun vorher nach Kommatas gesucht und diese durch einen Punkt ersetzt. Wenn also jemand Punkt-getrennt eingibt, findet er keien Kommatas und der Wert wird so gesendet, ansonsten wird eben Komma durch Punkt ersetzt.

Grüße,

Takuro

Neu, aber motiviert. Nehme immer gern Verbesserungsvorschläge an!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2011, 16:23
Beitrag #10

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 109
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Double Value von 0,2 in 0.2 wandeln?
(18.03.2011 08:45 )Karotte schrieb:  Ok, der Fehler muss noch wo anders liegen. Der String, der an das Gerät gesendet wird, sieht folgendermaßen aus:

SOUR1:VOLT:UNIT VPP
SOUR1:FREQ:MODE CW
SOUR1:FUNC ARB
SOUR1:FUNC:ARB Lorentz.arb
SOUR1:FUNC:ARB:SRAT 40000.000000
SOUR1:VOLT 0.200000 VPP
SOUR1:VOLT:OFFS 0.050000

Auf den ersten Blick alles korrekt. Ich werde mal das Manual zu Rate ziehen.

Wenn es nicht am Dezimalpunkt liegt könnte es evtl. an der von mir fett markierten Zeile liegen.
Mit Agilent-Geräten kenne ich mich nicht aus, aber bei Keithley-Geräten, die ebenfalls per SCPI
kommunizieren, muss bei ähnlichen Kommandos das Argument von func in Anführungszeichen
gesetzt werden (ob einfache oder doppelte ist dabei egal).
Probier es also mal mit SOUR1:FUNC 'ARB'

Ist mal so ein Schuss ins Blaue...
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
  String to Double Problem joerg030284 1 3.301 09.06.2017 13:49
Letzter Beitrag: rolfk
  String in Double wird gerundet sporc 3 3.296 04.04.2017 10:47
Letzter Beitrag: GerdW
  VI-Referenz nach spezifische Klasse (Typ double) wandeln PeteFlosse 2 3.401 06.10.2016 15:44
Letzter Beitrag: PeteFlosse
  in Array wandeln mathlan86 3 3.168 17.09.2015 19:39
Letzter Beitrag: Lucki
  Tabelle Integer und Double Werte DA-LabVIEW 1 3.621 25.02.2015 20:36
Letzter Beitrag: GerdW
  Case Struktur Fehler - Eingang in Ausgang wandeln Fraser-Island 10 7.964 13.02.2015 17:26
Letzter Beitrag: jg

Gehe zu: