BeyazBrush

Başarılı
Katılım
24 Ocak 2024
Mesajlar
6
Beğeniler
1
yvjixzce.webp


Megalodon (AiO 360mm) sıvı soğutucunun LCD ekranı VID 5131 / PID 2007 ile USB HID üzerinden çalışıyor. Üreticinin uygulaması PC_Monitor Electron tabanlıydı; asar içinden protokolü çözerek sadece CPU sıcaklığı işini alan, tek Exe'lik bir Rust karşılığını yazdım.

Neden?​

  • Orijinal uygulama arka planda Electron (160+ MB RAM) + Node çalıştırıyordu ve ağ, CPU, disk kullanımı fazlaydı.
  • Benim ihtiyaç sadece: CPU sıcaklığını her saniye LCD'ye göndermek. Başka bir şey değil.
  • Electron bağımlılığı olmadan, tek native binary ile düşük CPU/RAM hedefi + Windows başlangıcında sistem tepsisinde çalışma.

Neler var (kaynak + gerekli programlar)​

Tempmonitor/
├── Cargo.toml, Cargo.lock, Build.rs, temp_monitor.manifest.
├── Src/
│ ├── Main.rs (egui GUI + tema + tepsi menüsü)
│ ├── Service.rs (1 Hz LCD gönderim döngüsü)
│ ├── Collector.rs (sadece CPU Tctl/Tdie okuyan cputempsource)
│ ├── SDK.rs (BYMonitor64.dll HWiNFO SDK ffi)
│ ├── LCD.rs + lcd/protocol.rs (USB HID yazma tarafı)
│ ├── Autostart.rs (görev zamanlayıcı ile oturumda başlatma)
│ └── Log.rs (GUI mini log)
└── target/release/
├── temp_monitor.exe
└── BYMonitor64.dll

Protokol (çözüldü)​

Orijinal uygulamanın Debug logundaki buffer: Paketleri 1076 örnekle doğrulandı, 0 uyumsuzluk — 24 byte:
0: 0x00 (HID report ID)
1: 0x40 (status)
2: Cputemperature U8 (°C, yuvarla)
3-23: 0 (temel CPU temasında kullanılmıyor)
HID report = 65 byte (1 ID + 64 data). Başlangıçta 00 40 + 22X 00 conn paketi gönderilir.

Özellikler​

  • GUI (eframe/egui): CPU °C kartı, sürücü (HWiNFO) + LCD durumu, gönderilen paket sayacı, mini log.
  • Başlat / kapat — tek seferlik, sonraki oturumda kendiliğinden başlamaz.
  • Görünüm → tema: koyu / açık / sıvı (berrak)
  • Simge durumuna küçült: pencere tepsiye gider, arkada çalışmaya devam eder.
  • Başlangıç: görev zamanlayıcı tempmonitor (onlogon, highest, --background) — sağ altta sistem tepsisi simgesi, pencere simge durumuna alınır.
  • Tepsi (sağ tık): programı aç / programı kapat (gerçek çıkış)
  • HWiNFO SDK Ordinal'lerle dinamik yüklenir (268, 397, 538, 564, 712, 871) — DLL yoksa temiz hata.

Kurulum​

  1. target/release/ klasöründen temp_monitor.exe + BYMonitor64.dll'i aynı klasöre koyun (DLL, HWiNFO SDK'sının BYMonitor64.dll'idir; orijinal PC_Monitor kurulumu AppData/Local/Programs/PC_Monitor/lib/ içinden de bulunur).
  2. Manifest requireadministrator — HWiNFO'nun CPU okuması için yönetici gerekir (exe çift tıklamada UAC çıkar).
  3. İsterseniz uygulama içinden: başlangıç → Windows başlangıcına ekle → yeniden başlatınca tepside başlar.

Performans​

  • Saniyede 2 ffi çağrısı (cputempsource tek sensör cache'ler), taramada allocation yok.
  • LCD yazmalarında stack tampon, yeniden allocation yok.
  • Boşta CPU <%0.5, RAM ~95 MB (servis (arka thread) + egui). Arayüz açılınca RAM 140-150 MB civarı.

Gereksinimler​

  • Windows 10/11 64-bit, Rust toolchain (kendi derlerseniz), USB HID Megalodon LCD (5131/2007), BYMonitor64.dll
İndirdiğim + derlediğim repo yukarıdaki şekildedir; test ettim, Windows başlangıcı + tepsi aç/kapat + LCD güncellemesi çalışıyor.

İndirme:
Link yenilecektir.

İçerik:
  • target/release/temp_monitor.exe (3,7 MB)
  • BYMonitor64.dll (HWiNFO SDK, 2,3 MB)
  • Src/ (kaynak) + Cargo.toml, Cargo.lock, Build.rs, manifest.
Kullanım: Exe + DLL aynı klasörde, çift tıklamada UAC onayı istenir (HWiNFO CPU okuma için). Windows başlangıcına eklemek için uygulama içinden başlangıç → Windows başlangıcına ekle.

Not: AI ile kodlandı.
 
Son düzenleyen: Moderatör: