LabVIEWForum.de - PC Lichtleiterkarte mit LabVIEW ansprechen

LabVIEWForum.de

Normale Version: PC Lichtleiterkarte mit LabVIEW ansprechen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi

ich bin gerade dabei mich in LV einzuarbeiten hab also noch keine Erfahrung.

Meine Aufgabe:

Ich habe eine PCI Lichtleiterkarte Marke Eigenbau (keine Treiber vorhanden) in die Hand gedrückt bekommen und soll nun mithilfe von LV die kommunikation zwischen der PCI Lichtleiterkarte und ihrem Gegenstück herstellen. Die Karte wurde auf funktionsfähigkeit getestet.

Meine frage:

Kann mir jemand dabei helfen und sagen wie ich vorgehen muss, da ich wie gesagt noch keine Erfahrung mit LV habe.
Wie spreche ich die Karte in LV an?

Habe im Moment noch die Englische Studentenversion 8.5. ,bekomme aber noch die Vollversion.
Hast Du wenigstens einen Befehlssatz für die Karte?

Gruß Markus

EDIT: Erkennst Du Deine Karte in LabVIEW? Im MAX wirst Du sie nicht finden (da nicht von NI).
Nein im Moment noch nichts vorhanden.

Wenn ich einen Treiber oder Befahlssatz hätte, wie kann ich die Karte dann ansprechen?
' schrieb:Wenn ich einen Treiber oder Befahlssatz hätte, wie kann ich die Karte dann ansprechen?

Wenn Du z.B. eine DLL für die Karte bekommst, kannst Du die DLL aus LV heraus aufrufen und damit auf die Karte zugreifen.
Du benötigst aber auf alle Fälle irgendeine Doku zu der Karte. Ich kann mir nicht vorstellen wie das ohne gehen soll.

Gruß
Andreas
Du brauchst _zumindest_ ein Beispiel-Programm, welches die Karte ansteuert.
Daraus kannst Du (nicht mit LV, sondern mit dem Compiler des Beispielprogramms)
eine dll (für fensterln von winzigweich) erzeugen (oder halt die Doku und ne fertige dll).

(Hey, wie geht'n das unter linux, kann LV da libraries ansprechen?)

Wie Du dll's von LV aus aufrufst siehe LVDoku, da gibt's einige gute Beispiele.
Letztenendes mußt Du für jede Funktion der dll ein vi schrieben
(und geschickter Weise meißt noch einen layer drüberlegen, ums handy zu machen).

Viel Erfolg!
PeeGee
' schrieb:Du brauchst _zumindest_ ein Beispiel-Programm, welches die Karte ansteuert.
Daraus kannst Du (nicht mit LV, sondern mit dem Compiler des Beispielprogramms)
eine dll (für fensterln von winzigweich) erzeugen (oder halt die Doku und ne fertige dll).

(Hey, wie geht'n das unter linux, kann LV da libraries ansprechen?)

Bei Linux heissen DLLs Shared Libraries und die Call Library Node kann tatsächlich solche Shared Libraries aufrufen.

Rolf Kalbermatter
' schrieb:Nein im Moment noch nichts vorhanden.

Wenn ich einen Treiber oder Befahlssatz hätte, wie kann ich die Karte dann ansprechen?

Also eigentlich brauchst Du zwei Dinge.

1) Einen Device-Treiber. In modernen Betreibssystemen wie Windows NT und neuer, Linux, Mac OS X, etc. kann man aus der Applikationsebene nicht direkt auf HArdware zugreifen. Und eine PCI-Karte ist halt nun einmal Hardware. Ohne Device Treiber geht es also eigentlich schon mal gar nicht. Und erstellen eines solchen ist absolut kein Kinderspiel. Man braucht dazu das Device Driver Development Kit (DDK), einen C Compiler und manchmal auch noch einen Assembler, und GAAAANZ VIEEEEL Geduld.

2) Eine User-Space DLL. Diese DLL dient als Interface zwischen der Applikation und dem Device Treiber und stellt ein (hoffentlich dokumentiertes) API für die Applikation wie etwa Dein LabVIEW Programm zur Verfügung.

Aber da hat ja wohl jemand eine PCI Karte entwickelt und dazu ziemlich sicher einen Chipsatz verwendet. Ein PCI Businterface Marke Eigenbau ist ja wirklich nicht gerade ein Zweitageprojekt. Und je nachdem welcher Chipsatz da zum Einsatz kam, könnte schon ein generieker Device Treiber und User-Space DLL bestehen die vom Chipsatzhersteller angeboten wird. Zwar wird dieser Treiber natürlich nicht spezifieke Funktionen für die auf der Karte verbaute Hardware liefern, aber zumindest ein API, um die durch den Chipsatz in den Hauptspeicher gemappten Hardwareregister anzusprechen. Aber nicht jeder Chipsatz kommt mit so einem Treiber.

