OLED屏幕luma.OLED系统信息

2024-09-28 22:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在SSD1306 OLED屏幕上使用luma.OLED(在raspberry pi 4上),我正在编写一些代码来显示系统信息,如cpu负载、cpu正常运行时间和内存使用率,但我想添加cpu热量,但我不知道如何添加,如果您也能提供帮助,那也会很好

当我运行它时,会出现以下错误:

       File "/home/pi/Desktop/test.py", line 61, in <module>
       stats(device)
       File "/home/pi/Desktop/test.py", line 50, in stats
       font2 = ImageFont.truetype(font_path, 12)
       File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 280, in truetype
       return FreeTypeFont(font, size, index, encoding, layout_engine)
       File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 145, in __init__
       layout_engine=layout_engine)
       OSError: cannot open resource```


With this code:

``` import os
    import sys
    import time
    from pathlib import Path
    from datetime import datetime
    from demo_opts import get_device
    from luma.core.render import canvas
    from PIL import ImageFont
    from PIL import Image
    from PIL import ImageDraw
    try:
    import psutil
    except ImportError:
       print("The psutil library was not found. Run 'sudo -H pip install psutil' to install it.")
       sys.exit()

    def bytes2human(n):
        """
        >>> bytes2human(10000)
        '9K'
        >>> bytes2human(100001221)
        '95M'
        """
        symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
        prefix = {}
        for i, s in enumerate(symbols):
        prefix[s] = 1 << (i + 1) * 10
        for s in reversed(symbols):
            if n >= prefix[s]:
                value = int(float(n) / prefix[s])
                return '%s%s' % (value, s)
        return "%sB" % n


    # load average, uptime
    uptime = datetime.now() - datetime.fromtimestamp(psutil.boot_time())
    avg = os.getloadavg()
    (avg, str(uptime).split('.')[0])


    usage = psutil.virtual_memory()
    (bytes2human(usage.used), 100 - usage.percent)




    def stats(device):
        # use custom font
        font_path = str(Path(__file__).resolve().parent.joinpath('fonts', 'C&C Red Alert 
    [INET].ttf'))
        font2 = ImageFont.truetype(font_path, 12)

        with canvas(device) as draw:
            draw.text((0, 0), (avg, str(uptime).split('.')[0]), font=font2, fill="white")
            if device.height >= 32:
                draw.text((0, 14), (bytes2human(usage.used), 100 - usage.percent), font=font2, 
    fill="white")
            
            if device.height >= 64:
                draw.text((0, 26), (bytes2human(usage.used), usage.percent), font=font2, 
    fill="white")

    device = get_device()
    stats(device)

谢谢


Tags: infrompyimportpildevicestatsline