From dd42a97a498978be114ce165acf2f13428f20ae0 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 5 Jul 2013 01:39:58 +0000 Subject: switched to python-serial git-svn-id: https://svn.spreadspace.org/pic/trunk@41 a09c6847-51d9-44de-8ef2-e725cf50f3c7 --- downloader/downloader.py | 49 +++++++++++++++--------------------------------- 1 file changed, 15 insertions(+), 34 deletions(-) (limited to 'downloader') diff --git a/downloader/downloader.py b/downloader/downloader.py index b332271..8da13cf 100755 --- a/downloader/downloader.py +++ b/downloader/downloader.py @@ -80,42 +80,24 @@ def open_serial(device, baud): import os import tty import termios + import serial print "opening %s (%s Baud)" % (device, baud) - baudrates = { 50: termios.B50, 75: termios.B75, 110: termios.B110, 134: termios.B134, - 150: termios.B150, 200: termios.B200, 300: termios.B300, 600: termios.B600, - 1200: termios.B1200, 1800: termios.B1800, 2400: termios.B2400, 4800: termios.B4800, - 9600: termios.B9600, 19200: termios.B19200, 38400: termios.B38400, - 57600: termios.B57600, 115200: termios.B115200, 230400: termios.B230400 } - - baudreate = termios.B57600 try: - baudrate = baudrates[int(baud)] - except (KeyError, ValueError): - print "ERROR: invalid baudrate" - sys.exit(3) - - try: - dev = os.open(device, os.O_RDWR | os.O_NOCTTY) - tty.setraw(dev, termios.TCSAFLUSH) - tio = termios.tcgetattr(dev) - tio[4] = tio[5] = baudrate - termios.tcsetattr(dev, termios.TCSAFLUSH, tio) - termios.tcflush(dev, termios.TCIFLUSH) + dev = serial.Serial(port=device, baudrate=baud) + dev.flushInput() + dev.flushOutput() return dev - except OSError, msg: + except (ValueError, serial.SerialException), msg: print "ERROR: opening serial device: %s" % msg sys.exit(3) - except termios.error, msg: - print "ERROR: configuring serial device: %s" % msg - sys.exit(3) def calc_csum(str): cs = 0 for c in str: - cs ^= ord(c) + cs ^= c return cs def exec_command(dev, cmd, answer): @@ -126,18 +108,18 @@ def exec_command(dev, cmd, answer): 5: "address invalid", 6: "address prohibited", 7: "value out of bounds" } - cstr = cmd + chr(calc_csum(cmd)) - os.write(dev, cstr) + cstr = bytearray(cmd) + cstr.extend(struct.pack("