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
Parallelport mit pyparallel ansteuern
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nzca!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?
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)
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))
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
>>
Code: Alles auswählen
>>> data = DATA1 + DATA5 + DATA6
>>> p.setData(data)
>>>
Gerold
PS:
- http://halvar.at/krimskrams/parallelpor ... oppler.gif
- http://www.python-forum.de/post-75211.html#75211
.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo Gerold, danke für die Antwort.
Eine Frage hätte ich aber noch, gibt es auch eine Möglichkeit, bei anstatt port=0 (bzw =1 etc.)direkt die Portadresse anzugeben? Also in meinem Fall wäre das B400.
Eine Frage hätte ich aber noch, gibt es auch eine Möglichkeit, bei
Code: Alles auswählen
p = parallel.Parallel(port = 0)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nzca!nzca hat geschrieben:direkt die Portadresse anzugeben? Also in meinem Fall wäre das B400.
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
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.