Skip to content

Commit

Permalink
Adds serial stream read delimiter flush option
Browse files Browse the repository at this point in the history
  • Loading branch information
jtkDvlp authored Jul 27, 2023
1 parent d7e07f5 commit b31bd51
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion mqtt_io/modules/stream/serial.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,17 @@
"empty": False,
"allowed": STOPBITS_CHOICES,
},
"delimiter": {
"type": "string",
"required": False,
"empty": True
},
"reset_before_read": {
"type": "boolean",
"required": False,
"empty": False,
"default": False
}
}

# pylint: disable=no-member
Expand Down Expand Up @@ -80,7 +91,16 @@ def setup_module(self) -> None:
self.ser.flushInput()

def read(self) -> Optional[bytes]:
return self.ser.read(self.ser.in_waiting) or None
if("delimiter" in self.config):
if("reset_before_read" in self.config):
if(self.config["reset_before_read"]):
self.ser.reset_input_buffer()
data = self.ser.read_until(self.config["delimiter"].encode("utf-8"))
if data:
data = data[:-len(self.config["delimiter"])]
return data or None
else:
return self.ser.read(self.ser.in_waiting) or None

def write(self, data: bytes) -> None:
self.ser.write(data)
Expand Down

0 comments on commit b31bd51

Please sign in to comment.