{"id":160,"date":"2021-01-30T00:07:03","date_gmt":"2021-01-29T16:07:03","guid":{"rendered":"http:\/\/geno.picp.net:9090\/?p=160"},"modified":"2022-06-14T14:37:03","modified_gmt":"2022-06-14T06:37:03","slug":"lcdclock","status":"publish","type":"post","link":"https:\/\/blog.glab.online\/?p=160","title":{"rendered":"Quark N\u5c4f\u5e55\u76d1\u63a7\u663e\u793a"},"content":{"rendered":"\n<p>\u56e0\u4e3a\u6563\u70ed\u4e0d\u591f\uff0c\u6240\u4ee5Quark N\u7684\u7cfb\u7edf\u603b\u662f\u4e0d\u7a33\u5b9a\uff0c\u6240\u4ee5\u8feb\u5207\u9700\u8981\u76d1\u63a7\u4e00\u4e0b\u6e29\u5ea6\u3002\u6700\u7ec8\u57fa\u4e8e\u7a1a\u6656\u541b\u7684LCD\u65f6\u949f\u811a\u672c\uff0c\u6298\u817e\u4e86\u5982\u4e0bpython\u811a\u672c\uff0c\u540c\u65f6\u4fee\u6b63\u4e86\u539f\u672c\u811a\u672c\u5360\u7528CPU\u8fc7\u9ad8\u7684\u95ee\u9898\uff08\u5176\u5b9e\u5c31\u662f\u52a0\u4e86\u4e00\u4e2a\u4e00\u79d2\u7684Sleep\uff09\uff0c\u4e0d\u7136CPU\u5360\u7528\u572820%\u5de6\u53f3\uff0c\u6709\u70b9\u6050\u6016\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/geno.picp.net:9090\/wp-content\/uploads\/2021\/01\/IMG_20210130_201229-1024x1024.jpg\" alt=\"\" class=\"wp-image-171\" width=\"588\" height=\"588\"\/><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import threading\nimport time\nimport cv2 as cv\nimport os\nimport pygame\nimport sys\nimport psutil\nfrom pygame.locals import *\n\nstart_play = False\nplaying = False\ndrivers = ['\/dev\/fb1']\nindex = 0\n\nclass pyscope:\n    screen = None;\n\n    def __init__(self):\n        disp_no = os.getenv(\"DISPLAY\")\n        if disp_no:\n            print(\"I'm running under X display = \" + str(disp_no))\n\n        found = False\n        for driver in drivers:\n            # Make sure that SDL_VIDEODRIVER is set\n            if not os.getenv('SDL_FBDEV'):\n                os.putenv('SDL_FBDEV', driver)\n            try:\n                pygame.display.init()\n            except pygame.error:\n                print(\"Driver: \" + str(driver) + \"failed.\")\n                continue\n            found = True\n            break\n\n        if not found:\n            raise Exception('No suitable video driver found!')\n\n        size = (pygame.display.Info().current_w, pygame.display.Info().current_h)\n        print(\"Framebuffer size: %d x %d\" % (size[0], size[1]))\n        self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)\n        # Clear the screen to start\n        self.screen.fill((0, 0, 0))\n        # Initialise font support\n        pygame.font.init()\n        self.font = pygame.font.Font(\"\/home\/pi\/WorkSpace\/LCD\/data\/DIGITAL.ttf\", 80)\n        #self.font_chinese1 = pygame.font.Font(\"\/home\/pi\/WorkSpace\/LCD\/data\/SIMYOU.TTF\", 30)\n        #self.font_chinese2 = pygame.font.Font(\"\/home\/pi\/WorkSpace\/LCD\/data\/SIMYOU.TTF\", 23)\n        #self.font_chinese3 = pygame.font.Font(\"\/home\/pi\/WorkSpace\/LCD\/data\/msyhbd.ttc\", 30)\n        self.font_chinese = pygame.font.Font(\"\/home\/pi\/WorkSpace\/LCD\/data\/msyhbd.ttc\", 14)\n\n\n\n        pygame.mouse.set_visible(False)\n        # Render the screen\n        pygame.display.update()\n\n    def __del__(self):\n        \"Destructor to make sure pygame shuts down, etc.\"\n\n    def test(self):\n        # Fill the screen with red (255, 0, 0)\n        self.screen.fill((0, 0, 0))\n\n        global start_play\n        global playing\n        global index\n\n        t = None\n        while True:\n            if (t != time.strftime('%H:%M:%S', time.localtime(time.time()))):\n                t = time.strftime('%H:%M:%S', time.localtime(time.time()))\n                # CPU\u5360\u7528\u7387\n                cpu_perc = str(psutil.cpu_percent())+\"%\"\n                # CPU\u6e29\u5ea6\n                cpu_temp = str(int(psutil.sensors_temperatures()['cpu_thermal'][0].current))+\"\u2103\"\n                # \u5185\u5b58\u603b\u6570\n                mem_total = str(int((psutil.virtual_memory().total)\/1024\/1024))+\"M\"\n                # \u5df2\u4f7f\u7528\u5185\u5b58\n                mem_use = str(int((psutil.virtual_memory().used)\/1024\/1024))+\"M\"\n                # \u5185\u5b58\u5360\u7528\u7387\n                mem_perc = str(int((psutil.virtual_memory().percent)))+\"%\"\n                # \u7f51\u7edcWlan0\u53d1\u9001\n                wlan_sent = str(int( psutil.net_io_counters(pernic=True)['wlan0'].bytes_sent\/1024\/1024))+\"M\"\n                # \u7f51\u7edcWlan0\u63a5\u6536\n                wlan_recv = str(int( psutil.net_io_counters(pernic=True)['wlan0'].bytes_recv\/1024\/1024))+\"M\"\n                # \u7f51\u7edcWlan0 IP\n                wlan_ip = str(psutil.net_if_addrs()['wlan0'][0].address)\n                # \u542f\u52a8\u65f6\u95f4\n                # boot_time = str(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime(\"%Y-%m-%d %H: %M\"))\n                # \u8fd0\u884c\u65f6\u95f4\n                uptime = str(os.popen(\"uptime -p\").readline().strip())\n                self.screen.fill((0, 0, 0))\n                ts = t.split(\":\")\n                if (int(ts[0]) &amp;gt;= 20 or int(ts[0]) &amp;lt;= 7):\n                  text_sys_1 = self.font_chinese.render(\"CPU:\" + cpu_perc  + \"\/\" +cpu_temp + \" \"+ \"MEM:\" + mem_use + \"\/\" + mem_perc, True, (206, 0, 0))\n                  text_sys_2 = self.font_chinese.render(\"NET:\" + wlan_sent + \"\/\" + wlan_recv + \" : \" + wlan_ip, True, (206, 0, 0))\n                  text_sys_3 = self.font_chinese.render(\"RUN:\" + uptime, True, (206, 0, 0))\n                  text_time = self.font.render(ts[0] + \" : \" + ts[1], True, (255, 0, 0))\n                else:\n                  text_sys_1 = self.font_chinese.render(\"CPU:\" + cpu_perc  + \"\/\" +cpu_temp + \" \"+ \"MEM:\" + mem_use + \"\/\" + mem_perc, True, (222, 222, 222))\n                  text_sys_2 = self.font_chinese.render(\"NET:\" + wlan_sent + \"\/\" + wlan_recv + \" : \" + wlan_ip, True, (222, 222, 222))\n                  text_sys_3 = self.font_chinese.render(\"RUN:\" + uptime, True, (222, 222, 222))\n                  text_time = self.font.render(ts[0] + \" : \" + ts[1], True, (00, 255, 184))\n                self.screen.blit(text_time, (11, -15))\n                self.screen.blit(text_sys_1, (10, 85))\n                self.screen.blit(text_sys_2, (10, 100))\n                self.screen.blit(text_sys_3, (10, 115))\n                pygame.display.update()\n                #\u6bcf\u79d2\u6267\u884c\u4e00\u6b21\uff0c\u51cf\u5c11CPU\u5360\u7528\n                time.sleep(1)\n\n\n\n# Create an instance of the PyScope class\nscope = pyscope()\nscope.test()\n\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u56e0\u4e3a\u6563\u70ed\u4e0d\u591f\uff0c\u6240\u4ee5Quark N\u7684\u7cfb\u7edf\u603b\u662f\u4e0d\u7a33\u5b9a\uff0c\u6240\u4ee5\u8feb\u5207\u9700\u8981\u76d1\u63a7\u4e00\u4e0b &hellip;<\/p>\n","protected":false},"author":1,"featured_media":245,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-4"],"_links":{"self":[{"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.glab.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=160"}],"version-history":[{"count":0,"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.glab.online\/index.php?rest_route=\/wp\/v2\/media\/245"}],"wp:attachment":[{"href":"https:\/\/blog.glab.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.glab.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.glab.online\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}