{"id":406533,"date":"2024-06-29T19:00:15","date_gmt":"2024-06-29T19:00:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=406533"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-06-29T19:00:15","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=406533","title":{"rendered":"<span>EspMon: \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 CPU \u0438 GPU \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e T-Display S3<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/691474\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/49\/v8\/3p\/49v83p4uusttieynlw3hizmeblu.png\" data-src=\"https:\/\/habrastorage.org\/webt\/49\/v8\/3p\/49v83p4uusttieynlw3hizmeblu.png\"\/><\/div>\n<p><\/a><br \/>  \u042f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u0438\u0446\u0430 Fallout 4. \u042d\u0442\u0443 \u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440, \u0434\u0430\u0436\u0435 \u0441\u043f\u0443\u0441\u0442\u044f \u0441\u0435\u043c\u044c \u043b\u0435\u0442, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a \u043d\u0435\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f. \u042f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0438\u043b\u0438 \u0432 \u043d\u0435\u0451 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e, \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c 2080ti, \u044f \u0441\u043c\u043e\u0433\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0451 \u0432 4\u041a. \u0418\u0433\u0440\u0430 \u043f\u043e\u0448\u043b\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0433\u043a\u043e, \u0447\u0442\u043e \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0451 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0443 \u0433\u0443\u0441\u0442\u043e\u0439 \u043b\u0435\u0441. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0430, \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u0448\u0443\u043c\u0435\u043b\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0442\u0435\u0442\u044c.<\/p>\n<p>  \u041d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0448\u0443\u043c\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u044f, \u0430 \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0432\u0441\u044f\u043a\u0438\u043c\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u044f \u043d\u0435 \u043b\u044e\u0431\u043b\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0434\u043e\u0441\u0442\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u043d\u044b\u0439 T-Display S3 \u0438 \u0440\u0435\u0448\u0438\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430 \u043d\u0435\u043c.<a name=\"habracut\"><\/a><\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/633c21140c924e8d415d18db\" data-style=\"\" id=\"633c21140c924e8d415d18db\" width=\"\"><\/div>\n<\/div>\n<p>\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u041f\u041a \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438\/\u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.<\/p>\n<h2><font color=\"#3AC1EF\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c<\/font><\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.codeproject.com\/KB\/Articles\/5343526\/EspMon.zip\">\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a> \u2014 137.1 \u041a\u0411 (<a href=\"https:\/\/github.com\/codewitch-honey-crisis\/EspMon\">GitHub<\/a>);<\/li>\n<li><a href=\"https:\/\/www.codeproject.com\/KB\/Articles\/5343526\/EspMon_TDisplayS3.zip\">\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/a> \u2014 20.6 \u041a\u0411 (<a href=\"https:\/\/github.com\/codewitch-honey-crisis\/EspMon_TDisplayS3\">GitHub<\/a>).<\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/font><\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.lilygo.cc\/products\/t-display-s3\">T-Display S3<\/a>, \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e\u0434 \u0438\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/li>\n<li>PlatformIO. \u0425\u043e\u0442\u044f \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 Arduino IDE, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u043a\u043e\u0435-\u043a\u0430\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/li>\n<li>Windows 10\/11 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/li>\n<li>Visual Studio 2019 \u0438\u043b\u0438 \u043d\u043e\u0432\u0435\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 .NET Framework.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f<\/font><\/h2>\n<p>  \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439: \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f T-Display \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u041f\u041a.<\/p>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u041f\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"https:\/\/openhardwaremonitor.org\/\">Open Hardware Monitor<\/a> \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e CPU \u0438 GPU \u043a\u0430\u0436\u0434\u0443\u044e \u0434\u0435\u0441\u044f\u0442\u0443\u044e \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 T-Display.<\/p>\n<p>  \u0417\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <a href=\"https:\/\/lvgl.io\/\">LVGL<\/a>. \u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0439, \u043d\u043e \u043d\u0435 \u0447\u0430\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0432 0.1 \u0441\u0435\u043a.<\/p>\n<h2><font color=\"#3AC1EF\">\u041a\u043e\u0434<\/font><\/h2>\n<p>  <\/p>\n<h3><font color=\"#3AC1EF\">\u258d \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u041f\u041a<\/font><\/h3>\n<p>  \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0432 \u0432\u0438\u0434\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0431\u043e\u0440\u0430 COM-\u043f\u043e\u0440\u0442\u0430. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043e\u0439\u0434\u0451\u0442. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 COM-\u043f\u043e\u0440\u0442\u0430 \u043a\u043e\u0434 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0434\u0435\u0441\u044f\u0442\u0443\u044e \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0447\u043b\u0435\u043d\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 <code>\u2018#\u2019<\/code> \u0438\u043b\u0438 <code>\u2018@\u2019<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0437 <code>SerialPort.DataReceived<\/code>. \u041f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 <code>\u2018#\u2019<\/code> \u043e\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU \u0438 GPU. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0430 \u043f\u043e\u0440\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 <code>\u2018@\u2019<\/code>, \u043a\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u044b CPU \u0438 GPU. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 T-Display \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u043f\u043e\u0440\u0442 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0443\u044e\u0441\u044f \u043a \u0434\u0435\u043b\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2013 \u043f\u043e \u0441\u0443\u0442\u0438, <code>post message<\/code>.<\/p>\n<p>  \u0412\u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u041f\u041a:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">private void _port_DataReceived(object sender, SerialDataReceivedEventArgs e) {     if (_port!=null &amp;&amp; _port.IsOpen)     {         var cha = new byte[1];         if (_port.BytesToRead != 1)         {             var ba = new byte[_port.BytesToRead];             _port.Read(ba, 0, ba.Length);             if (Created &amp;&amp; !Disposing)             {                 Invoke(new Action(() =>                 {                     Log.AppendText(Encoding.ASCII.GetString(ba));                 }));             }         }         else         {             _port.Read(cha, 0, cha.Length);             if ((char)cha[0] == '#')             {                 var ba = BitConverter.GetBytes(cpuUsage);                 if(!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);                 ba = BitConverter.GetBytes(cpuTemp);                 if (!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);                 ba = BitConverter.GetBytes(gpuUsage);                 if (!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);                 ba = BitConverter.GetBytes(gpuTemp);                 if (!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);                 _port.BaseStream.Flush();             } else if((char)cha[0]=='@')             {                 var ba = BitConverter.GetBytes(cpuSpeed);                                          if (!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);                 ba = BitConverter.GetBytes(gpuSpeed);                 if (!BitConverter.IsLittleEndian)                 {                     Array.Reverse(ba);                 }                 _port.Write(ba, 0, ba.Length);             }         }     } }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0431\u0430\u0439\u0442\u043e\u0432. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c Windows NET. Framework, \u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0443\u0436\u0435 \u0438\u043d\u0441\u0442\u0438\u043d\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0435\u0441\u043b\u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043a\u043e\u0434 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0451, \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438.<\/p>\n<p>  \u0423 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0430\u0441\u043f\u0435\u043a\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0430 COM-\u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u0430\u043c\u0430 \u044d\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0445 \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0431\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u041d\u043e \u0432\u043e\u0442 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u0440\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b (\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e), \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0432\u0441\u0435 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f\u0441\u044c \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e. <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">void RefreshPortList() {     var p = PortCombo.Text;     PortCombo.Items.Clear();     var ports = SerialPort.GetPortNames();     foreach(var port in ports)     {         PortCombo.Items.Add(port);     }     var idx = PortCombo.Items.Count-1;     if(!string.IsNullOrWhiteSpace(p))     {         for(var i = 0; i &lt; PortCombo.Items.Count; ++i)         {             if(p==(string)PortCombo.Items[i])             {                 idx = i;                 break;             }         }     }     var s = new SerialPort((string)PortCombo.Items[idx]);     if (!s.IsOpen)     {         try         {             s.Open();             s.Close();         }         catch         {             --idx;             if (0 > idx)             {                 idx = PortCombo.Items.Count - 1;             }         }     }     PortCombo.SelectedIndex = idx; }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0430\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443 \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">void CollectSystemInfo() {     foreach (var hardware in _computer.Hardware)     {         if (hardware.HardwareType == HardwareType.CPU)         {             hardware.Update();             foreach (var sensor in hardware.Sensors)             {                 if (sensor.SensorType == SensorType.Temperature &amp;&amp;                     sensor.Name.Contains(\"CPU Package\"))                 {                     cpuTemp = sensor.Value.GetValueOrDefault();                 }                 else if (sensor.SensorType == SensorType.Load &amp;&amp;                     sensor.Name.Contains(\"CPU Total\"))                 {                     cpuUsage = sensor.Value.GetValueOrDefault();                 }                 else if (sensor.SensorType == SensorType.Clock &amp;&amp;                     sensor.Name.Contains(\"CPU Core #1\"))                 {                     cpuSpeed = sensor.Value.GetValueOrDefault();                 }             }         }         if (hardware.HardwareType == HardwareType.GpuAti ||             hardware.HardwareType == HardwareType.GpuNvidia)         {             hardware.Update();             foreach (var sensor in hardware.Sensors)             {                 if (sensor.SensorType == SensorType.Temperature &amp;&amp;                     sensor.Name.Contains(\"GPU Core\"))                 {                     gpuTemp = sensor.Value.GetValueOrDefault();                 }                 else if (sensor.SensorType == SensorType.Load &amp;&amp;                     sensor.Name.Contains(\"GPU Core\"))                 {                     gpuUsage = sensor.Value.GetValueOrDefault();                 }                 else if (sensor.SensorType == SensorType.Clock &amp;&amp;                     sensor.Name.Contains(\"GPU Core\"))                 {                     gpuSpeed = sensor.Value.GetValueOrDefault();                 }             }         }     } }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u042d\u0442\u043e \u0432\u0441\u0451, \u043e \u0447\u0451\u043c \u0441\u0442\u043e\u0438\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0439.<\/p>\n<h2><font color=\"#3AC1EF\">\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 T-Display S3<\/font><\/h2>\n<p>  <\/p>\n<blockquote><p><i>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/i> \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>libdeps\/include\/lv_conf.h<\/code> \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>\/.pio\/libdeps<\/code>, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u0430 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p><\/blockquote>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u043e \u0441\u0443\u0442\u0438, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u043a LVGL, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0430\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0441\u0442 USB Serial:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">void setup() {     pinMode(PIN_POWER_ON, OUTPUT);     digitalWrite(PIN_POWER_ON, HIGH);     Serial.begin(115200);      pinMode(PIN_LCD_RD, OUTPUT);     digitalWrite(PIN_LCD_RD, HIGH);     esp_lcd_i80_bus_handle_t i80_bus = NULL;     esp_lcd_i80_bus_config_t bus_config = {         .dc_gpio_num = PIN_LCD_DC,         .wr_gpio_num = PIN_LCD_WR,         .clk_src = LCD_CLK_SRC_PLL160M,         .data_gpio_nums =             {                 PIN_LCD_D0,                 PIN_LCD_D1,                 PIN_LCD_D2,                 PIN_LCD_D3,                 PIN_LCD_D4,                 PIN_LCD_D5,                 PIN_LCD_D6,                 PIN_LCD_D7,             },         .bus_width = 8,         .max_transfer_bytes = LVGL_LCD_BUF_SIZE * sizeof(uint16_t),     };     esp_lcd_new_i80_bus(&amp;bus_config, &amp;i80_bus);      esp_lcd_panel_io_i80_config_t io_config = {         .cs_gpio_num = PIN_LCD_CS,         .pclk_hz = EXAMPLE_LCD_PIXEL_CLOCK_HZ,         .trans_queue_depth = 20,         .on_color_trans_done = notify_lvgl_flush_ready,         .user_ctx = &amp;disp_drv,         .lcd_cmd_bits = 8,         .lcd_param_bits = 8,         .dc_levels =             {                 .dc_idle_level = 0,                 .dc_cmd_level = 0,                 .dc_dummy_level = 0,                 .dc_data_level = 1,             },     };     ESP_ERROR_CHECK(esp_lcd_new_panel_io_i80(i80_bus, &amp;io_config, &amp;io_handle));     esp_lcd_panel_handle_t panel_handle = NULL;     esp_lcd_panel_dev_config_t panel_config = {         .reset_gpio_num = PIN_LCD_RES,         .color_space = ESP_LCD_COLOR_SPACE_RGB,         .bits_per_pixel = 16,     };     esp_lcd_new_panel_st7789(io_handle, &amp;panel_config, &amp;panel_handle);     esp_lcd_panel_reset(panel_handle);     esp_lcd_panel_init(panel_handle);     esp_lcd_panel_invert_color(panel_handle, true);      esp_lcd_panel_swap_xy(panel_handle, true);     esp_lcd_panel_mirror(panel_handle, false, true);     \/\/ gap \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0416\u041a-\u043f\u0430\u043d\u0435\u043b\u0438; \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u0440\u0435\u0434\u0438 \u043f\u0430\u043d\u0435\u043b\u0435\u0439, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430     esp_lcd_panel_set_gap(panel_handle, 0, 35);      \/* \u041e\u0441\u0432\u0435\u0442\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430 *\/     ledcSetup(0, 10000, 8);     ledcAttachPin(PIN_LCD_BL, 0);     for (uint8_t i = 0; i &lt; 0xFF; i++) {         ledcWrite(0, i);         delay(2);     }      lv_init();     lv_disp_buf = (lv_color_t *)heap_caps_malloc(LVGL_LCD_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);     lv_disp_buf2 = (lv_color_t *)heap_caps_malloc(LVGL_LCD_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);     lv_disp_draw_buf_init(&amp;disp_buf, lv_disp_buf, lv_disp_buf2, LVGL_LCD_BUF_SIZE);     \/*\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f*\/     lv_disp_drv_init(&amp;disp_drv);     \/*\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0438\u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430*\/     disp_drv.hor_res = LCD_H_RES;     disp_drv.ver_res = LCD_V_RES;     disp_drv.flush_cb = lvgl_flush_cb;     disp_drv.draw_buf = &amp;disp_buf;     disp_drv.user_data = panel_handle;     lv_disp_drv_register(&amp;disp_drv);      is_initialized_lvgl = true;      ui_init();     ui_patch();     lv_canvas_set_buffer(ui_CpuGraph, cpu_graph_buf, 135, 37, LV_IMG_CF_TRUE_COLOR);     lv_canvas_set_buffer(ui_GpuGraph, gpu_graph_buf, 135, 37, LV_IMG_CF_TRUE_COLOR);     lv_canvas_set_buffer(ui_CpuGhzGraph, cpu_graph_buf, 135, 37, LV_IMG_CF_TRUE_COLOR);     lv_canvas_set_buffer(ui_GpuGhzGraph, gpu_graph_buf, 135, 37, LV_IMG_CF_TRUE_COLOR);          button_prev.callback(button_prev_cb);     button_next.callback(button_next_cb);          USBSerial.begin(115200); }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0445\u043e\u043b\u0441\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u044d\u043a\u0440\u0430\u043d\u0430\u0445. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0436\u0435 \u0432\u0441\u0451 \u0432 <code>loop()<\/code>:<\/p>\n<pre><code class=\"cs\">static int ticker = 0; void loop() {     button_prev.update();     button_next.update();     if (ticker++ >= 33) {         ticker = 0;         switch (screen) {             case 0:                 update_screen_0();             break;             case 1:                 update_screen_1();             break;         }     }      lv_timer_handler();     delay(3); }<\/code><\/pre>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0434\u0430\u0451\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430\u043c. \u0417\u0430\u0442\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0434\u0435\u0441\u044f\u0442\u0443\u044e \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f LVGL.<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u0430\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b. \u0421\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b CPU \u0438 GPU, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0438\u0445 \u0432 \u0431\u0443\u0444\u0435\u0440\u044b <code>cpu_graph<\/code> \u0438 <code>gpu_graph<\/code>. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d, \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u044f LVGL \u043f\u0443\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0435\u0433\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c.<\/p>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u0441\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 CPU \u0438 GPU. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043c \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0432\u0435\u0440\u0445\u043d\u0438\u0435 \u0438 \u043d\u0438\u0436\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>  \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u041a\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430. \u041e\u0431\u0435 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">static float screen_1_cpu_min=NAN,screen_1_cpu_max=NAN; static float screen_1_gpu_min=NAN,screen_1_gpu_max=NAN; static void update_screen_1() {     float tmp;     float v;     bool redraw_cpu, redraw_gpu;     float cpu_scale, gpu_scale;     char sz[64];     union {         float f;         uint8_t b[4];     } fbu;     redraw_cpu = false;     redraw_gpu = false;     if (USBSerial.available()) {         int i = USBSerial.readBytes(fbu.b, sizeof(fbu.b));         if (i == 0) {             USBSerial.write('@');         } else {             if (cpu_graph.full()) {                 cpu_graph.get(&amp;tmp);             }             v = (fbu.f);             cpu_graph.put(v);             if(screen_1_cpu_min!=screen_1_cpu_min||v&lt;screen_1_cpu_min) {                 screen_1_cpu_min = v;             }             if(screen_1_cpu_max!=screen_1_cpu_max||v>screen_1_cpu_max) {                 screen_1_cpu_max = v;             }             cpu_scale = screen_1_cpu_max-screen_1_cpu_min+1;             float offs = - (screen_1_cpu_min\/cpu_scale);             redraw_cpu = true;             lv_bar_set_value(ui_CpuGhzBar, ((v\/cpu_scale)+offs)*100, LV_ANIM_ON);             snprintf(sz, sizeof(sz), \"%0.1fGHz\", fbu.f\/1000.0);             lv_label_set_text(ui_CpuGhzLabel, sz);             if (USBSerial.available()) {                 i = USBSerial.readBytes(fbu.b, sizeof(fbu.b));                 if (i != 0) {                     if (gpu_graph.full()) {                         gpu_graph.get(&amp;tmp);                     }                     v = (fbu.f);                     gpu_graph.put(v);                     if(screen_1_gpu_min!=screen_1_gpu_min||v&lt;screen_1_gpu_min) {                         screen_1_gpu_min = v;                     }                     if(screen_1_gpu_max!=screen_1_gpu_max||v>screen_1_gpu_max) {                         screen_1_gpu_max = v;                     }                     gpu_scale = screen_1_gpu_max-screen_1_gpu_min+1;                     offs = - (screen_1_gpu_min\/gpu_scale);                     redraw_gpu = true;                     lv_bar_set_value(ui_GpuGhzBar, ((v\/gpu_scale)+offs)*100, LV_ANIM_ON);                     snprintf(sz, sizeof(sz), \"%0.1fGHz\", fbu.f\/1000.0);                     lv_label_set_text(ui_GpuGhzLabel, sz);                 } else {                     USBSerial.write('@');                 }             } else {                 USBSerial.write('@');             }         }     } else {         USBSerial.write('@');     }     if (redraw_cpu) {         float offs = - (screen_1_cpu_min\/cpu_scale);         lv_point_t pts[sizeof(cpu_graph)];         lv_draw_line_dsc_t dsc;         lv_draw_line_dsc_init(&amp;dsc);         dsc.width = 1;         dsc.color = lv_color_hex(0x0000FF);         dsc.opa = LV_OPA_100;         lv_canvas_fill_bg(ui_CpuGhzGraph, lv_color_white(), LV_OPA_100);         v = *cpu_graph.peek(0);         pts[0].x = 0;         pts[0].y = 36 - ((v\/cpu_scale)+offs) * 36;         for (size_t i = 1; i &lt; cpu_graph.size(); ++i) {             v = *cpu_graph.peek(i);             pts[i].x = i;             pts[i].y = 36 - ((v\/cpu_scale)+offs) * 36;         }         lv_canvas_draw_line(ui_CpuGhzGraph, pts, cpu_graph.size(), &amp;dsc);     }     if (redraw_gpu) {         float offs = - (screen_1_gpu_min\/gpu_scale);         lv_point_t pts[sizeof(gpu_graph)];         lv_draw_line_dsc_t dsc;         lv_draw_line_dsc_init(&amp;dsc);         dsc.width = 1;         dsc.color = lv_color_hex(0xFF0000);         dsc.opa = LV_OPA_100;         lv_canvas_fill_bg(ui_GpuGhzGraph, lv_color_white(), LV_OPA_100);         v = *gpu_graph.peek(0);         pts[0].x = 0;         pts[0].y = 36 - ((v\/gpu_scale)+offs) * 36;         for (size_t i = 1; i &lt; gpu_graph.size(); ++i) {             v = *gpu_graph.peek(i);             pts[i].x = i;             pts[i].y = 36 - ((v\/gpu_scale)+offs) * 36;         }         lv_canvas_draw_line(ui_GpuGhzGraph, pts, gpu_graph.size(), &amp;dsc);     } }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u2013 \u044d\u0442\u043e \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0433\u043e UI \u0432 <code>ui.h<\/code>. \u041f\u0440\u043e\u0441\u0442\u043e \u0435\u0433\u043e \u044f \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0430, \u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 <a href=\"https:\/\/squareline.io\/\">Squareline Studio<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f LVGL, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 Windows Forms, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0435\u043c\u0443 \u043a\u043e\u0434 C#.<\/p>\n<h2><font color=\"#3AC1EF\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  \u0423\u0441\u043f\u0435\u0445\u043e\u0432!  <\/p>\n<blockquote><p><b><font color=\"#3AC1EF\"><a href=\"https:\/\/bit.ly\/3KZeaxv\">Telegram-\u043a\u0430\u043d\u0430\u043b \u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044f\u043c\u0438<\/a> \u0438 <a href=\"https:\/\/bit.ly\/3qoIOXs\">\u0443\u044e\u0442\u043d\u044b\u0439 \u0447\u0430\u0442<\/a><\/font><\/b><\/p><\/blockquote>\n<p><a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=Bright_Translate&amp;utm_content=espmon_monitoring_cpu_i_gpu_s_pomoshhyu_t-display_s3\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/sz\/7j\/pf\/sz7jpfj8i1pa6ocj-eia09dev4q.png\" data-src=\"https:\/\/habrastorage.org\/webt\/sz\/7j\/pf\/sz7jpfj8i1pa6ocj-eia09dev4q.png\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/691474\/\"> https:\/\/habr.com\/ru\/articles\/691474\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/691474\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/49\/v8\/3p\/49v83p4uusttieynlw3hizmeblu.png\" data-src=\"https:\/\/habrastorage.org\/webt\/49\/v8\/3p\/49v83p4uusttieynlw3hizmeblu.png\"\/><\/div>\n<p><\/a><br \/>  \u042f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u0438\u0446\u0430 Fallout 4. \u042d\u0442\u0443 \u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440, \u0434\u0430\u0436\u0435 \u0441\u043f\u0443\u0441\u0442\u044f \u0441\u0435\u043c\u044c \u043b\u0435\u0442, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a \u043d\u0435\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f. \u042f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0438\u043b\u0438 \u0432 \u043d\u0435\u0451 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e, \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c 2080ti, \u044f \u0441\u043c\u043e\u0433\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0451 \u0432 4\u041a. \u0418\u0433\u0440\u0430 \u043f\u043e\u0448\u043b\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0433\u043a\u043e, \u0447\u0442\u043e \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0451 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0443 \u0433\u0443\u0441\u0442\u043e\u0439 \u043b\u0435\u0441. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0430, \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u0448\u0443\u043c\u0435\u043b\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0442\u0435\u0442\u044c.<\/p>\n<p>  \u041d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0448\u0443\u043c\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0445\u043b\u0430\u0436\u0434\u0435\u043d\u0438\u044f, \u0430 \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0432\u0441\u044f\u043a\u0438\u043c\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u044f \u043d\u0435 \u043b\u044e\u0431\u043b\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0434\u043e\u0441\u0442\u0430\u043b\u0430 \u0441\u0432\u043e\u0439 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u043d\u044b\u0439 T-Display S3 \u0438 \u0440\u0435\u0448\u0438\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430 \u043d\u0435\u043c.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-406533","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/406533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=406533"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/406533\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=406533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=406533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=406533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}