BeyazBrush
Başarılı
- Katılım
- 24 Ocak 2024
- Mesajlar
- 6
- Beğeniler
- 1
Konu Başlıkları Gizle
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
- 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).
- Manifest requireadministrator — HWiNFO'nun CPU okuması için yönetici gerekir (exe çift tıklamada UAC çıkar).
- İ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
İndirme:
Link yenilenecektir.
İç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.
Not: AI ile kodlandı.
Son düzenleyen: Moderatör: