DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Strategisches Programmieren

Hallo Kollegen,

da brauche ich eine strategische Lösung.

 

Ich muss:

  1. beliebige *.dat Dateien laden. Eine oder auch mehrere nacheinander.

  2. aus diesen Dateien mehrere Kanäle selektiv ins Datenportal laden. Einige – normal, andere mit Datenreduktion.

  3. die geladenen Kanäle weiter bearbeiten.

 

Wie mache ich die ersten zwei Punkten am besten und am einfachsten?

(der Punkt 3 ist bereits erledigt)

 

Danke für die Hilfe,

a6a

 

 

0 Kudos
Message 1 of 17
(6,612 Views)
Hallo a6a,
denken Sie über eine automatisierte Lösung per Script nach oder ist ihre Frage ganz generell?

Eigentlich macht es keinen großen Unterschied, denn alles, was sie im DIAdem manuell machen können, lässt sich auch per Script erledigen. Man muss sich allerdings die Frage stellen: Kann man Anhand der Datei-,  Kanalbezeichnungen, oder anderer Parameter automatisch erkennen, welche Kanäle geladen werden müssen, und weiter: welche dabei zu reduzieren sind.

Wenn das der Fall ist, kann man sicherlich ganz gut mit dem Datafinder arbeiten: In zwei Schritten zuerst programmatisch eine Liste der Dateien und Kanäle erstellen, die normal geladen werden, die Kanäle laden, und im zweiten Schritt das Ganze für die zu reduzierenden Kanäle machen.

Komplizierter wird es natürlich, wenn man keine Suche einsetzen kann, um die gewünschten Kanäle zu extrahieren. Dann muss der Endanwender eingreifen und die entsprächenden Kanäle manuell auswählen.

Wenn Sie noch ein bisschen genauer schreiben, was sie vor haben, kann ich Ihnen vielleicht bessere Tipps geben.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 2 of 17
(6,597 Views)

Hallo Ingo,

 

ich bin so weit, dass ich mit meiner VBS vordefinierte Kanäle nach Kanalnamen selektiv laden kann.

(s. Anhang).

 

Leider muss ich jedes mal, den Name der Messdatei anzupassen,

wenn ich eine neue Auswertung starten möchte. Nicht schön!

 

So dachte ich, Diadem kann es bestimmt besser!

 

Zuerst ein Dialogfenster öffnen und mir die Möglichkeit geben beliebige INCA DAT Messdateien (mit „MDF“) zu laden.

Vielleicht auch mehrere und nicht nur eine Messdatei.

 

Wenn ich sie ausgewählt habe, lädt Diadem die genannten Kanäle (keine Kanalnummer, sonder Kanalnamen, die ich bereits definiert habe) nacheinander, auch aus mehreren Messdateien.

 

Ich möchte, dass mein Skript keinem festen Dateifile für die Suche nach Messdateien enthält.

 

Ich kann keine Info in der Hilfe finden, ob es möglich ist,

in einem Dialog beliebige Messdateien in INCA DAT Format zu laden.

 

Worauf muss ich aufpassen?

Vielleicht gibt es eine andere einfache Lösung?

Mit Listen – in einer Liste die Messdateien, in anderen – die Kanalname?

 

Falls Du weitere Fragen hast,

bin ich bereit mehr zu erklären.

 

Viele Grüße,

a6a

 

0 Kudos
Message 3 of 17
(6,594 Views)
Hallo a6a,

ja, jetzt verstehe ich besser, worum es geht. Natürlich gibt es für dieses Problem eine Lösung: Man kann aus einem VBS den Standarddialog zum Öffnen einer Datei aufrufen. Folgendes Beispiel zeigt Ihnen, wie es geht:

Call filenameget("Navigator", "FileRead", "*.dat", "MDF")
if dlgstate = "IDOk" then
  msgbox filedlgfilename
end if


Mit der Variable DlgState kan geprüft werden, ob der Dialog mit "Abbrechen" beendet wurde oder richtig. In der Variable FileDlgFileName stehht dann der Dateiname mitsamt Endung und Pfad. In der Hilfe finden Sie noch weitere Informationen zum Befehl.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 4 of 17
(6,589 Views)
Sind Sie mit dem Begriff "Serienauswertung" vertraut?

Damit meinen wir  ein Script, welches automatisch mehrfach aufgerufen wird und so nacheinander verschiedene Dateien bearbeiten kann. Welche Dateien bearbeitet werden sollen, holt sich die Serienauswertung aus einer Textdatei. Die muss genauso heissen, wie das VBS und trägt die Endung LST.

