Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 3 additions & 64 deletions screen.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

Read the blog entry at http://jeremyblythe.blogspot.com for more information
'''
import serial
import datetime
import time
import subprocess
import twitter
import urllib2
import json
import textStarSerialLCD

CLEAR = chr(12)
ESC = chr(254)
Expand All @@ -22,72 +22,11 @@
POLL_TICKS = 15
REFRESH_TICKS = 300

class Display():
""" Manages the 16x2 4 button display:
on_tick called every 0.1 seconds as part of the main loop after the button read
on_poll called every 1.5 seconds
on_page called when a new page has been selected
on_refresh called every 30 seconds"""
def __init__(self,on_page=None,on_poll=None,on_tick=None,on_refresh=None):
# Start the serial port
self.ser = serial.Serial('/dev/ttyAMA0',9600,timeout=0.1)
# Callbacks
self.on_page = on_page
self.on_poll = on_poll
self.on_tick = on_tick
self.on_refresh = on_refresh

self.page = 'a'
self.poll = POLL_TICKS
self.refresh = REFRESH_TICKS

def position_cursor(self,line,column):
self.ser.write(ESC+'P'+chr(line)+chr(column))

def scroll_down(self):
self.ser.write(ESC+'O'+chr(0))

def window_home(self):
self.ser.write(ESC+'G'+chr(1))

def clear(self):
self.ser.write(CLEAR)

def run(self):
#show initial page
display.ser.write(' Starting.... ')
if self.on_page != None:
self.on_page()
#main loop
while True:
key = str(self.ser.read(1))
if key != '' and key in 'abcd':
self.page = key
self.refresh = REFRESH_TICKS
self.poll = POLL_TICKS
if self.on_page != None:
self.on_page()
else:
self.refresh-=1
if self.refresh == 0:
self.refresh = REFRESH_TICKS
if self.on_refresh != None:
self.on_refresh()

self.poll-=1
if self.poll == 0:
self.poll = POLL_TICKS
if self.on_poll != None:
self.on_poll()

if self.on_tick != None:
self.on_tick()


display = None
# Start twitter
twitter_api = twitter.Api()


def write_datetime():
display.position_cursor(1, 1)
dt=str(datetime.datetime.now())
Expand Down Expand Up @@ -157,6 +96,6 @@ def on_refresh():
elif display.page == 'd':
write_ip_addresses()

display = Display(on_page, on_poll, on_tick, on_refresh)
display = textStarSerialLCD.Display(on_page, on_poll, on_tick, on_refresh)
display.run()

79 changes: 79 additions & 0 deletions textStarSerialLCD.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
'''
Updated on 31st Aug 2012

@author: Jeremy Blythe

textStarSerialLCD - Manages the Textstar 16x2 4 button display

Read the blog entry at http://jeremyblythe.blogspot.com for more information
'''

import serial

class Display():
""" Manages the 16x2 4 button display:
on_tick called every 0.1 seconds as part of the main loop after the button read
on_poll called every 1.5 seconds
on_page called when a new page has been selected
on_refresh called every 30 seconds"""
def __init__(self,on_page=None,on_poll=None,on_tick=None,on_refresh=None,char_clear=chr(12),
char_esc=chr(254),char_block=chr(154),ticks_poll=15,ticks_refresh=300,baud_rate=9600,tty_path='/dev/ttyAMA0'):
# Start the serial port
self.ser = serial.Serial(tty_path,baud_rate,timeout=0.1)
# Callbacks
self.on_page = on_page
self.on_poll = on_poll
self.on_tick = on_tick
self.on_refresh = on_refresh

self.char_esc = char_esc
self.char_clear = char_clear
self.char_block = char_block

self.page = 'a'
self.poll = ticks_poll
self.poll_max = ticks_poll
self.refresh = ticks_refresh
self.refresh_max = ticks_refresh

def position_cursor(self,line,column):
self.ser.write(self.char_esc+'P'+chr(line)+chr(column))

def scroll_down(self):
self.ser.write(self.char_esc+'O'+chr(0))

def window_home(self):
self.ser.write(self.char_esc+'G'+chr(1))

def clear(self):
self.ser.write(self.char_clear)

def run(self):
#show initial page
self.ser.write(' Starting.... ')
if self.on_page != None:
self.on_page()
#main loop
while True:
key = str(self.ser.read(1))
if key != '' and key in 'abcd':
self.page = key
self.refresh = self.refresh_max
self.poll = self.poll_max
if self.on_page != None:
self.on_page()
else:
self.refresh-=1
if self.refresh == 0:
self.refresh = self.refresh_max
if self.on_refresh != None:
self.on_refresh()

self.poll-=1
if self.poll == 0:
self.poll = self.poll_max
if self.on_poll != None:
self.on_poll()

if self.on_tick != None:
self.on_tick()