Interruptauswertung
Ich empfehle folgendes: Hast du LabVIEW, nimm NI-Karten. Hast du NI-Karten, nimm LabVIEW. Und zwar deswegen, weil der DAQMx alles handwarenahe für dich erledigt. Eine Nicht-NI-Karte würde ich nur dann einsetzen, wenn der DAQMx diese Karte beherrscht.
Normalerweise müsstest du für diese Karte einen Callback, der durch einer Interrupt von der Karte aktiviert wird, bereitstellen um eine saubere Datenerfassung machen zu können. Ohne diese Funktionalität bleibt dir quasi nur pollen - mit allen bekannten (und noch unbekannten) Problemen. Und eben diese Funktionalität beherrscht der DAQMx.
Und noch eine Anmerkung:
"LV-Treiber" wie der von AddiData sind keine Treiber, sondern DLL-Aufrufe in VI-Form. Ich halte solche Treiber für eine sinnvolle Datenerfassung für ungeeignet.
Nichtsdestoweniger kannst du natürlich diese Karte auch gepollt mit LabVIEW betreiben. Es kann ja sein, dass dein Anwendungsfall das zulässt. Das halte ich aber nur für eine halbe und auch nur eine Notlösung.
Für deinen Anwendungsfall könnte ich mir folgendes vorstellen:
Verlagere den Teil, der "den Interrupt pollt", in eine eigene While-Schleife, die möglichst schnell pollen kann. Tritt ein Interrupt ein, so kannst du die Daten mittels einer Queue weiterleiten. In der "Hauptschleife", die die Daten z.B. anzeigt, liest du die Queue aus. Das kann dann aber langsam geschehen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|