pyparallel and MAKE controller board for CRYDOM AC/DC switches
garyr at fidalgo.net
garyr at fidalgo.net
Tue Oct 11 21:20:33 EDT 2005
Richard Siderits wrote:
> Greetings. I am trying to write a small application for controlling CRYDOM
> AC and DC switches from the parallel port using pyparallel. The project is
> described in the latest issue of MAKE magazine Vol.3 pg 86. All of the
> examples are in C, VB, Linux, Unix but not a thing in Python. Seems like a
> perfect application for a Python program or even a simple windowed app.
> Problem is I'm stuck. How, for example, would I format the setData() to
> turn off data PIN 3? If I knew that then.. Life, the Universe and
> Everything would be better.
>
> Progress so far:
>
> import parallel, time, ctypes
> p=parallel.Parallel(1)
> p.setData(0)
> p.setDataStrobe(0)
> print "Boy are you stuck!"
>
> THANKS for any help!!
Here is some code that may do what you want:
from parallel import *
class P:
def __init__(self, port):
self.dataReg = 0
self.p = Parallel(port)
def setData(self, value):
self.dataReg = value
self.p.setData(value)
def setDataBit(self, bit, value):
assert 0 <= bit <= 7
assert 0 <= value <= 1
mask = 1 << bit
self.dataReg = (self.dataReg & ~mask)
if value:
self.dataReg += mask
self.p.setData(self.dataReg)
if __name__ == '__main__':
import msvcrt, time
bit = 1
pyp = P(LPT1)
pyp.setData(0xff) # set all bits high
print 'all bits high'
while not msvcrt.kbhit():
time.sleep(0.1)
ch = msvcrt.getch()
while 1:
pyp.setDataBit(bit, 0) # set bit <bit> low
print 'bit %d low' % (bit, )
while not msvcrt.kbhit():
time.sleep(0.1)
ch = msvcrt.getch()
if ord(ch) == 27: # esc
break
pyp.setDataBit(bit, 1) # now high
print 'bit %d high' % (bit, )
while not msvcrt.kbhit():
time.sleep(0.1)
ch = msvcrt.getch()
if ord(ch) == 27: # esc
break
More information about the Python-list
mailing list