串口屏自制电脑机箱监控副屏-HF035

这篇具有很好参考价值的文章主要介绍了串口屏自制电脑机箱监控副屏-HF035。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        如果程序员配电脑要干点什么酷酷的事情的话,那就自己DIY一个机箱监控副屏吧。监控副屏在某宝最便宜也要上百块,本文介绍了怎么使用成本几十块的串口屏模块从0开始完成一个酷炫的机箱监控副屏。主要是软件编程较多,仅涉及到一点硬件知识,可放心食用。

先睹为快

串口屏自制电脑机箱监控副屏-HF035,串口屏,电脑主机,装机,监控副屏,硬件监控串口屏自制电脑机箱监控副屏-HF035,串口屏,电脑主机,装机,监控副屏,硬件监控

环境准备

  • 确保本地有C/C++编译环境, 可下载安装Cygwin或者MinGW。
  • 确保有串口驱动,一般win10都自带。
  • HF035串口屏和USB转TTL模块。
  • 下载安装HF035串口屏的界面设计软件sGUI,和相关开发资料,点击此处下载(报毒请忽略),也可进入厂商官网进行下载:厂商官网。

界面设计

        串口屏厂商一般都会提供一个界面设计的软件,在软件内可以拖拽式的进行界面布局设计,软件使用教程请参考屏幕厂商资料,设计过程此处不详述,与个人审美有关,这里简单的进行了一些组件的排列(又不是不能用)。建议将更多的美化设计下沉到背景底图上,使用PS等专业软件进行底图产出,只使用串口屏的文本、数字等组件用来实现功能。 串口屏自制电脑机箱监控副屏-HF035,串口屏,电脑主机,装机,监控副屏,硬件监控

         在界面设计好后使用串口下载到屏幕中,此时屏幕上应该就可以显示出界面了。这里需要注意的是在下载过程时选择正确的COM端口,波特率使用默认的115200。TTL调试器的接线需要注意RX和TX是一一对应的,RX接板子的RX,TX接板子的TX,这块屏幕是厂商故意这么设计的,与正常的RX接TX,TX接RX不同。

串口屏语法

        串口屏的程序是使用串口协议发送厂商规定格式的数据到屏幕上进行显示,这块板子使用的是字符串的方式进行数据组织,所以在写程序时比较简单,发送类似如下的字符串到指定COM口即可。

SET_NUM(0,10,2);SET_TXT(0,'KB');\r\n

         其中SET_NUM函数的0代表组件的id,10代表具体的数值,2代表数值总共占两位。其中的SET_TXT函数的0代表组件的id,‘KB’代表具体显示的文本值。多个函数可以多次分开发送,也可连接一起发送,厂商使用‘\r\n’作为分隔符,所以一定需要在末尾带上分隔符,否则串口屏会一直等待接收。其余API可参考串口屏厂商文档。

程序设计

        为了监控硬件和网络信息,我们可以使用非常好用的一款软件:TrafficMonitor,此软件的优点请自行搜索,绝对是小而美的精品软件,官方仓库地址,目前已有27.5k的star,鄙人已使用多年,墙裂推荐。

        TrafficMonitor在v1.82版本新增了插件系统,意味着可以使用其提供的硬件监控数据进行自定义的显示,提供了无限的想象空间。我们可以使用它的插件系统获取硬件数据,然后通过串口将数据发送到屏幕进行显示。程序设计要点可以分为串口自动扫描连接、硬件数据获取与发送两个方面,下面分别进行介绍。

串口自动扫描连接

        串口方面的操作使用的是C++标准库windows.h进行实现,具体代码也是借鉴了他人的一些代码,这里找不到仓库地址了,不过可以直接照搬我的实现,原理都是一样的。主要难点就是扫描串口,我是在注册表Hardware\\DeviceMap\\SerialComm中进行遍历查找串口的。在程序中编写了一个autoConnect方法,主要功能就是扫描注册表,然后逐个进行连接,返回第一个连接成功的串口,这种写法有一定局限,比如不能适应多串口的场景,对于有特殊需求的读者可以自行修改相关代码。


bool SerialPort::autoConnect()
{
    HKEY hkey;
    int result;
    int i = 0;
    result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm", NULL, KEY_READ, &hkey);
    if (ERROR_SUCCESS == result) //打开串口注册表
    {
        do
        {
            TCHAR portName[0x100] = {0}; //portName是注册表名称(不是设备管理器里的前缀),commName就是值 串口名字COMN
            TCHAR commName[0x100] = {0};
            DWORD dwSize = sizeof(portName) / sizeof(TCHAR);
            DWORD dwLong = dwSize;
            result = RegEnumValue(hkey, i, portName, &dwLong, NULL, NULL, (LPBYTE)commName, &dwSize);
            if (ERROR_NO_MORE_ITEMS == result)
            {
                break;
            }                                            //   枚举串口
            // printf("%d %s %s\n", i, portName, commName); //显示名称及值

            char buff[30];
            sprintf(buff, "\\\\.\\%s", commName);
            // printf("try connect %s\n", buff);
            bool state = this->openSerial(buff);
            // printf("state = %d, connected = %d\n", state, this->connected);
            if (state && this->connected)
            {
                break;
            }

            i++;
        } while (TRUE);
        RegCloseKey(hkey); //关闭注册表
    }
    return -1; //没找到特定串口
}