LST Dateien kann man manuell erzeugen, mit einem Scriptbefehl, oder aber mit dem FilNameGet Dialog. wird als weiterer Parameter ein ASCII Dateiname angegeben, so gestattet es der Dialog, dass mehrere Dateien markiert werden. Mit Beenden des Dialoges werden dann alle Dateinamen automatisch in die Listendatei geschrieben.

Nun kann die Serienauswertung gestartet werden, die die Dateien nach und nach abarbeitet. Im DataLoad Befehl des Serienauswertungsscripts steht dabei kein Dateiname, sondern der Kenner "UseFileList". Damit holt sich das script den Namen aus der LST Datei, und wird so lange wiederholt, bis alle Dateien in der Liste abgearbeitet sind.

Im Anghang finden Sie ein kleines Beispiel, welches nach diesem Prinzip arbeitet. Seine Aufgabe ist es, eine Reihe von DIAdem DAT Dateien in das TDM Format umzuwandeln. Dafür werden diese nacheinander geladen und als TDM gespeichert.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
Message 5 of 17
(6,586 Views)

Danke Ingo für die Aufklärung .

Klar, präzise, informativ. J

 

1. Nun wollte Diadem „Dat“ im DataFileLod „UseFileList“, „Dat“ nicht akzeptieren (s. Fehlermeldung im Anhang)

und hat die Dateien nur dann geladen, nachdem ich „Dat“ auskommentierte.

Wo liegt das Problem? Meine Messdateien wurden als INCA DAT Messdateien gespeichert und wurden bis jetzt von Diadem angenommen.

 

2. Dann wollte ich die Kanäle selektiv laden.

Habe dafür DatToTdm angepasst (s. Anhang)

und Diadem mag die Variable „UsefileList“ nicht (s. Fehlermeldung im Anhang).

Wo ist hier das Problem? Kann Diadem in disem Fall nicht selektiv laden?

 

 

Bitte um Hilfe.

Danke im Voraus, a6a

0 Kudos
Message 6 of 17
(6,568 Views)
Hallo a6a,

zum ersten Punkt:
Den DAT to TDM Konverter habe ich irgendwann geschrieben, um DIAdem DAT Dateien (Standardformat bis Version 8.x) in das neue TDM zu knovertieren. In DatToTdm steht der Befehl datafileload "UsefileList", "DAT", und der versucht nun, Ihre INCA DAT Datei mit dem DIAdem DAT Filter (DD8x) zu laden - was natürlich nicht funktioniert. Hier müssen Sie einfach den Datafileload Befehl anpassen. Der von Ihnen benötigte Importfilter heisst "MDF", auch wenn die Dateien die Endung DAT tragen.

In Ihrem Script ist noch ein kleiner Fehler. Völlig richtig ist, dass Sie mit MyFile = UseFileList den aktuellen Dateinamen in einer Variable speichern. Nu so können Sie mehrfach auf den gleichen Pfad zurückgreifen. Im DataLoadRed Aufruf haben Sie MyFile jedoch in Anführungsstriche gesetzt. Dadurch wird der String MyFile als Dateiname übergeben - und nicht der Inhalt der Variablen. Wenn Soi die Anführungszeichen entfernen, müsste das Script laufen.

Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
Message 7 of 17
(6,563 Views)

Hallo Ingo,

 

nach Deinen Empfehlungen habe ich zwei Messdateien ausgewertet und stelle eine erschreckende Tatsache fest:

abhängig von der Reihenfolge des Ladevorganges kommen unterschiedliche Ergebnisse raus.

 

z.B. wenn ich zuerst die Messdatei1 im Dialog anklicke und dann die Messdatei2 in der DatGetTdm.list werden sie in ungekehrter Reihenfolge gespeichert (zuerst die zweite und dann die erste) und in der Auswertung habe ich 3 Motorstarts,

und wenn zuerst MEssdateie2 und dann Messdatei1 anklicke, dann habe ich in der Auswertung 4 Starts und in der DatGetTdm.list steht an erster Stelle die Messdatei1 und dann die Messdateie2.

 

Aus welchem Grund passiert es?

 

Gruß,

a6a

0 Kudos
Message 8 of 17
(6,545 Views)
Hallo a6a,
in der Tat ist es so, dass die Reihenfolge der Pfade in der LST Datei davon abhängt, in welcher Ordnung sie die Dateien im Dialog anklicken. Dieser Thread widmet sich dem Thema und zeigt, wie man die Dateien im LST File zum Beispiel alfabetisch sortieren kann.
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 9 of 17
(6,538 Views)
Hallo Ingo,
 
wie kann ich am besten auf die in DatToTDM.lst gespeicherte Dateiname greifen?
Mit welcher Funktion kann ich die Zeilen in DatToTDM.lst durch gehen,
um die gespeicherte dat-Dateien zum laden öffnen?
 
danke im Voraus,
a6a
0 Kudos
Message 10 of 17
(6,484 Views)