From 85ca4eea5c99433f05aa8201e027b846e2b55cf1 Mon Sep 17 00:00:00 2001 From: cliechti Date: Wed, 2 Nov 2005 18:54:21 +0000 Subject: - enhance example - some fixes --- pyparallel/examples/lcd.py | 70 +++++++++++++++++++++++++++++++++--- pyparallel/parallel/parallelppdev.py | 2 +- pyparallel/setup.py | 2 +- 3 files changed, 68 insertions(+), 6 deletions(-) diff --git a/pyparallel/examples/lcd.py b/pyparallel/examples/lcd.py index b56c2a5..8e1c66b 100644 --- a/pyparallel/examples/lcd.py +++ b/pyparallel/examples/lcd.py @@ -5,7 +5,7 @@ # this is distributed under a free software license, see license.txt import sys, time -sys.path.append('..') +sys.path.insert(0, '..') import parallel LCDON = 0x01 #0x00000001 Switch on display @@ -31,9 +31,8 @@ LCD_D6 = 1<<6 LCD_D7 = 1<<7 -class LCD: +class FourBitIO(object): def __init__(self): - self.p = parallel.Parallel() self.data = 0 self.out(0) #reset pins @@ -97,6 +96,69 @@ class LCD: self.toggleE() #toggle LCD_E, the enable pin time.sleep(0.001) #wait until instr is finished + +class EightBitIO(object): + def __init__(self): + self.data = 0 + + self.setRS(0) + self.setRW(0) + self.out(0) #reset pins + time.sleep(0.050) #wait more than 30ms + #send the reset sequece (3 times the same pattern) + self.out(LCD8BITS) #set 8 bit interface + self.toggleE() #toggle LCD_E, the enable pin + time.sleep(0.005) #wait a bit + self.toggleE() #toggle LCD_E, the enable pin + time.sleep(0.005) #wait a bit + self.toggleE() #toggle LCD_E, the enable pin + time.sleep(0.005) #wait a bit + + #~ self.instr(LCD2LINES) #set 2 lines display + self.instr(LCDCURSOROFF) #hide cursor + self.instr(LCDCLEAR) #clear display + + def setRW(self, state): + self.p.setAutoFeed(state) + + def setRS(self, state): + self.p.setInitOut(state) + + def toggleE(self): + """toggle enable pin""" + self.p.setDataStrobe(1) #toggle LCD_E, the enable pin + #~ time.sleep(0.001) + self.p.setDataStrobe(0) #back to inactive position + #~ time.sleep(0.001) + + def out(self, data): + """set data to LCD port""" + self.data = data + self.p.setData(self.data) + + def instr(self, cmd): + """send instruction byte to LCD""" + self.setRS(0) + self.setRW(0) + self.out(cmd) + self.toggleE() #toggle LCD_E, the enable pin + time.sleep(0.005) #wait until instr is finished + + def putc(self, c): + """send a data byte to the LCD""" + self.setRS(1) + self.setRW(0) + self.out(ord(c)) + self.toggleE() #toggle LCD_E, the enable pin + time.sleep(0.001) #wait until instr is finished + + +#~ class HD44780(FourBitIO): +class HD44780(EightBitIO): + def __init__(self): + self.p = parallel.Parallel() + super(HD44780, self).__init__() + def write(self, str): """write a string to the LCD""" for c in str: @@ -109,7 +171,7 @@ class LCD: self.instr(LCDLINE1) #just in case, set cursor to a visible pos if __name__ == '__main__': - lcd = LCD() + lcd = HD44780() lcd.write("Hello World") lcd.instr(LCDLINE2) lcd.write("from Python") diff --git a/pyparallel/parallel/parallelppdev.py b/pyparallel/parallel/parallelppdev.py index 18cc54c..98e1e84 100644 --- a/pyparallel/parallel/parallelppdev.py +++ b/pyparallel/parallel/parallelppdev.py @@ -184,7 +184,7 @@ class Parallel: else: self.device = "/dev/parport%d" % port self._fd = os.open(self.device, os.O_RDWR) - self.PPEXCL() + #~ self.PPEXCL() self.PPCLAIM() self.setDataDir(1) self.setData(0) diff --git a/pyparallel/setup.py b/pyparallel/setup.py index 749470c..c537965 100644 --- a/pyparallel/setup.py +++ b/pyparallel/setup.py @@ -5,7 +5,7 @@ import os if os.name == 'nt': data_files = {'parallel': ['simpleio.dll']} else: - data_files = None + data_files = {} setup (name = "pyparallel", description="Python Parallel Port Extension", -- cgit v1.2.1