硬件数据获取与发送

        TrafficMonitor的插件系统会定时回调OnMonitorInfo函数,会传递进来一个包含监控数据的对象,我们只需实现OnMonitorInfo函数,然后解析获取想要的监控数据即可,关于插件编写的细节具体可参考官方的插件开发指南。在获取到数据后按照串口的数据格式要求进行组装,这里我们使用sprintf将所有数据组合后一次性发送。在实测过程中串口屏的刷新率比较低,达到了200ms,所以有明显的刷屏视觉感知,我们在刷屏时将刷新的内容乱序发送,可以减少一些人眼的刷屏感知时间。


void HF035::OnMonitorInfo(const MonitorInfo& monitor_info)
{
    // 日志调试
	// FILE* fp = fopen("hf035.log", "a+");
    char buf[255];
    // 上行网速
    this->formatSpeed(monitor_info.up_speed, this->speedStr1);
    // 下行网速
    this->formatSpeed(monitor_info.down_speed, this->speedStr2);
    // 乱序格式化串口数据,注意末尾必须‘\r\n’
    sprintf(buf, "SET_TXT(8,'%s');SET_TXT(9,'%s');SET_NUM(0,%d,2);SET_TXT(11,'%s');SET_NUM(1,%d,2);SET_TXT(10,'%s');SET_NUM(2,%d,2);SET_NUM(7,%d,2);SET_NUM(3,%d,2);SET_NUM(6,%d,2);SET_NUM(4,%d,2);SET_NUM(5,%d,2);\r\n",
        //上行网速尾标
        this->getSpeedPix(monitor_info.up_speed),
        //下行网速尾标
        this->getSpeedPix(monitor_info.down_speed),
        // CPU使用率
        this->formatUsage(monitor_info.cpu_usage),
        this->speedStr2,
        // CPU温度
        this->formatUsage(monitor_info.cpu_temperature),
        this->speedStr1,
        // GPU使用率
        this->formatUsage(monitor_info.gpu_usage),
        // 硬盘温度
        this->formatUsage(monitor_info.hdd_temperature),
        // GPU温度
        this->formatUsage(monitor_info.gpu_temperature),
        // 硬盘使用率
        this->formatUsage(monitor_info.hdd_usage),
        // 内存使用率
        this->formatUsage(monitor_info.memory_usage),
        // 主板温度
        this->formatUsage(monitor_info.main_board_temperature));

    // 如果已连接则进行发送,否则进行自动重连
    if(this->serialPort->isConnected()){
        // 发送串口数据
        this->serialPort->writeSerialPort(buf, strlen(buf));
    }else{
        // fwrite("autoConnect\n", 1, 13, fp);
        // 自动扫描连接串口
        this->serialPort->autoConnect();
    }

	// 关闭文件
	// fclose(fp);
    // printf("cpu: %d \n", monitor_info.cpu_usage);
}

/* 格式化使用率,保证数值长度不超过2位,避免界面超出 */
int HF035::formatUsage(int num)
{
    return num < 0 ? 0 : (num > 99 ? 99 : num);
}

/* 格式化网速,最大显示99MB,最小显示0.1KB*/
void HF035::formatSpeed(unsigned long long speed, char * buf)
{
    float temp = 0.1f;
    if(speed > 103809024){
        // 99 MB
        temp = 99.0f;
    }else if(speed > 104858){
        // MB
        temp = speed / 1048576.0f;
    }else if(speed > 103){
        // 0.1KB
        temp = speed / 1024.0f;
    }
    // 数值大于2位时不显示小数,避免界面超出
    if(temp > 9.9f){
        sprintf(buf, "%d", (int)temp);
    }else{
        sprintf(buf, "%.1f", temp);
    }
}

/* 获取网速后缀 */
char * HF035::getSpeedPix(unsigned long long  speed)
{
    if(speed > 1048576){
        // MB
        return "M";
    }
    return "K";
}

编译运行

        TrafficMonitor要求编译为dll后放到插件目录,然后重启软件即可自动加载插件运行,如果一切正常就可以看到屏幕上的内容每两秒会更新一次。

编译命令:

g++ HF035.cpp SerialPort.cpp  -lstdc++ -shared -o HF035.dll

将HF035.dll放到插件目录C:\Program Files\TrafficMonitor\plugins,重启软件即可看到插件加载成功:

