From 665ba7cc5eb6c0a7b59cfdc0ce2c38e1155236dd Mon Sep 17 00:00:00 2001 From: Florian Streibelt Date: Sat, 15 Oct 2011 03:49:13 +0200 Subject: [PATCH] Display now has scrolling text implemented in a python thread and error-screens, etc --- client-barcode/freitagskasse.py | 71 ++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/client-barcode/freitagskasse.py b/client-barcode/freitagskasse.py index bb38451..31089e3 100644 --- a/client-barcode/freitagskasse.py +++ b/client-barcode/freitagskasse.py @@ -18,6 +18,9 @@ import os import time import urllib2 +from thread import start_new_thread, allocate_lock +import time + COLOR_HINT = Fore.YELLOW + Style.BRIGHT COLOR_ERROR = Fore.RED @@ -32,8 +35,62 @@ COLOR_RESET = Style.RESET_ALL display_fifo = None +scroll_line1 = None +scroll_line2 = None -def print_display(s): + +lock = allocate_lock() + +def display_handle_scroll(line,text,offset): + if (text): + send_display("\x1f\x24\x01%c%s" % (chr(line),text[offset:(20+offset)])) + l = len(text) + missing_chars=20+offset-l + if (missing_chars>0): + send_display(text[:missing_chars]) + offset=((offset+1)%l) + else: + offset=0 #reset offset + return offset + +def display_scroll_text(line,text): + global scroll_line1,scroll_line2 + lock.acquire() + if (line==1): #clear the line on invocation: + send_display("\x1f\x24\x01%c\x18" % chr(line) ) + scroll_line1 = text + if (line==2): #clear the line on invocation: + send_display("\x1f\x24\x01%c\x18" % chr(line) ) + scroll_line2 = text + lock.release() + +def display_screen(title,message): + if (len(title)<21): + send_display("\x1f\x24\x01%c\x18%s" % (chr(1),'\xdb'*20) ) + if (len(title)<20): + pos=1+(20-len(title))/2 + else: + pos=1 + send_display("\x1f\x24%c%c%s" % (chr(pos),chr(1),title) ) + else: + display_scroll_text(1,title) + display_scroll_text(2,message) + + + +def display_thread(x): + global scroll_line1,scroll_line2 + offset_line1=0 + offset_line2=0 + while(True): + lock.acquire() + offset_line1 = display_handle_scroll(1,scroll_line1,offset_line1) + offset_line2 = display_handle_scroll(2,scroll_line2,offset_line2) + lock.release() + time.sleep(.5) + + +def send_display(s): global display_fifo if not display_fifo: try: @@ -55,6 +112,12 @@ def print_display(s): pass return +def print_display(s): + lock.acquire() +# scroll_line1=None +# scroll_line2=None +# send_display(s) + lock.release() def clear(): os.system('clear') @@ -399,9 +462,13 @@ def handle(line, status): def main(): colorama.init() status = Status() - + global scroll_line1,scroll_line2 print_display("\x1b\x40Kassensystem \n startet...") + start_new_thread(display_thread,(1,)) + #display_scroll_text(1,"Line1: Text, dumm scrollend!") + #display_scroll_text(4,"Line2: Und hier Text, auch dumm scrollend!") + display_screen("HINWEIS","Herzlich willkommen bei der Freitagsrunde! *** ") while True: clear() status.dump()