From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

[IDLE] LabVIEW User Group Stuttgart

cancel
Showing results for 
Search instead for 
Did you mean: 

Abhängigkeit zu einer Ascii-Datei in einem eigenen LV Treiber erstellen

Hallo Zusammen,

seit einigen Monaten benutze ich nun schon LabVIEW und nutze vieles aus den Grundkursen. Nun habe ich bei uns einen LV-Treiber gebaut um in unserer Datenbank einige immer wieder auftretende SQL-Anfragen zu stellen.

Dieser Treiber funktioniert, aber dennoch habe ich ein Problem.

Um eine Verbindung zur Datenbank zu erstellen benutze ich das VI: "DB Tools Open Connection.vi"

Dieses VI benötigt eine dsn-Datei.

Diese dsn-Datei habe ich von unserem Admin erhalten und diese ist überall gültig.

Daher habe ich diese dsn-Datei dem Treiber-Projekt zugefügt.

Den Pfad zu dieser Datei kann ich in der LV-Entwicklungsumgebung finden und benutzen.

Erstelle ich jetzt ein neues Projekt und benutze dort meinen eigenen Treiber funktioniert auch noch alles.

Erstelle ich jetzt ein Build (.exe) aus diesem neuen Projekt, so wird diese dsn-Datei nicht mitgenommen und in der kompilierten Anwendung kommt der Fehler, dass keine gültige dsn-Datei gefunden wurde.

Ich habe zwei Ansätze, wie ich dieses Problem für den Build beheben kann:

1. In jedem neuen Projekt in dem ich den Treiber benötige die Abhängigkeit per Hand eingeben um die Datei in das Data-Unterverzeichnis zu kopieren.

Nachteil: Wer den Treiber nutzt, muss diese Abhängigkeit kennen und jedesmal per Hand zufügen.

2. Den Treiber so abändern, dass wenn die dsn-Datei nicht gefunden wird, eine dsn-Datei in Laufzeit erstellen. Der dsn-Dateiinhalt liegt im VI.

Nachteil: Evtl. gibt es keine Schreibrechte auf das Data-Unterverzeichnis und so muss die dsn-Datei in ein Temp-Verzeichnis gelegt werden. Dieses Temp-Verzeichnis muss dann wieder aufgeräumt werden.

Beide Ansätze finde ich unschön.

Gerne würde ich eine Abhängigkeit im Treiber erstellen, dass diese Datei immer mitgenommen wird, sobald der Treiber (bzw. ein bestimmtes VI des eigenen Treibers) verwendet wird, in etwa so, wie andere Treiber ihre genutzten .dll-Bibliotheken mitnehmen.

Bisher habe ich auch bei Google noch keine Erfolge erzielt um mein kleines Problem zu beheben.

Gibt es hier jemanden, der mir bei diesem Problem etwas helfen kann?

So wie ich LV einschätze sind es nur ein paar Klicks an der richtigen Stelle und hoffe auf jemanden, der mir diese Klicks zeigt.

Danke und viele Grüße,

Klaus

0 Kudos
Message 1 of 5
(7,395 Views)

Hallo Klaus,

beim Erstellen der Spezifikation der exe kannst Du auch Support-Ordner anlegen lassen. Die dsn muß als additional file in die Spezifikation mit eingebunden werden. Falls noch Einträge in der Registry nötig sein sollten, kannst Du diese bei der Erstellung eines Installers machen lassen.

Der Compiler weiß halt nicht per se, welche Files der Programmierer so noch mit einbindet, deshalb müssen sie explizit eingebunden werden, wie z.B. dlls

Hop this helps a bit

Viele Grüsse

Oli

0 Kudos
Message 2 of 5
(4,460 Views)
0 Kudos
Message 3 of 5
(4,460 Views)

Hallo Oli,

vielen Dank für die schnelle Antwort.

Bisher habe ich den Treiben nicht kompiliert. Immer nur das Projekt in dem ich den Treiber verwendet habe. Dort habe ich die Datei dann eingebunden. Alle benötigten VI's werden auch automatisch als Abhängig erkannt und mitgenommen, bzw. in das Data-Unterverzeichnis kopiert. Es fehlt nur immer die dsn-Datei.

Hatte gehofft, dass man im Treiber sagen kann, dass diese Datei immer mit in der Umgebung kopiert wird oder als Abhängig markieren kann um diese dann automatisch irgendwohin kopiert wird. Finden würde ich diese Datei dann, sofern sie bei jedem neuen Projekt wieder an die gleiche Stelle kopiert wird.

Probiere morgen nochmal weiter.

Viele Grüße,

Klaus

0 Kudos
Message 4 of 5
(4,460 Views)

Hi Klaus,

Support Files (z.B. die DSN) kannst Du im Build Skript einbinden (Source Files --> Always included); die sollte auch im Projekt aufgenommen sein (also im Project Explorer angezeigt werden) unter Destinations kannst Du dann auch den konkreten Speicherplatz definieren.

Viel Erfolg!

Oli

0 Kudos
Message 5 of 5
(4,460 Views)