Seite 1 von 1

Parallelport mit pyparallel ansteuern

Verfasst: Sonntag 15. Juni 2008, 22:10
von nzca
Hi,

ich möchte ein kleines Programm schreiben, um meine PC-Beleuchtung über den Parallelport steuern zu können. Da wir in der Schule grade mit Python arbeiten, habe ich mich erkundigt, wie man Parallelports mit Python anspricht. Leider habe ich bis jezt nur rausbekommen können, dass das mit pyparallel geht. Also hab ich erst mal pyparallel runtergeladen und installiert.
Dann hab ich mal gegoogelt, was jezt in das Programm ungefähr reinmuss und sowas gefunden:

>>> import parallel
>>> p = parallel.Parallel() #open LPT1
>>> p.setData(0x55)

So jezt meine Fragen:
Wie bekomme ich jezt raus, was ich dahin setzen muss, wo 0x55 steht?
Und ist es möglich andere Ports als LPT1 anzusprechen?

Danke schonmal im Vorraus :wink:

Re: Parallelport mit pyparallel ansteuern

Verfasst: Sonntag 15. Juni 2008, 22:56
von gerold
nzca hat geschrieben:Wie bekomme ich jezt raus, was ich dahin setzen muss, wo 0x55 steht?
Und ist es möglich andere Ports als LPT1 anzusprechen?
Hallo nzca!

Willkommen im Python-Forum!

Du kannst beim Initialisieren des Parallelports den Port mit angeben. 0 = LPT1, 1 = LPT2, ...

Code: Alles auswählen

p = parallel.Parallel(port = 0)
Du hast mit dem Parallelport 8 Datenleitungen. Diese 8 Datenleitungen stellen ein Byte dar. Data1 ist das erste Bit. Data2 ist das zweite Bit. Usw.

Im Binärsystem beginnt man mit der Zählung rechts und zählt nach links.

"00000001" = 1
"00000010" = 2
"00000100" = 4
"00001000" = 8
"00010000" = 16
"00100000" = 32
"01000000" = 64
"10000000" = 128

Wenn du einen oder mehrere Datenleitungen einschalten möchtest, dann kannst du dir so einen achtstelligen Text mit dem Befehl ``int(x, 2)`` vom Binärsystem in eine Zahl umwandeln. Und diese Zahl kannst du an ``p.setData()`` übergeben.

Beispiel:

Code: Alles auswählen

import parallel
p = parallel.Parallel(port = 0)
p.setData(int("00000001", 2))
p.setData(int("00000011", 2))
p.setData(int("00000111", 2))
Dann kannst du natürlich auch Binärlogik verwenden um die Zahl zusammenzustellen. Das kommt darauf an, ob du damit etwas anfangen kannst:

Code: Alles auswählen

>>> DATA1 = 1
>>> DATA2 = 2
>>> DATA3 = 4
>>> DATA4 = 8
>>> DATA5 = 16
>>> DATA6 = 32
>>> DATA7 = 64
>>> DATA8 = 128
>>>
>>> DATA1 | DATA8
129
>>> DATA1 | DATA2 | DATA3 | DATA4 | DATA5 | DATA6 | DATA7 | DATA8
255
>>
Du kannst die Zahlen aber auch einfach zusammenzählen. Das habe ich früher gemacht, als ich noch nichts über Binärlogik wusste:

Code: Alles auswählen

>>> data = DATA1 + DATA5 + DATA6
>>> p.setData(data)
>>> 
mfg
Gerold
:-)

PS:
- http://halvar.at/krimskrams/parallelpor ... oppler.gif
- http://www.python-forum.de/post-75211.html#75211

.

Verfasst: Montag 16. Juni 2008, 11:09
von nzca
Hallo Gerold, danke für die Antwort.
Eine Frage hätte ich aber noch, gibt es auch eine Möglichkeit, bei

Code: Alles auswählen

 p = parallel.Parallel(port = 0) 
anstatt port=0 (bzw =1 etc.)direkt die Portadresse anzugeben? Also in meinem Fall wäre das B400.

Verfasst: Montag 16. Juni 2008, 12:02
von gerold
nzca hat geschrieben:direkt die Portadresse anzugeben? Also in meinem Fall wäre das B400.
Hallo nzca!

Du kannst es z.B. auf die harte Tour versuchen und ``parallel.LPT1_base`` überschreiben, bevor du ``parallel.Parallel`` initialisierst.

Sieh dir einfach den Quellcode von "parallel" an.

mfg
Gerold
:-)

Verfasst: Montag 16. Juni 2008, 13:27
von nzca
Danke für die schnelle Hilfe.
Jezt funktioniert alles. :)