using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using LibreHardwareMonitor.Hardware; namespace FanControl { internal class Program { public class UpdateVisitor : IVisitor { public void VisitComputer(IComputer computer) { computer.Traverse(this); } public void VisitHardware(IHardware hardware) { hardware.Update(); foreach (IHardware subHardware in hardware.SubHardware) subHardware.Accept(this); } public void VisitSensor(ISensor sensor) { } public void VisitParameter(IParameter parameter) { } } public static void Monitor() { Computer computer = new Computer { IsCpuEnabled = true, IsGpuEnabled = true, IsMemoryEnabled = true, IsMotherboardEnabled = true, IsControllerEnabled = true, IsNetworkEnabled = true, IsStorageEnabled = true, IsPsuEnabled = true, IsBatteryEnabled = true }; computer.Open(); //computer.Accept(new UpdateVisitor()); foreach (IHardware hardware in computer.Hardware) { Console.WriteLine("Hardware: {0}. Type: {1}", hardware.Name, hardware.HardwareType); foreach (IHardware subhardware in hardware.SubHardware) { Console.WriteLine("\tSubhardware: {0}", subhardware.Name); foreach (ISensor sensor in subhardware.Sensors) { Console.WriteLine("\t\tSensor: {0}, value: {1}, type: {2}", sensor.Name, sensor.Value, sensor.SensorType); } } foreach (ISensor sensor in hardware.Sensors) { Console.WriteLine("\tSensor: {0}, value: {1}, type: {2}", sensor.Name, sensor.Value, sensor.SensorType); } } computer.Close(); } static void ConsoleMain(string[] args) { Monitor(); while (true) { Thread.Sleep(300); Vlv0100.SetFanControl(false); Vlv0100.SetFanDesiredRPM(6000); Console.WriteLine("Fan RPM: {0}", Vlv0100.GetFanRPM()); Console.WriteLine("Fan Desired RPM: {0}", Vlv0100.GetFanDesiredRPM()); } } static void Main(string[] args) { if (Environment.UserInteractive && !Console.IsInputRedirected) { ConsoleMain(args); } else { Application.Run(new FanControlForm()); } } } }