Programmierung Alarmfunktion
This commit is contained in:
parent
d7136e38bf
commit
be20826ab5
43
nmea0183.py
43
nmea0183.py
|
@ -1,6 +1,9 @@
|
||||||
"""
|
"""
|
||||||
NMEA0183 verarbeiten
|
NMEA0183 verarbeiten
|
||||||
|
|
||||||
|
TODO Multi-Sentence verarbeiten
|
||||||
|
TXT
|
||||||
|
AIS-Sentences mit Binärdaten
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def DBS(boatdata, msg):
|
def DBS(boatdata, msg):
|
||||||
|
@ -202,6 +205,45 @@ def RTE(boatdata, msg):
|
||||||
print("-> RTE")
|
print("-> RTE")
|
||||||
print(msg.fields)
|
print(msg.fields)
|
||||||
|
|
||||||
|
txt_msg = ''
|
||||||
|
txt_type = None
|
||||||
|
txt_curr = 0
|
||||||
|
txt_max = 0
|
||||||
|
|
||||||
|
def TXT(boatdata, msg):
|
||||||
|
# Text Transmission (e.G. Alarms)
|
||||||
|
global txt_msg, txt_type, txt_curr, txt_max
|
||||||
|
#print("-> TXT")
|
||||||
|
nmax = int(msg.num_msg)
|
||||||
|
n = int(msg.msg_num)
|
||||||
|
if nmax > 1:
|
||||||
|
if txt_curr == 0 and n == 1:
|
||||||
|
# neue Nachricht
|
||||||
|
txt_msg = msg.text.rstrip('\r\n')
|
||||||
|
txt_type = msg.msg_type
|
||||||
|
txt_curr = 1
|
||||||
|
txt_max = nmax
|
||||||
|
else:
|
||||||
|
# Fortsetzung
|
||||||
|
if txt_curr == n - 1 and txt_type == msg.msg_type:
|
||||||
|
txt_msg += msg.text.rstrip('\r\n')
|
||||||
|
txt_curr = n
|
||||||
|
if n == nmax:
|
||||||
|
# Vollständig!
|
||||||
|
print(f"TXT: {msg.msg_type} - {txt_msg}")
|
||||||
|
if not boatdata.alarm:
|
||||||
|
# Momentan wird kein bereits anstehender Alarm überschrieben
|
||||||
|
boatdata.setValue("TXT", txt_msg)
|
||||||
|
boatdata.alarm = True
|
||||||
|
txt_curr = 0
|
||||||
|
txt_max = 0
|
||||||
|
else:
|
||||||
|
print(f"TXT: {msg.msg_type} - {msg.text}", end='')
|
||||||
|
if not boatdata.alarm:
|
||||||
|
# Momentan wird kein bereits anstehender Alarm überschrieben
|
||||||
|
boatdata.setValue("TXT", msg.text)
|
||||||
|
boatdata.alarm = True
|
||||||
|
|
||||||
def VBW(boatdata, msg):
|
def VBW(boatdata, msg):
|
||||||
print("-> VBW")
|
print("-> VBW")
|
||||||
|
|
||||||
|
@ -323,6 +365,7 @@ decoder = {
|
||||||
"RMC": RMC,
|
"RMC": RMC,
|
||||||
"RSA": RSA,
|
"RSA": RSA,
|
||||||
"RTE": RTE,
|
"RTE": RTE,
|
||||||
|
"TXT": TXT,
|
||||||
"VBW": VBW,
|
"VBW": VBW,
|
||||||
"VHW": VHW,
|
"VHW": VHW,
|
||||||
"VPW": VPW,
|
"VPW": VPW,
|
||||||
|
|
|
@ -312,3 +312,5 @@ class Anchor(Page):
|
||||||
self.draw_normal(ctx)
|
self.draw_normal(ctx)
|
||||||
else:
|
else:
|
||||||
self.draw_config(ctx)
|
self.draw_config(ctx)
|
||||||
|
if self._bd.alarm:
|
||||||
|
self.draw_alarm(ctx)
|
||||||
|
|
|
@ -208,6 +208,20 @@ class Page():
|
||||||
ctx.show_text(self.buttonlabel[i+1])
|
ctx.show_text(self.buttonlabel[i+1])
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
|
|
||||||
|
def draw_alarm(self, ctx):
|
||||||
|
x, y, w, h = (50, 100, 300, 150)
|
||||||
|
ctx.set_line_width(1)
|
||||||
|
ctx.set_source_rgb(*self.fgcolor)
|
||||||
|
ctx.rectangle(x + 0.5, y + 0.5, w, h)
|
||||||
|
ctx.stroke()
|
||||||
|
ctx.set_source_rgb(*self.bgcolor)
|
||||||
|
ctx.rectangle(x + 1, y + 1, w - 1, h - 1)
|
||||||
|
ctx.fill()
|
||||||
|
ctx.set_source_rgb(*self.fgcolor)
|
||||||
|
ctx.set_line_width(2)
|
||||||
|
ctx.rectangle(x + 3, y + 3, w - 5, h - 5)
|
||||||
|
ctx.stroke()
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
ctx.set_source_rgb(1, 1, 1)
|
ctx.set_source_rgb(1, 1, 1)
|
||||||
ctx.rectangle(0, 0, 399, 299)
|
ctx.rectangle(0, 0, 399, 299)
|
||||||
|
|
Loading…
Reference in New Issue