Witajcie,
Planuję wykorzystać darmową bibliotekę LibreHardwareMonitor do odczytu parametrów komputera, następnie przesyłać dane do płytki Arduino po porcie szeregowym aby na koniec wyświetlić zebrane wartości na wyświetlaczu.
https://github.com/LibreHardwareMonitor/LibreHardwareMonitor
Poniżej mój kod (Visual Studio 2022):
foreach (LibreHardwareMonitor.Hardware.IHardware hw in thisPC.Hardware)
{
Debug.WriteLine("Nazwa podzespołu="+hw.Name);
Debug.WriteLine("Typ: " + hw.HardwareType);
if (hw.HardwareType.ToString().IndexOf("Cpu") > -1)
{
cpuName = "CPU:";
cpuName += hw.Name;
}
else if (hw.HardwareType.ToString().IndexOf("Gpu") > -1)
{
gpuName = "GPU:";
gpuName += hw.Name;
}
else if (hw.HardwareType.ToString().IndexOf("Motherboard") > -1)
{
MotherboardName = "Płyta główna:";
MotherboardName += hw.Name;
}
if (hw.Name.ToString().IndexOf("Ethernet") > -1)
{
NetworkName1 = "Network1:";
NetworkName1 += hw.Name;
}
if (hw.Name.ToString().IndexOf("Ethernet 2") > -1)
{
NetworkName2 = "Network2:";
NetworkName2 += hw.Name;
}
hw.Update();
}
Jak dotąd wszystko się zgadza, mam widoczne w systemie dwie przewodowe karty sieciowe:
Nazwa podzespołu=Gigabyte TRX40 AORUS XTREME
Typ: Motherboard
Nazwa podzespołu=AMD Ryzen Threadripper 3960X
Typ: Cpu
Nazwa podzespołu=Generic Memory
Typ: Memory
Nazwa podzespołu=NVIDIA GeForce RTX 2080 Ti
Typ: GpuNvidia
Nazwa podzespołu=Ethernet
Typ: Network
Nazwa podzespołu=Ethernet 2
Typ: Network
Nazwa podzespołu=Połączenie lokalne* 1
Typ: Network
Nazwa podzespołu=Połączenie lokalne* 2
Typ: Network
Nazwa podzespołu=Połączenie sieciowe Bluetooth
Typ: Network
Nazwa podzespołu=Wi-Fi
Kolejny etap:
string cpuName = "CPU";
string gpuName = "GPU";
string NetworkName1 = "Network1";
string NetworkName2 = "Network2";
Debug.WriteLine("Model CPU:" + cpuName + " | Model GPU:" + gpuName + " | Płyta główna:" + MotherboardName + " | Sieć: " + NetworkName1 + " | Sieć: " + NetworkName2);
Wynik:
Model CPU:CPU:AMD Ryzen Threadripper 3960X | Model GPU:GPU:NVIDIA GeForce RTX 2080 Ti | Płyta główna:Motherboard:Gigabyte TRX40 AORUS XTREME | Sieć: Network1:Ethernet 2 | Sieć: Network2:Ethernet 2
W tym momencie nie wiem dlaczego zarówno zmienna Network1
jak i Network 2
otrzymuje tą samą wartość: Ethernet 2
.
Nawet jeśli zakomentuję linijki kodu:
if (hw.Name.ToString().IndexOf("Ethernet 2") > -1)
{
NetworkName2 = "Network2:";
NetworkName2 += hw.Name;
}
Otrzymuję:
Model CPU:CPU:AMD Ryzen Threadripper 3960X | Model GPU:GPU:NVIDIA GeForce RTX 2080 Ti | Płyta główna:Motherboard:Gigabyte TRX40 AORUS XTREME | Sieć: Network1:Ethernet 2 | Sieć: Network2
co nie jest prawdą, gdyż wynikiem dla Network1 powinna być wartość "Ethernet" (bez 2).
Gdzie może leżeć problem?
Dodam, że jeśli wyłączę drugi interfejs (Ethernet 2) w Windows 10 to NetworkName1 przyjmuje prawidłową wartość "Ethernet":
Sieć: Network1:Ethernet | Sieć: Network2
Dla obu aktywnych kart sieciowych w systemie chciałbym uzyskać:
Sieć: Network1:Ethernet | Sieć: Network2:Ethernet 2
Aktualizacja: Dlaczego akurat Ethernet i Ethernet2 a nie Połączenie lokalne 1 i 2? Dla tych pierwszych sensory z biblioteki Libre zwracają wartości, które później będę obrabiał dalej:
Console.WriteLine("Sensor: " + s.Name + " Type: " + s.SensorType + " Value: " + s.Value);
Nazwa podzespołu=Ethernet
Typ: Network
Sensor: Data Uploaded Type: Data Value: 0,9644753
Sensor: Data Downloaded Type: Data Value: 9,591947
Sensor: Upload Speed Type: Throughput Value: 3553,245
Sensor: Download Speed Type: Throughput Value: 11280,33
Sensor: Network Utilization Type: Load Value: 0,01186686
Nazwa podzespołu=Ethernet 2
Typ: Network
Sensor: Data Uploaded Type: Data Value: 0,76421537
Sensor: Data Downloaded Type: Data Value: 4,591947
Sensor: Upload Speed Type: Throughput Value: 153,2457
Sensor: Download Speed Type: Throughput Value: 1180,33
Sensor: Network Utilization Type: Load Value: 0
Nazwa podzespołu=Połączenie lokalne* 1
Typ: Network
Sensor: Data Uploaded Type: Data Value: 0
Sensor: Data Downloaded Type: Data Value: 0
Sensor: Upload Speed Type: Throughput Value: 0
Sensor: Download Speed Type: Throughput Value: 0
Sensor: Network Utilization Type: Load Value: 0
Nazwa podzespołu=Połączenie lokalne* 2
Typ: Network
Sensor: Data Uploaded Type: Data Value: 0
Sensor: Data Downloaded Type: Data Value: 0
Sensor: Upload Speed Type: Throughput Value: 0
Sensor: Download Speed Type: Throughput Value: 0
Sensor: Network Utilization Type: Load Value: 0