Mercurial > code > home > repos > homeauto
view service/arduinoNode/loggingserial.py @ 1412:302063bfb8ff
reasoning web page uses rdf/browse/graphView for inputs and outputs now
Ignore-this: 64b7275ee149f631b606320444a3478b
darcs-hash:1ec4d67abed3d43997fae5f10d4bc23ee1a6b2d5
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 24 Jul 2019 00:36:16 -0700 |
parents | 70a5392b24d3 |
children |
line wrap: on
line source
# forked from /my/proj/house/frontdoor/loggingserial.py import serial, logging log = logging.getLogger('serial') class LoggingSerial(object): """like serial.Serial, but logs all data""" def __init__(self, port=None, ports=None, baudrate=9600, timeout=10): if ports is None: ports = [port] for port in ports: try: log.info("trying port: %s" % port) self.ser = serial.Serial(port=port, baudrate=baudrate, timeout=timeout, xonxoff=0, rtscts=0) except serial.SerialException: pass if not hasattr(self, 'ser'): raise IOError("no port found") def flush(self): self.ser.flush() def close(self): self.ser.close() def write(self, s): log.info("Serial write: %r" % s) self.ser.write(s) def read(self, n, errorOnTimeout=True): buf = self.ser.read(n) log.info("Serial read: %r" % buf) if errorOnTimeout and n > 0 and len(buf) == 0: raise ValueError("timed out") return buf