summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2005-11-02 18:54:21 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2005-11-02 18:54:21 +0000
commit85ca4eea5c99433f05aa8201e027b846e2b55cf1 (patch)
tree4aed46cf33741216814d68a46ac04a1bcebcb14c
parentf777669b3f55625eb7a5108eefa4fe6580c0a40f (diff)
downloadpyserial-git-85ca4eea5c99433f05aa8201e027b846e2b55cf1.tar.gz
- enhance example
- some fixes
-rw-r--r--pyparallel/examples/lcd.py70
-rw-r--r--pyparallel/parallel/parallelppdev.py2
-rw-r--r--pyparallel/setup.py2
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",