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!
' schrieb:Ich glaube, das hat physiker13 nicht gemeint mit Fehler 1. Diese Fehlermeldung kommt bei ihm direkt vom "Scan From String".
Lösung für physiker13:
1) Du stellst auf "nicht-lokalisierten Dezimalpunkt" um.
2) [attachment=49863:Image02.png]
Und zum Abschluß, in deinem hochgeladenen VI solltest du am "Read from Spreadsheet VI" am Delimiter-Eingang unbedingt ein ";" anschließen:
[attachment=49864:Image03.png]
Gruß, Jens
erstmal richtig geraten. das mit laufwerk d war schnell ausgebessert. das mit dem zeitstring allerdings nicht. ich versteh bis jetzt noch nicht wie das klappt...einfach die millisekunden als float einlesen und addieren!?! ich hätte definitiv nicht gedacht dass das klappt! thanx jens g
und den delimiter hab ich auch schonmal gesucht. dachte mir doch dass das irgendwo einfach zum einstellen geht. auch dazu dankeschön!
und nochmal danke an alle die mir bei den formatstrings weitergeholfen haben...schön langsam bekomm ich da auch den durchblick :-)
ich weiß, das Thema ist ziemlich uralt, aber ich finde es trotzdem faszinierend, dass ich jetzt seit heut Mittag an genau diesem Problem rumtue, und hier steht die Lösung.
ABER:
Wie kommt man auf diese Lösung Jens?!
Danke schön!
03.08.2010, 11:21 (Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2010 09:17 von A.Berndsen.)
verdammt, zu früh gefreut. Geht leider doch noch nicht so, wie ich es brauche.
Infos vorneweg: Ich bin in der CAN-Übertragung und nutze LV2009 SP1. Vom CAN-Bus bekomme ich Daten, die so aussehen, wie die Input-Konstanten. Hier habe ich 2 Verschiede zur Auswahl, lieber wäre es mir, wenn ich kein Datum mit übertragen müsste.
Nun zum Problem:
Die Scan From String-Funktion tut bei mir nicht das, was ich gerne von ihr hätte. Je nachdem, was ich ihr vorgebe, stimmt einmal die Uhrzeit bis zu den Sekunden, oder die Millisekunden. Wenn ich dann von 2 verschiedenen Aufrufen der Funktion die Ergebnisse addiere, kommt das Richtige dabei raus. Aber es muss doch möglich sein, das nur mit einem Aufruf zu machen, oder?
Kann mir jemand helfen?
Gruß
Dommas
03.08.2010, 11:56 (Dieser Beitrag wurde zuletzt bearbeitet: 03.08.2010 11:57 von Lucki.)
Das kann so nicht gehen. Der Formatcode "%c" im Zeitcontainer bezieht sich auf das "landestypische Datum/Zeitformat". Das sieht in Deutschland so aus:
08.03.2010 11:44:55
(Leerzeichen zwischen Datum und Zeit. kein TAB.)
Dieses Format ist bei Dir nicht gegeben. Du mußt also die Codes für Datum/Zeit im Formatstring (siehe Hilfe) durcharbeiten, das bleibt Dir leider nicht erspart.
Hast du dir Beitrag #9 genau durchgelesen? Scheinbar nicht.
Bei einer LabVIEW-Installation auf einem deutschen Windows ist üblicherweise der Haken "Use Localized Decimal Point" in den Optionen von LabVIEW aktiviert. Dann wird beim Timestamp ein Komma als Trennzeichen für die Millisekunden-Anteile erwartet.
Dein Eingangsstring teilt das aber mit einem Punkt. Du musst also erst den Punkt durch ein Komma ersetzen, und schon geht es:
ich habe den Beitrag gelesen. Mehrmals sogar. Aber auf die Idee, dass damit eine Einstellung in den Optionen gemeint war, bin ich leider nicht gekommen. Ich habe es die ganze Zeit mit %-Codes für die Funktion probiert. Leider ohne Erfolg wie gesagt.
Aber jetzt tuts. Endlich. Und müsste jetzt auch egal sein, auf welchem System mit welchen Einstellungen das VI läuft.
Ich suche jetzt erst ob ein "," in der Zeit vorkommt. Anschließend eine Case-Struct in der ich den String durchschicke, oder entsprechend den Punkt durch Komma ersetze.
' schrieb:Aber jetzt tuts. Endlich. Und müsste jetzt auch egal sein, auf welchem System mit welchen Einstellungen das VI läuft.
Genau das ist leider NICHT der Fall!
Folgende Möglichkeiten:
1. Dein VI läuft auf einem Englischen oder Schweizer Betriebssystem. Dort ist das Dezimaltrennzeichen ein Punkt. Folglich erwartet LabVIEW bei der Wandlung String->Zeit als Trennzeichen zwischen Sekunden und Millisekunden einen Punkt. Dort brauchst du das Ersetzen des Punktes durch ein Komma also nicht.
2. Du hast z.B. ein Deutsches Betriebssystem. Dort ist das Dezimaltrennzeichen ein Komma. Wenn du nichts an den Standardoptionen von LabVIEW änderst, dann wird auch im Zeitstring ein Komma erwartet. Dort brauchst du also das Ersetzen des Punktes durch ein Komma.
3. Wieder Deutsches Betriebssystem. Jetzt aber ist in den Optionen von LabVIEW der Haken bei "Use Localized Decimal Point" weggenommen. Dann ist das Vorgehen wie in Punkt 1.
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!
ach scheibe! Aber danke für den Hinweis!
Gibt es dann eine Möglichkeit so zu programmieren, dass es wirklich egal ist auf welchem OS, welcher LV Version und mit welchen Einstellungen das Programm läuft?