29 lines
747 B
Python
29 lines
747 B
Python
from msg_container import MsgContainer
|
|
from msg_listener import MsgListener
|
|
import re
|
|
|
|
class AsciiListener(MsgListener):
|
|
def __init__(self, name: str, filter: str):
|
|
super().__init__()
|
|
self.name = name
|
|
self.filter = filter
|
|
|
|
def is_msg(self, msg: MsgContainer):
|
|
res = False
|
|
try:
|
|
res = re.match(bytes(self.filter, encoding="utf-8"), msg.data) is not None
|
|
except UnicodeDecodeError:
|
|
pass
|
|
return res
|
|
|
|
def on_recv(self, msg: MsgContainer):
|
|
print(f"{self.name}: {msg}")
|
|
|
|
|
|
class NmeaListener(AsciiListener):
|
|
def __init__(self, name: str, tid: str, msg_type: str):
|
|
if tid == "--":
|
|
AsciiListener.__init__(self, name, filter=f"^\\$..{msg_type}.*")
|
|
else:
|
|
AsciiListener.__init__(self, name, filter=f"^\\${tid}{msg_type}.*")
|