summaryrefslogtreecommitdiff
path: root/usv_driver.py
diff options
context:
space:
mode:
Diffstat (limited to 'usv_driver.py')
-rwxr-xr-xusv_driver.py51
1 files changed, 31 insertions, 20 deletions
diff --git a/usv_driver.py b/usv_driver.py
index 5cb1167..4ff52ea 100755
--- a/usv_driver.py
+++ b/usv_driver.py
@@ -8,27 +8,44 @@ class Usv(object):
def __init__(self, device, baudrate, json_file):
self._serial_port = serial.Serial(device,
baudrate=baudrate,
+<<<<<<< HEAD
+ timeout=0.8)
+=======
timeout=10)
+>>>>>>> e3494d280fd6e2db591ea40c4365cdf18524fbdc
# force a clean prompt
- self._serial_port.write(b"\r")
- self._read_until_prompt()
+ #self._serial_port.write(b"\r")
+ self._read_until_prompt("\r")
#print("cleaned prompt")
with open(json_file) as fhandle:
self.json_params = json.load(fhandle)
- def _read_until_prompt(self):
+ def _read_until_prompt(self, outbuf):
# match on "\n=>"
- prompt = False
- inbuf = []
- while not prompt:
- inbuf.append(self._serial_port.read(1))
- if len(inbuf) > 2:
- if inbuf[-3] == b"\n" and \
- inbuf[-2] == b"=" and inbuf[-1] == b">":
- prompt = True
- return inbuf
+ self._serial_port.write(outbuf.encode())
+
+ inbuf = self._serial_port.read(100)
+ sbuf = inbuf.decode("utf-8")
+
+ #prompt = False
+ #inbuf = []
+ #while not prompt:
+ # pending = self._serial_port.read(1)
+ # if len(pending) == 0:
+ # self._serial_port.write(b"\r")
+ # else:
+ # inbuf.append(pending)
+ # print(pending)
+ #if len(sbuf) > 2:
+ # if sbuf[-3] == "\n" and \
+ # sbuf[-2] == "=" and sbuf[-1] == ">":
+ # return sbuf
+ # else:
+ # sbuf = self._read_until_prompt(outbuf)
+
+ return sbuf
def get_parameters(self):
# [{'name': 'acvoltsin', 'index': 1},
@@ -36,16 +53,10 @@ class Usv(object):
for parameter in self.json_params:
outbuf = "d %s\r" % parameter['num']
- self._serial_port.write(outbuf.encode())
- inbuf = self._read_until_prompt()
+ inbuf = self._read_until_prompt(outbuf)
- sbuf = ""
- for char in inbuf:
- sbuf += char.decode("utf-8")
- #print("-->%s<--" % sbuf)
-
regex = parameter['regex']
- match = re.search(regex, sbuf, re.MULTILINE)
+ match = re.search(regex, inbuf, re.MULTILINE)
if match:
name = parameter['name']