mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Merged GPU temp reader
This commit is contained in:
@@ -37,7 +37,7 @@ public class NvidiaGpuTemperatureProvider : IGpuTemperatureProvider {
|
|||||||
return PhysicalGPU
|
return PhysicalGPU
|
||||||
.GetPhysicalGPUs()
|
.GetPhysicalGPUs()
|
||||||
.FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);
|
.FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);
|
||||||
} catch (NVIDIAApiException) {
|
} catch {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
63
HardwareMonitor.cs
Normal file
63
HardwareMonitor.cs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using GHelper.Gpu;
|
||||||
|
|
||||||
|
public class HardwareMonitor
|
||||||
|
{
|
||||||
|
private static IGpuTemperatureProvider? GpuTemperatureProvider;
|
||||||
|
|
||||||
|
public static float? cpuTemp = -1;
|
||||||
|
public static float? batteryDischarge = -1;
|
||||||
|
public static int? gpuTemp = null;
|
||||||
|
|
||||||
|
public static void ReadSensors()
|
||||||
|
{
|
||||||
|
cpuTemp = -1;
|
||||||
|
batteryDischarge = -1;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
||||||
|
cpuTemp = ct.NextValue() - 273;
|
||||||
|
ct.Dispose();
|
||||||
|
|
||||||
|
var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true);
|
||||||
|
batteryDischarge = cb.NextValue() / 1000;
|
||||||
|
cb.Dispose();
|
||||||
|
|
||||||
|
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Failed reading sensors");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RecreateGpuTemperatureProvider() {
|
||||||
|
try {
|
||||||
|
if (GpuTemperatureProvider != null) {
|
||||||
|
GpuTemperatureProvider.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Detect valid GPU temperature provider.
|
||||||
|
// We start with NVIDIA because there's always at least an integrated AMD GPU
|
||||||
|
IGpuTemperatureProvider gpuTemperatureProvider = new NvidiaGpuTemperatureProvider();
|
||||||
|
if (gpuTemperatureProvider.IsValid) {
|
||||||
|
GpuTemperatureProvider = gpuTemperatureProvider;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpuTemperatureProvider.Dispose();
|
||||||
|
gpuTemperatureProvider = new AmdGpuTemperatureProvider();
|
||||||
|
if (gpuTemperatureProvider.IsValid) {
|
||||||
|
GpuTemperatureProvider = gpuTemperatureProvider;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpuTemperatureProvider.Dispose();
|
||||||
|
|
||||||
|
GpuTemperatureProvider = null;
|
||||||
|
} finally {
|
||||||
|
Debug.WriteLine($"GpuTemperatureProvider: {GpuTemperatureProvider?.GetType().Name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -550,7 +550,7 @@ public class NativeMethods
|
|||||||
displayNum = count;
|
displayNum = count;
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
Debug.WriteLine(device.outputTechnology);
|
//Debug.WriteLine(device.outputTechnology);
|
||||||
//Debug.WriteLine(device.monitorFriendlyDeviceName);
|
//Debug.WriteLine(device.monitorFriendlyDeviceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,7 +569,7 @@ public class NativeMethods
|
|||||||
{
|
{
|
||||||
laptopScreen = screen.DeviceName;
|
laptopScreen = screen.DeviceName;
|
||||||
}
|
}
|
||||||
Debug.WriteLine(screen.DeviceName);
|
//Debug.WriteLine(screen.DeviceName);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
62
Program.cs
62
Program.cs
@@ -4,68 +4,6 @@ using System.Management;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using GHelper.Gpu;
|
|
||||||
|
|
||||||
public class HardwareMonitor
|
|
||||||
{
|
|
||||||
private static IGpuTemperatureProvider? GpuTemperatureProvider;
|
|
||||||
|
|
||||||
public static float? cpuTemp = -1;
|
|
||||||
public static float? batteryDischarge = -1;
|
|
||||||
public static int? gpuTemp = null;
|
|
||||||
|
|
||||||
public static void ReadSensors()
|
|
||||||
{
|
|
||||||
cpuTemp = -1;
|
|
||||||
batteryDischarge = -1;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
|
||||||
cpuTemp = ct.NextValue() - 273;
|
|
||||||
ct.Dispose();
|
|
||||||
|
|
||||||
var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true);
|
|
||||||
batteryDischarge = cb.NextValue() / 1000;
|
|
||||||
cb.Dispose();
|
|
||||||
|
|
||||||
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
Logger.WriteLine("Failed reading sensors");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void RecreateGpuTemperatureProvider() {
|
|
||||||
try {
|
|
||||||
if (GpuTemperatureProvider != null) {
|
|
||||||
GpuTemperatureProvider.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Detect valid GPU temperature provider.
|
|
||||||
// We start with NVIDIA because there's always at least an integrated AMD GPU
|
|
||||||
IGpuTemperatureProvider gpuTemperatureProvider = new NvidiaGpuTemperatureProvider();
|
|
||||||
if (gpuTemperatureProvider.IsValid) {
|
|
||||||
GpuTemperatureProvider = gpuTemperatureProvider;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpuTemperatureProvider.Dispose();
|
|
||||||
gpuTemperatureProvider = new AmdGpuTemperatureProvider();
|
|
||||||
if (gpuTemperatureProvider.IsValid) {
|
|
||||||
GpuTemperatureProvider = gpuTemperatureProvider;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpuTemperatureProvider.Dispose();
|
|
||||||
|
|
||||||
GpuTemperatureProvider = null;
|
|
||||||
} finally {
|
|
||||||
Debug.WriteLine($"GpuTemperatureProvider: {GpuTemperatureProvider?.GetType().Name}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static class Logger
|
public static class Logger
|
||||||
{
|
{
|
||||||
public static void WriteLine(string logMessage)
|
public static void WriteLine(string logMessage)
|
||||||
|
|||||||
Reference in New Issue
Block a user