annotate service/arduinoNode/loggingserial.py @ 1714:4cbe3df8f48f

rewrite to use starlette/etc
author drewp@bigasterisk.com
date Sun, 24 Apr 2022 02:15:30 -0700
parents 49c1756b2edb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
164
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
1 # forked from /my/proj/house/frontdoor/loggingserial.py
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
2
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
3 import serial, logging
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
4
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
5 log = logging.getLogger('serial')
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
6
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
7 class LoggingSerial(object):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
8 """like serial.Serial, but logs all data"""
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
9
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
10 def __init__(self, port=None, ports=None, baudrate=9600, timeout=10):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
11 if ports is None:
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
12 ports = [port]
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
13
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
14 for port in ports:
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
15 try:
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
16 log.info("trying port: %s" % port)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
17 self.ser = serial.Serial(port=port, baudrate=baudrate,
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
18 timeout=timeout,
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
19 xonxoff=0, rtscts=0)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
20 except serial.SerialException:
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
21 pass
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
22 if not hasattr(self, 'ser'):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
23 raise IOError("no port found")
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
24
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
25 def flush(self):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
26 self.ser.flush()
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
27
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
28 def close(self):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
29 self.ser.close()
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
30
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
31 def write(self, s):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
32 log.info("Serial write: %r" % s)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
33 self.ser.write(s)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
34
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
35 def read(self, n, errorOnTimeout=True):
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
36 buf = self.ser.read(n)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
37 log.info("Serial read: %r" % buf)
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
38 if errorOnTimeout and n > 0 and len(buf) == 0:
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
39 raise ValueError("timed out")
49c1756b2edb start arduinonode
drewp@bigasterisk.com
parents:
diff changeset
40 return buf