串口屏自制电脑机箱监控副屏-HF035,串口屏,电脑主机,装机,监控副屏,硬件监控

 完整项目地址:https://github.com/printlin/computerMonitorScreen文章来源地址https://www.toymoban.com/news/detail-701155.html

到了这里,关于串口屏自制电脑机箱监控副屏-HF035的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iPad苹果平板做电脑副屏

    1 打开蓝牙 2 链接同样的wifi 3 系统偏好设置 4 添加显示器-选择自己的的ipad 4 显示器设置-选择“扩展显示器”(这个一定要做才行)

    2024年04月26日
    浏览(44)
  • 用平板当电脑副屏(spacedesk)双端分享

    下载软件spacedesk Driver Console pc端: 移动端; -点击这里下载 如果进不去可以考虑百度网盘-点击这里下载 提取码:6666 推荐使用有线连接,接下来介绍usb连接教程,非常简单 这时候我们就可以发现系统主动弹出来提示,点击确定就ok了 大家可以用板子在OneNopte上试试流畅度,非

    2024年02月05日
    浏览(37)
  • 电脑装机必备的软件

    对于刚买了新电脑或者新装了电脑系统的同学,就需要为电脑安装一些常用软件。很多同学不知道该给电脑安装哪些软件,下面小编就来为大家分享电脑装机必备的软件。 1.安全软件 虽然电脑有自带的安全软件,但是功能及防护相对较少。对于不怎么使用电脑,懂一点电脑用

    2024年02月10日
    浏览(44)
  • 番茄台式电脑装机日记

    时至今日,终于圆了年少时的梦: 拥有自己的一台台式电脑 。 就好像第一次学会系鞋带,第一次剥榴莲,亲手组装自己的第一台台式电脑,这个体验完全是此生少有且独特的完美体验。 作者:番茄 编写时间:2023/12/16 cpu 主板 显卡 内存 固态 电源 散热(水冷/风冷) 机箱

    2024年02月02日
    浏览(79)
  • 小白电脑装机(自用)

    几个月前买了配件想自己装电脑,结果最后无法成功点亮,出现的问题是主板上的DebugLED黄灯常亮,即DRAM灯亮。对于微星主板的Debug灯,其含义这篇博文中有说明。 根据另一篇博文,有两种可能。 我这边曾将内存条和主板一块寄给维修人员,得到的回复是有一个内存条无法点

    2024年02月14日
    浏览(38)
  • 二、电脑装机实践

    纸上得来终觉浅,绝知此事要躬行。—— 宋·陆游 组装前,要 录制开箱视频 ,避免运输过程中零部件损坏,导致退换货时产生纠葛,然后小心组装,把线理好,装个一两天都没事,参考视频为【装机教程】全网最好的装机教程,没有之一,这是我的组装顺序: (1) 在机箱外

    2024年02月06日
    浏览(38)
  • 【Windows10】电脑副屏无法调节屏幕亮度?解决方法

    先说下情况,本人对显示器不太懂,属于小白 这个副屏无法调节的问题出现也已经很久了,但是之前亮度适合就无所谓,今天突然按了之后很亮,于是就找问题。 第一步,我直接百度,遇事不决,百度力学。但是你猜怎么样 我看到的第一个解决方式是重装,因为可能是系统

    2024年02月09日
    浏览(61)
  • 使用SpaceDesk连接平板作为电脑副屏详细步骤教程

    SpaceDesk官网链接https://www.spacedesk.net/ (应该是需要科学上网才能进入) SpaceDesk它可以连接安卓,苹果的平板,手机等,也可以连接其他可以打开网页(HTML5)的设备。 这里我只记录了连接安卓平板的过程 打开SpaceDesk官网,点击下载, 然后根据你的电脑选择合适的安装版本, 我的电脑

    2024年02月09日
    浏览(55)
  • 电脑扩展屏幕后图标都跑到副屏(扩展屏)的解决办法

    之前电脑使用扩展屏幕一直都没有问题,但是最近在单位使用笔记本电脑时莫名其妙出现一个问题,我的笔记本屏幕是设置为主屏的,但是连接扩展屏幕或者投影仪时,所有图标按照原来主屏上的位置自动调整到副屏了,笔者反复查看了主副屏幕设置都没有问题的。 网上的教

    2024年02月11日
    浏览(45)
  • 办公组装机电脑配置清单2023 办公组装电脑配置推荐2023

    CPU Intel 奔腾金牌 G6400 1 ¥499 主板 技嘉H510M H 1 ¥579 内存 金士顿骇客神条FURY 8GB DDR4 2666(HX426C15FB/8) 1 ¥235 固态硬盘 金士顿NV2 NVMe(250GB) 1 ¥189 显卡 昂达GT710典范 1GD3静音版 1 ¥199 机箱 游戏风暴优+ 1 ¥89 电源 金河田战龙RX490 1 ¥99 显示器 金正G2402E 1 ¥409 办公组装电脑怎么搭配

    2024年02月09日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包