From 9b0939f511badcf271c3ac5f2d5a4b3ef0e50b70 Mon Sep 17 00:00:00 2001 From: gsd Date: Sun, 23 Nov 2025 14:57:11 +0300 Subject: [PATCH] display use --- pipboyIO/next/serialAX.py | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pipboyIO/next/serialAX.py b/pipboyIO/next/serialAX.py index ef7e14a..27cde4c 100644 --- a/pipboyIO/next/serialAX.py +++ b/pipboyIO/next/serialAX.py @@ -3,6 +3,7 @@ import serial_asyncio import os, subprocess import argparse import traceback +import psutil #5 - 101 - a d #4 - xxx @@ -113,13 +114,54 @@ class Listener(asyncio.Protocol): def __init__(self): super().__init__() + self.is_connected = False self.buffer = b"" self.store = {} + self.tasks = [] def connection_made(self, transport): self.transport = transport + self.is_connected = True + self.tasks.append(asyncio.create_task(self.cpuCheck())) + self.tasks.append(asyncio.create_task(self.memCheck())) print("Connected") + + def connection_lost(self, exc): + self.is_connected = False + while self.tasks.__len__() != 0: + print("Try kill tasks") + self.tasks.pop().cancel() + async def cpuCheck(self): + DISPLAY_ID = 10001 + try: + while self.is_connected: + cpu_percent = psutil.cpu_percent(interval=None) + + if self.transport and not self.transport.is_closing(): + msg = f"{DISPLAY_ID} {cpu_percent:5.1f} 0\n" + self.transport.write(msg.encode()) + + await asyncio.sleep(1) + except: + traceback.print_exc() + + async def memCheck(self): + DISPLAY_ID = 10002 + try: + while self.is_connected: + mem = psutil.virtual_memory() + mem_percent = mem.percent / 10 + + if self.transport and not self.transport.is_closing(): + msg = f"{DISPLAY_ID} {mem_percent:5.1f} 0\n" + self.transport.write(msg.encode()) + + await asyncio.sleep(1) + except: + traceback.print_exc() + + def data_received(self, data): self.buffer += data lines = self.buffer.split(b'\n')