v0.7, undrunk the codeand make it more readable
This commit is contained in:
@@ -76,18 +76,18 @@ def scalepoints(points):
|
||||
h = 31
|
||||
else:
|
||||
h = 46
|
||||
sclpoint = [0] * 15
|
||||
sclpoint = [0] * len(points)
|
||||
scl = 1
|
||||
maxpnt = 0
|
||||
i = 0
|
||||
while i <= 14:
|
||||
while i <= len(points) -1:
|
||||
if points[i] > maxpnt:
|
||||
maxpnt = points[i]
|
||||
i += 1
|
||||
while h * scl < maxpnt:
|
||||
scl += 1
|
||||
i = 0
|
||||
while i <= 14:
|
||||
while i <= len(points) -1:
|
||||
sclpoint[i] = int(points[i] / scl)
|
||||
i += 1
|
||||
maxcanv = h * scl
|
||||
@@ -147,6 +147,7 @@ def parsedata(prev, flaunch):
|
||||
def drawout(sclpo, maxcanv, failture, restart):
|
||||
match device.height:
|
||||
case 32:
|
||||
# todo: backport
|
||||
with canvas(device) as draw:
|
||||
d1 = 1
|
||||
d2 = device.width - 66
|
||||
@@ -165,21 +166,29 @@ def drawout(sclpo, maxcanv, failture, restart):
|
||||
draw.text((device.width - 30, 0), "\uf021", font=icons, fill="white")
|
||||
case 64:
|
||||
with canvas(device) as draw:
|
||||
d1 = 1
|
||||
d2 = device.width - 10
|
||||
now = datetime.datetime.now()
|
||||
while d1 < len(sclpo):
|
||||
draw.line((d2 + 10, 47 - sclpo[d1 - 1], d2, 47 - sclpo[d1]), fill="white")
|
||||
d1 += 1
|
||||
d2 -= 10
|
||||
draw.text((device.width - 53, device.height - 19), now.strftime("%H:%M"), font=regfont, fill="white")
|
||||
# Graph
|
||||
currpoint = 1
|
||||
targetpx = 118
|
||||
while currpoint < len(sclpo):
|
||||
draw.line((targetpx + 10, 47 - sclpo[currpoint - 1], targetpx, 47 - sclpo[currpoint]), fill="white")
|
||||
draw.rectangle((targetpx - 1, 47 - sclpo[currpoint] - 1, targetpx + 1, 47 - sclpo[currpoint] + 1), fill="white")
|
||||
currpoint += 1
|
||||
targetpx -= 10
|
||||
# Draw black boxes to make sure that graph will not interfere
|
||||
draw.rectangle((0, 48, 128, 64), fill="black")
|
||||
draw.rectangle((0, 0, 6 * len(str(maxcanv)), 9), fill="black")
|
||||
draw.rectangle((0, 19, 6 * len(str(maxcanv // 2)), 28), fill="black")
|
||||
draw.rectangle((0, 37, 6, 47), fill="black")
|
||||
# Numbers on the left
|
||||
draw.text((0, 0), str(maxcanv), font=smafont, fill="white")
|
||||
draw.text((0, (device.height - 19) / 2 - 2), str(int(maxcanv / 2)), font=smafont, fill="white")
|
||||
draw.text((0, device.height - 26), "0", font=smafont, fill="white")
|
||||
draw.text((0, 19), str(maxcanv // 2), font=smafont, fill="white")
|
||||
draw.text((0, 37), "0", font=smafont, fill="white")
|
||||
# Statusbar, non-constant height values are due how fonts render here.
|
||||
draw.text((75, 45), datetime.datetime.now().strftime("%H:%M"), font=regfont, fill="white")
|
||||
if failture:
|
||||
draw.text((2, device.height - 14), "\uf071", font=icons, fill="white")
|
||||
draw.text((2, 50), "\uf071", font=icons, fill="white")
|
||||
if restart:
|
||||
draw.text((22, device.height - 14), "\uf021", font=icons, fill="white")
|
||||
draw.text((22, 50), "\uf021", font=icons, fill="white")
|
||||
case _:
|
||||
with canvas(device) as draw:
|
||||
draw.text((0,0), "Display not supported", font=smafont, fill="white")
|
||||
@@ -193,8 +202,9 @@ def getdata(oldtotal):
|
||||
return total, query, False, False
|
||||
|
||||
def main():
|
||||
print("Blocky Graph Monitor for OLED v0.5 B")
|
||||
print("Blocky Graph Monitor for OLED v0.7")
|
||||
print("(C) Nikopol 2024")
|
||||
|
||||
today_last_time = "NaN"
|
||||
last_hrs = "NaN"
|
||||
i = 0
|
||||
@@ -202,8 +212,8 @@ def main():
|
||||
restart = False
|
||||
rstate = False
|
||||
device.contrast(0)
|
||||
pointsmap = [0] * 15
|
||||
restartmap = [False] * len(pointsmap)
|
||||
pointsmap = [0] * 14
|
||||
restartmap = [True] * len(pointsmap)
|
||||
total = parsedata(0, True)
|
||||
if total == -1:
|
||||
failture = True
|
||||
@@ -211,18 +221,21 @@ def main():
|
||||
now = datetime.datetime.now()
|
||||
today_time = now.strftime("%H:%M")
|
||||
hrs = now.strftime("%H")
|
||||
#if today_time != today_last_time:
|
||||
if 1:
|
||||
if today_time != today_last_time:
|
||||
#if 1:
|
||||
today_last_time = today_time
|
||||
#if hrs != last_hrs:
|
||||
if 1:
|
||||
if hrs != last_hrs:
|
||||
#if 1:
|
||||
last_hrs = hrs
|
||||
# Grab fresh data
|
||||
total, query, failture, rstate = getdata(total)
|
||||
#rstate = True
|
||||
print(total)
|
||||
print(query)
|
||||
#print(total)
|
||||
#print(query)
|
||||
# Now write it to (raw) array and move older data
|
||||
pointsmap, restartmap = movepoints(pointsmap, query, restartmap, rstate)
|
||||
# ...and scale it to screen size
|
||||
sclpo, maxcanv = scalepoints(pointsmap)
|
||||
# also write restart map
|
||||
restart = False
|
||||
while i < len(restartmap):
|
||||
print(restartmap[i])
|
||||
@@ -236,7 +249,7 @@ def main():
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
print("\n".join(sys.argv))
|
||||
#print("\n".join(sys.argv))
|
||||
device = get_device()
|
||||
regfont = make_font("TerminusTTF-4.49.3.ttf", 22)
|
||||
smafont = make_font("TerminusTTF-4.49.3.ttf", 12)
|
||||
|
Reference in New Issue
Block a user