Hallo Andreas,
mal was ganz allgemeines:
Jedwede Öffnen/Initialisierung einer Resource macht man vor einer Programmschleife, jedes Schließen nach der Programmschleife. In der Schleife führt man nur die "echten" Schreib-/Lese-Zugriffe durch - genau dafür hat man sich doch vorher ein "Handle" besorgt!
Dies gilt für jede Resource: Dateien, Referenzen, DAQmx, deine DLL-Benutzung, wasweißich...
Du dagegen rufst sonst wie oft DLL-Open, DLL-Init, DLL-WriteBit, DLL-Close auf. Dies sollte theoretisch sauber laufen, aber man weiß nie, welche Datenstrukturen (-leichen) Windows dabei anlegt, vor allem, wenn man dies sehr oft macht.
Änder das mal, es wird dir auf lange Sicht helfen. Auch der übermäßige Gebrauch von lokalen Variablen ist nicht "LV-Style", es ist schnell ineffizient und fehlerträchtig. Außerdem würde ich diesen Thread hier mit
jenem zusammenlegen, da mMn die Probleme miteinander verbunden sind. Außerdem brauchst du dann nicht die ganzen subVIs doppelt anhängen.
(Tipp: Man kann entweder alle nötigen VIs in eine LLB zusammenfassen und nur eine Datei anhängen oder man fasst alle nötigen VIs in einem ZIP zusammen. Beide male muss der geneigte Helfende nur eine Datei downloaden...)