因为散热不够,所以Quark N的系统总是不稳定,所以迫切需要监控一下温度。最终基于稚晖君的LCD时钟脚本,折腾了如下python脚本,同时修正了原本脚本占用CPU过高的问题(其实就是加了一个一秒的Sleep),不然CPU占用在20%左右,有点恐怖。

import threading
import time
import cv2 as cv
import os
import pygame
import sys
import psutil
from pygame.locals import *

start_play = False
playing = False
drivers = ['/dev/fb1']
index = 0

class pyscope:
    screen = None;

    def __init__(self):
        disp_no = os.getenv("DISPLAY")
        if disp_no:
            print("I'm running under X display = " + str(disp_no))

        found = False
        for driver in drivers:
            # Make sure that SDL_VIDEODRIVER is set
            if not os.getenv('SDL_FBDEV'):
                os.putenv('SDL_FBDEV', driver)
            try:
                pygame.display.init()
            except pygame.error:
                print("Driver: " + str(driver) + "failed.")
                continue
            found = True
            break

        if not found:
            raise Exception('No suitable video driver found!')

        size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
        print("Framebuffer size: %d x %d" % (size[0], size[1]))
        self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
        # Clear the screen to start
        self.screen.fill((0, 0, 0))
        # Initialise font support
        pygame.font.init()
        self.font = pygame.font.Font("/home/pi/WorkSpace/LCD/data/DIGITAL.ttf", 80)
        #self.font_chinese1 = pygame.font.Font("/home/pi/WorkSpace/LCD/data/SIMYOU.TTF", 30)
        #self.font_chinese2 = pygame.font.Font("/home/pi/WorkSpace/LCD/data/SIMYOU.TTF", 23)
        #self.font_chinese3 = pygame.font.Font("/home/pi/WorkSpace/LCD/data/msyhbd.ttc", 30)
        self.font_chinese = pygame.font.Font("/home/pi/WorkSpace/LCD/data/msyhbd.ttc", 14)



        pygame.mouse.set_visible(False)
        # Render the screen
        pygame.display.update()

    def __del__(self):
        "Destructor to make sure pygame shuts down, etc."

    def test(self):
        # Fill the screen with red (255, 0, 0)
        self.screen.fill((0, 0, 0))

        global start_play
        global playing
        global index

        t = None
        while True:
            if (t != time.strftime('%H:%M:%S', time.localtime(time.time()))):
                t = time.strftime('%H:%M:%S', time.localtime(time.time()))
                # CPU占用率
                cpu_perc = str(psutil.cpu_percent())+"%"
                # CPU温度
                cpu_temp = str(int(psutil.sensors_temperatures()['cpu_thermal'][0].current))+"℃"
                # 内存总数
                mem_total = str(int((psutil.virtual_memory().total)/1024/1024))+"M"
                # 已使用内存
                mem_use = str(int((psutil.virtual_memory().used)/1024/1024))+"M"
                # 内存占用率
                mem_perc = str(int((psutil.virtual_memory().percent)))+"%"
                # 网络Wlan0发送
                wlan_sent = str(int( psutil.net_io_counters(pernic=True)['wlan0'].bytes_sent/1024/1024))+"M"
                # 网络Wlan0接收
                wlan_recv = str(int( psutil.net_io_counters(pernic=True)['wlan0'].bytes_recv/1024/1024))+"M"
                # 网络Wlan0 IP
                wlan_ip = str(psutil.net_if_addrs()['wlan0'][0].address)
                # 启动时间
                # boot_time = str(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M"))
                # 运行时间
                uptime = str(os.popen("uptime -p").readline().strip())
                self.screen.fill((0, 0, 0))
                ts = t.split(":")
                if (int(ts[0]) >= 20 or int(ts[0]) <= 7):
                  text_sys_1 = self.font_chinese.render("CPU:" + cpu_perc  + "/" +cpu_temp + " "+ "MEM:" + mem_use + "/" + mem_perc, True, (206, 0, 0))
                  text_sys_2 = self.font_chinese.render("NET:" + wlan_sent + "/" + wlan_recv + " : " + wlan_ip, True, (206, 0, 0))
                  text_sys_3 = self.font_chinese.render("RUN:" + uptime, True, (206, 0, 0))
                  text_time = self.font.render(ts[0] + " : " + ts[1], True, (255, 0, 0))
                else:
                  text_sys_1 = self.font_chinese.render("CPU:" + cpu_perc  + "/" +cpu_temp + " "+ "MEM:" + mem_use + "/" + mem_perc, True, (222, 222, 222))
                  text_sys_2 = self.font_chinese.render("NET:" + wlan_sent + "/" + wlan_recv + " : " + wlan_ip, True, (222, 222, 222))
                  text_sys_3 = self.font_chinese.render("RUN:" + uptime, True, (222, 222, 222))
                  text_time = self.font.render(ts[0] + " : " + ts[1], True, (00, 255, 184))
                self.screen.blit(text_time, (11, -15))
                self.screen.blit(text_sys_1, (10, 85))
                self.screen.blit(text_sys_2, (10, 100))
                self.screen.blit(text_sys_3, (10, 115))
                pygame.display.update()
                #每秒执行一次,减少CPU占用
                time.sleep(1)



# Create an instance of the PyScope class
scope = pyscope()
scope.test()