基于AIDA64 Extreme软件的电脑性能检测副屏的搭建

概要

利用AIDA64 Extreme软件可以以串口的形式输出电脑的各项性能数据这个功能,我们可以使用单片机读取这个串口数据,并将其显示在任意可以被单片机驱动的屏幕上,实现对电脑性能的实时监测。

整体架构流程

本系统使用:
AIDA64 Extreme软件
LCD1602液晶显示屏(背面带模块,可以直接用iic驱动的那种)
arduino nano单片机

我们先设置AIDA64软件,使其能够以串口形式输出数据:
在这里插入图片描述

再设置一下需要哪些电脑性能数据:
在这里插入图片描述

接着使用虚拟串口,虚拟出一对串口(COM1->COM2)
在这里插入图片描述
它在设备管理器中长这样:
在这里插入图片描述
我们上面设置了AIDA64的输出串口为COM1,现在我们只需要找一个串口监视器监视COM2,即可获得AIDA64输出的串口数据:
在这里插入图片描述
得到了AIDA64的串口输出样式,我们就能有针对性的编写程序来提取对我们有用的信息了!
把问题抛给AI,得到我们所需要的能提取串口数据中的信息的程序:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

// 用于存储解析后的数据
char cpuStr[4];
char ramStr[4];
char cStr[4];
char dStr[4];

// 串口通信的波特率
const int baudRate = 9600;

void setup() {
  // 初始化串口通信
  Serial.begin(baudRate);
  // 初始化LCD1602
  lcd.init();
  lcd.backlight();
  // 等待串口数据
  Serial.println("等待数据...");
}

void loop() {
  // 检查串口是否有数据可用
  if (Serial.available() > 0) {
    // 读取一行数据(直到遇到换行符)
    String receivedData = Serial.readStringUntil('\n');
    // 移除数据末尾的换行符和回车符(如果有的话)
    receivedData.trim();
    
    // 解析数据(假设数据格式固定为"CPU x% RAM x% C x% D x%")
    int cpuIndex = receivedData.indexOf("CPU ") + 4;
    int ramIndex = receivedData.indexOf("RAM ", cpuIndex) + 4;
    int cIndex = receivedData.indexOf("C ", ramIndex) + 2;
    int dIndex = receivedData.indexOf("D ", cIndex) + 2;
    
    int cpuEndIndex = receivedData.indexOf('%', cpuIndex);
    int ramEndIndex = receivedData.indexOf('%', ramIndex);
    int cEndIndex = receivedData.indexOf('%', cIndex);
    int dEndIndex = receivedData.indexOf(' ', dIndex + 1) - 1; // 假设D后面的值后面有空格或字符串结束
    
    // 复制解析出的数据到字符数组(注意:这里假设数据长度不会超过3个字符)
    strncpy(cpuStr, receivedData.substring(cpuIndex, cpuEndIndex).c_str(), 3);
    strncpy(ramStr, receivedData.substring(ramIndex, ramEndIndex).c_str(), 3);
    strncpy(cStr, receivedData.substring(cIndex, cEndIndex).c_str(), 3);
    strncpy(dStr, receivedData.substring(dIndex, dEndIndex).c_str(), 3);
    
    // 确保字符串以null字符结尾
    cpuStr[3] = '\0';
    ramStr[3] = '\0';
    cStr[3] = '\0';
    dStr[3] = '\0';
    
    // 显示数据到LCD1602
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("CPU:");
    lcd.print(cpuStr);
    lcd.print("%");
    lcd.setCursor(9, 0);
    lcd.print("RAM:");
    lcd.print(ramStr);
    lcd.print("%");
    
    lcd.setCursor(0, 1);
    lcd.print("C:");
    lcd.print(cStr);
    lcd.print("%");
    lcd.setCursor(9, 1);
    lcd.print("D:");
    lcd.print(dStr);
    lcd.print("%");
    
    // 等待一段时间后再接收新的数据(可选)
    delay(2000);
  }
}

接下来烧录到单片机就成啦

哦,还要记得进AIDA64里面把输出端口改为单片机所在的端口,之前是为了测试,选择了COM1.

小结

这种通过读取串口信息获取数据的方法,自由性很强,可以用不同的单片机,不同的屏幕;
AI也很强大了,处理简单的编程问题也很方便,哈哈。
感谢…不记得名字了,还请感谢诸位提供的这个思路。

ps.封面图片是烟雾报警项目的面包板,借用了部分硬件设施,不要让面包板上其他模块迷惑你:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值