From 1af1b8093ac4776ebd789661cb75eefcb15abf42 Mon Sep 17 00:00:00 2001 From: Jakub Zika Date: Wed, 21 Sep 2011 19:51:15 +0200 Subject: [PATCH] Added script which shows simulation of ledbar * depends on pygame, which is something like wrapper around SDL * it gets its input from stdin, displays it and sends it to stdout, so some other script can work with it further --- host_python/demo.py | 75 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 host_python/demo.py diff --git a/host_python/demo.py b/host_python/demo.py new file mode 100755 index 0000000..929b445 --- /dev/null +++ b/host_python/demo.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +# vim:et:sw=4:ts=4:sts=4 + +import sys +import getopt +import pygame + +def print_usage(): + print '''\ +USAGE: + %s [-n number] [-h] +OPTIONS: + -n number number of controlled boxes + -h --help show this help +''' % sys.argv[0] + +def read_byte(): + r = sys.stdin.read(1) + if len(r) == 0: raise EOFError + return ord(r) + +def write_byte(b): + sys.stdout.write(chr(b)) + +def main(): + try: + opts, args = getopt.getopt(sys.argv[1:], 'n:h', ['help']) + except getopt.GetOptError: + print_usage() + return 1 + if len(args): + print_usage() + return 1 + number = 10 + show_help = False + for k, v in opts: + if k == '-n': + if not v.isdigit(): + print_usage() + return 1 + number = int(v) + elif k == '-h' or k == '--help': show_help = True + if show_help: + print_usage() + return 0 + + pygame.init() + screen_size = [800, 600] + screen = pygame.display.set_mode(screen_size) + pygame.display.set_caption("ledbar demo viewer") + offset = 5 + pixel_width = (screen_size[0]-offset) / number + try: + exit = False + while not exit: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + exit = True + continue + screen.fill([0, 0, 0]) + for i in xrange(number): + r = read_byte() + g = read_byte() + b = read_byte() + pygame.draw.rect(screen, [r, g, b], [pixel_width*i, 0, pixel_width-offset, pixel_width-offset]) + write_byte(r); write_byte(g); write_byte(b) + pygame.display.flip() + except EOFError: + pass + finally: + pygame.quit() + + return 0 + +sys.exit(main())