LabVIEWForum.de - Paralleler Port

LabVIEWForum.de

Normale Version: Paralleler Port
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich versuche gerade das Beispiel "Parallel Port Read and Write Loop" zum Laufen zu kriegen.
Habe ein Thinkpad R500 (64 Bit) mit Docking Station, wo es den LPT auch gibt. Im Bios die Einstellungen angepasst: aktiv, 0x378, Bidirektional. Im Gerätemanager gibt es den LPT1 bei 0x378 und ist auch nicht mit Warnung markiert.

Beim Start des Beispiels kommt jedoch folgende Fehlermeldung:
[attachment=27883]

Was nun? Fehlt ein Treiber? Kann's mit 64 Bit zusammenhängen? Ist Dockingstation schuld?

Gruß, eg

P.S. habe Windows 7 64 Bit.
Danke, hat sich erledigt:

Zitat:NOTE: In Port.vi and Out Port.vi, which this example uses, are not supported on Windows Vista and later.

Hier noch was dazu:
http://digital.ni.com/public.nsf/allkb/496...62571E200633507

Womit kann ich aber dann unter Windows 7 den parallelen Port ansprechen, bzw. auslesen? Geht es vielleicht mit VISA?

Danke, eg
Hallo Eugen,

das liegt wohl an Windows 7. Unsure
Hier Big Grin gibt's nämlich auch LabVIEW-unabhängige Probleme mit dem Parallel Port in Verbindung mit Windows 7 - 64bit.
Auf der Homepage von NI haben sie übrigens empfohlen statt dem Parallel Port eine günstige IO-Karte zu verwenden. Unsure

Gruß Markus
Hi Markus, gegoogelt zu diesem Thema habe ich schon genug. Mich interessiert die Lösung dazu. Ist denn Parallel Port ab Win 7 nicht mehr ansprechbar?

inout32.dll geht leider auch nicht, es gibt mir immer den Wert 120 zurück. So eine KackeGrrr
' schrieb:inout32.dll geht leider auch nicht
Unter Win7, 64Bit, gehen Treiber unterhalb einer bestimmten Ebene - und dazu gehört nun mal der parallele Port - nur noch 64Bit. Da kann oben liegen was will. Auch ein 32Bit-App braucht dann 64Bit-Treiber. InOut32.dll geht unter 64Bit nicht.

Wenn LabVIEW hier keinen 64Bit-Treiber hat sehe ich schwarz, das direkt in VISA zu machen. Ein Ausweg könnte die (64Bit-) MS-API sein: FileCreate('LPT1:', ...).
' schrieb:Unter Win7, 64Bit, gehen Treiber unterhalb einer bestimmten Ebene - und dazu gehört nun mal der parallele Port - nur noch 64Bit.

Interessanterweise funktioniert die serielle Schnittstelle noch -_-
Bist Du sicher, dass da die 32bit-dll verwendet wird? Ich vermute, dass dafür extra ein 64Bit-Treiber mitinstalliert wurde, mit dem Du nur die serielle Schnittstelle, aber nicht mehr den Parallel Port ansteuern kannst.
Ist aber nur eine Vermutung. Unsure

Gruß Markus

' schrieb:Interessanterweise funktioniert die serielle Schnittstelle noch -_-
' schrieb:Interessanterweise funktioniert die serielle Schnittstelle noch -_-

Serielle Schnittstellen werden unter Win32 als Files gehandhabt. Ich gehe davon aus, dass das in W7/64 immer noch so ist. Der "Create" hierzu heißt eben CreateFile. Da dieser Befehl über einer bestimmten Ebene liegt, funktioniert der in Win32 wie in W7/64. Man muss nicht per Port-Write/Read auf die expliziten Ports schreiben (PortIO etc), das geht viel einfachen mit WriteFile(Handle, Data) etc.

Wenn du in VISA auch die LPT-Schnittstellen findest, dann werden die auch in LabVIEW gehen - sonst nicht. Davon gehe ich aus.
' schrieb:Interessanterweise funktioniert die serielle Schnittstelle noch -_-

Du vergleichst hier Äpfel und Kirschen! (und ich benutze hier ganz bewusst nicht Birnen) Big Grin

Serial Port wrd normalerweise durch das COMM API angesprochen (und der parallele Port is darin auch nur eine weitere Schnittstelle da Microsoft sich einfach sagt, ob jetzt Byteseriel oder Bitserial, das macht uns gar nichts aus).

Das COMM API stellt aber eine Deviceschnittstelle zur Verfügung die Du ähnlich wie VISA benutzst, d.h. man hat Konfigurationsfunktionen und Read und Write Funktionen um Buffers zu lesen und zu schreiben. Wie diese Buffer in Bits und Bytes aufgelöst werden und über die Pins rausgeschickt werden ist Sache des unter dem COMM API liegendenen Kernelgerätetreibers. Das COMM API wird auch von VISA benützt um diese Schnitttstellen anzusprechen.

Natürlich hat Microsoft das COMM API auch nach 64 Bit Windows portiert und deshalb functioniert das auch noch. Was Du aber versuchst ist die Schnittstelle direkt per Registerprogrammierung anzusprechen. Das geht seit Windows NT mit seinem protected Kernel nicht mehr von der Applikationsebenen aus. Dazu benötigt man einen Kernelgerätetreiber der das im Auftrag der Applikation tut und die Resultate an diese zurückgibt.

LabVIEW installiert einen 32 bit Gerätetreiber der solche Registerzugriffe ermöglicht (was übrigens eine seriöse Sicherheitslücke in einem System darstellt) und dieser Treiber wird von den InPort und OutPort Funktionen verwendet. Das Problem an diesem Treiber ist dass er Gebrauch macht von Kernelsupportfunktionen die gemäss Miscrosoft seit etwa Windows 2000 als depreciated deklariert sind (und mit vernünftigem Aufwand ist es eigentlich fast nicht mehr möglich einen solchen Treiber zu schreiben ohne Gebrauch von diesen Funktionen zu machen). Aber unter 64 Bit Windows funktioniert der 32 Bit Treiber ganz einfach nicht. Windows weigert sich um den auch nur zu installieren. Portierung des Treibers nach 64 Bit ist aber wahrscheinlich keine Option, da Microsoft wahrscheinlich den Übergang nach 64 Bit benützt hat um von diesen depreciated Kernelfunktionen weg zu kommen, und sie diese darum kurzerhand aus dem Kernel gekippt haben.

Registerprogrammierung von Applikationsebene aus ist eigentlich schon seit dem Einzug von protected 32 Bit OSen ein Artefakt aus alten single tasking OS Tagen. Aber mit 64 Bit OSen wird das wohl mehr oder weniger definitiv der Vergangenheit angehören.
Referenz-URLs