Eine genaue Dokumentation der Hardwareregister und deren Funktion ist aber natürlich absolut zwingend erforderlich hierfür.

Rolf Kalbermatter
HI

Danke erstmal für die Hilfe.

Ich hab mal die Dokumentation von der Karte angehängt mehr hab ich nicht.

Also ich hab ein Tool gefunden, das mir einen Treiber für die Karte generiert hat. http://www.jungo.com/dnload_kd.html
Die Karte wird jetzt auch im Windows Gerätemanager als funktionsfähig deklariert.

Jetzt brauch ich noch eine DLL die dann in LV eingebunden wird um die Karte anzusprechen richtig?

Wie schreib ich diese DLL, wo kann ich nachlesen wie das geht?

Und ein Beispiel wie ich diese dann in LV einbinde wäre auch nicht schlecht.
' schrieb:HI

Danke erstmal für die Hilfe.

Ich hab mal die Dokumentation von der Karte angehängt mehr hab ich nicht.

Also ich hab ein Tool gefunden, das mir einen Treiber für die Karte generiert hat. http://www.jungo.com/dnload_kd.html
Die Karte wird jetzt auch im Windows Gerätemanager als funktionsfähig deklariert.

Schön für Dich. Habe zwar so meine Zweifel dass das perfekt funktioniert und ganz sicher nicht gerade komfortabel. Dass Tool kann ja unmöglich wissen was Deine Karte denn so alles tut sondern kann nur
die PCI Controller PnP Daten auslesen und dafür einen generieken Treiber machen. Das ginge übrigens
mit VISA soweit auch irgendwie. Bei VISA hättest Du noch den Vorteil dass da keine User Space DLL
mehr nötig ist, weil VISA das schon ist.

Zitat:Jetzt brauch ich noch eine DLL die dann in LV eingebunden wird um die Karte anzusprechen richtig?

Wie schreib ich diese DLL, wo kann ich nachlesen wie das geht?

Und ein Beispiel wie ich diese dann in LV einbinde wäre auch nicht schlecht.

Also zuerst mal ohne C geht das wohl nicht, obwohl ich wundere mich dass das Tool diese nicht auch
für Dich machen kann. Der Device Treiber ist nämlich grundsätzlich das mühsamere Ding zum machen.
Aber kann natürlich sein dass dieses Tool mehr als Demo gedacht ist und dass man für die volle
Funktionalität eben bezahlen muss. Jungo ist mir insofern aus der Vergangheit bekannt, dass die
sich eben genau darauf spezilisieren, Tools und Libraries anzubieten (sprich verkaufen) um
Device-Treiber auf einfachere Weise zu erstellen, dann mit den Standard Windows DDK Tools
(und die waren in der Vergangheit wirklich alles ausser komfortabel). Ob das immer noch Jungos
Business Modell ist oder ob sie ihr Geld inzwischen auf eine andere Weise zu verdienen versuchen,
weiss ich aber nicht.

In so einer DLL kommunizierst Du mit den Device Treiber durch Aufruf von Windows API Funktionen.
Zuerst mit CreateFile() das Device öffnen, dann mit ReadFile() und WriteFile() Daten schreiben und
lesen und eventuel mit DeviceIOControl() Steuerkommandos an den Treiber schicken. Am Schluss
mit CloseHandle() das Device wieder schliessen.

Ein Beispiel ist ziemlich sinnlos, da das alles sehr treiberspezifisch ist, aber im Microsoft DDK gibt es
genug davon.

Und dann darfst Du Dich mit der Call Library Node in LabVIEW auseinandersetzen. Diese dient dazu
die von Dir geschriebenen Funktionen in der DLL aufzurufen. Gibt hier sogar ein Tutorial das ziemlich
gut erklärt wie man DLLs von LabVIEW aus aufruft.

Wenn Du noch spezifieke Fragen hast kannst Du ja dann fragen, aber ein komplettes Device Treiber
Interface für LabVIEW als Beispiel geht schon etwas weit. Damit verdiene ich schliesslich auch ein
wenig meinen Lebensunterhalt neben anderen reinen LabVIEW-Projekten.

Rolf Kalbermatter
Referenz-URLs