2 from serial import Serial
19 def __init__(self, config):
27 self.serial = Serial(self.port, \
28 baudrate = self.config.baudrate, \
29 parity = self.config.parity, \
30 bytesize = self.config.databits, \
31 stopbits = self.config.stopbits, \
33 except Exception as ex:
37 if self.serial and self.serial.isOpen():
41 if self.serial == None:
43 if self.serial.isOpen() == False:
49 while self.serial.readable():
51 char = self.serial.read()
52 except Exception as ex:
56 if char == '\r' or char == '\n':
57 if len(self.inbuf) == 0:
59 line = "".join(self.inbuf)
60 item = self._parse_ascii(line)
64 self.inbuf.append(char)
68 def _parse_ascii(self, line):
69 acc_re = compile("\[ACC\] accX=(.*) accY=(.*) accZ=(.*)")
70 mag_re = compile("\[MAG\] magX=(.*) magY=(.*) magZ=(.*)")
71 lgt_re = compile("\[LGT\] Light Intensity=(.*)")
72 tch_re = compile("\[TCH\] Force=(.*) Distance=(.*)")
73 a2d_re = compile("\[A2D\] ...")
75 acc_m = acc_re.match(line)
76 mag_m = mag_re.match(line)
77 lgt_m = lgt_re.match(line)
78 tch_m = tch_re.match(line)
79 a2d_m = a2d_re.match(line)
83 state.acc[0] = float(acc_m.group(1))
84 state.acc[1] = float(acc_m.group(2))
85 state.acc[2] = float(acc_m.group(3))
87 state.acc[0] = float(mag_m.group(1))
88 state.acc[1] = float(mag_m.group(2))
89 state.acc[2] = float(mag_m.group(3))
91 state.light[0] = float(lgt_m.group(1))
93 state.touch[0] = float(tch_m.group(1))
95 state.a2d[0] = float(tch_m.group(1))
96 state.a2d[1] = float(tch_m.group(2))
97 state.a2d[2] = float(tch_m.group(3))
98 state.a2d[3] = float(tch_m.group(4))
99 state.a2d[4] = float(tch_m.group(5))
100 state.a2d[5] = float(tch_m.group(6))