Inhaltsverzeichnis:

PC-Hardwaremonitor - Gunook
PC-Hardwaremonitor - Gunook

Video: PC-Hardwaremonitor - Gunook

Video: PC-Hardwaremonitor - Gunook
Video: How to Stress-Test your PC the 'Creator' Way ➡ FREE! [CPU, RAM + GPU] 2024, November
Anonim
PC-Hardwaremonitor
PC-Hardwaremonitor
PC-Hardwaremonitor
PC-Hardwaremonitor
PC-Hardwaremonitor
PC-Hardwaremonitor

Hallo allerseits. Ich habe dieses Projekt aus zwei Gründen gestartet: Ich habe vor kurzem eine Wasserkühlungsschleife in meinem PC gebaut und brauchte etwas, um optisch etwas Platz im Gehäuse zu füllen UND ich wollte Temperaturen und andere Statistiken mit einem schnellen Blick überprüfen lassen, ohne dass OSD-Spielereien das füllen Ecke des Bildschirms. Natürlich gibt es dafür fertige Lösungen, aber die meisten würden einfach nicht in mein Feng Shui passen. Anstatt also ein 7-Zoll-HDMI-Display in mein Gehäuse zu stecken, bei dem ein Kabel aus dem Gehäuse herausragt und die Windows-Taskleiste immer eingeschaltet ist, beschloss ich, mein eigenes Spielzeug zu bauen.

Da ich weder Ingenieur noch Programmierer bin, sondern nur ein Typ mit einem Lötkolben und etwas Autodidakt, wird dies nicht nur eine Schritt-für-Schritt-Anleitung sein, ich werde auch versuchen, mich auf das Problem zu konzentrieren Aspekte zu lösen und zu erforschen, die mich zu diesem Build geführt haben.

HAFTUNGSAUSSCHLUSS: ALLE MEINE ARBEITEN WERDEN ALS CREATIVE COMMON ATTRIBUTION-SHAREAIKE 4.0 GETEILT. ICH HABE ICH VON VIELEN BEISPIELEN IM GANZEN INTERNET INSPIRIEREN LASSEN, WENN SIE EINEN TEIL DIESER ARBEIT ALS IHREN ERKENNEN, KONTAKTIEREN SIE MICH BITTE FÜR DIE ZUTRIEBNAHME. KEINE VERLETZUNG BESTIMMT, ICH KANN JEDEN FEHLER GERNE KORRIGIEREN. DANKE SCHÖN

ZWEITER HAFTUNGSAUSSCHLUSS: MEINE ARBEIT WIRD WIE SIE GETEILT. ICH ÜBERNEHME KEINE VERANTWORTUNG FÜR SCHÄDEN, DIE AUS DER VERWENDUNG MEINER CODES ODER ANWEISUNGEN ENTSTEHEN

Lieferungen

  • Arduino Nano (oder UNO, wenn Sie möchten)
  • TFT-Display. In meinem Fall ist es ein ILI9486 / ILI9488L kompatibles 3,5" Display.
  • Temperatursensor. In mu Fall ein analoger TMP36 Temperatursensor.
  • Kabel, Drähte, Dupont-Stecker (dazu später mehr)
  • (optional) Steckbrett zum Testen
  • (optional, aber empfohlen) ein kleines Perfboard

Schritt 1: Machbarkeitsstudie (irgendwie)

Wie gesagt, ich wollte nicht und das HDMI-Display steckte in meinem PC-Gehäuse, also begann ich, in meinem eigenen Einfallsreichtum getarnt, im Internet nach ähnlichen Ideen zu suchen. Und das ist Tipp Nummer eins: Google ist dein Freund (naja, jede anständige Suchmaschine…). Wir leben in einer Welt, in der nichts mehr wirklich originell ist, aber anstatt diesen Satz mit einer negativen Bedeutung zu betrachten, könnten wir dies zu unserem Vorteil nutzen: Was immer Sie kreieren möchten, wahrscheinlich hat jemand irgendwo schon etwas Ähnliches gemacht, also wenn Sie Sie wissen nicht, wie Sie eine Idee umsetzen sollen. Die Chancen stehen gut, dass Sie dort nützliche Informationen finden. Bei der Suche im Internet ist es oft hilfreich, zwei Regeln zu beachten:

  1. Machen Sie sich nicht die Mühe, nach Seite 3 oder 4 einer Suche zu suchen, es ist fast immer Zeitverschwendung. Stattdessen
  2. Ändern Sie die Suchbegriffe, formulieren Sie die Frage einfach aus einem anderen Blickwinkel (zB: "arduino temperature sensor" -> "read temperature with arduino").

Tatsächlich ist es voll von guten Projekten, und ich gebe zu, dass ich die ersten Tage damit verbracht habe, die meisten dieser Projekte zu studieren. Aber keiner von ihnen war bereit, für mich zu gehen, da ich etwas wollte, das meinen Bedürfnissen entspricht.

Da ich etwas Individuelles machen musste, habe ich mich entschieden, mich auf die richtige Hardware zu konzentrieren und die Softwareseite für später zu belassen, da die Software immer erstellt und an die Bedürfnisse angepasst werden kann, andererseits bin ich an die Verfügbarkeit gebunden und Funktionen.

Ich wollte etwas, das auf Arduino basiert, weil ich es bereits hatte, es gut dokumentiert ist und seine Community floriert. Kein Problem hier, wie schon gesagt reichlich Informationen.

Ich wollte ein Display, das groß genug ist, um aus ein paar Metern Entfernung klar gesehen zu werden, und das würde zum Look'n'Feel meines Builds passen, dies schloss jedes Nokia- und LCD-Zeichendisplay aus. Auch OLEDs kommen nicht in Frage, da sie klein sind. Also habe ich mich für ein TFT-Farbdisplay entschieden. Kein Touchscreen erforderlich, da er sich im PC befindet. Ich habe einen 3,5 gefunden, der bereits für Arduino entwickelt wurde, ~15€ bei Amazon. Gut genug.

Jetzt, nachdem die Hardware lokalisiert wurde, konzentrierte ich mich auf die Software.

Fast alle Projekte, Arduino-Seite, sind ziemlich ähnlich. Ich muss nur den Code für die Anzeige und für das Kommunikationsprotokoll anpassen, um Daten von der Server-App zu sammeln. Computerseitig basierten die meisten Projekte auf C, C++, C#, Python und die meisten Projekte boten nur eine CLI-Schnittstelle oder einen Windows-Service-ähnlichen Server. Ich wollte stattdessen eine GUI. Ich habe in Windows nie eine C-ähnliche Sprache verwendet, ganz zu schweigen vom GUI-Gebäude. Aber ich habe vor 15 Jahren etwas Visual Basic gelernt, also habe ich es ausprobiert und die kostenlose Visual Studio-Version von Microsoft heruntergeladen.

Nachdem ich viele ähnliche Projekte studiert hatte, entschied ich mich für OpenHardwareMonitor, um alle Hardwareinformationen und RivaTuner für FPS zu erhalten, da diese kostenlos und ausreichend dokumentiert sind.

Schritt 2: Hardwaretest

Hardware-Tests
Hardware-Tests
Hardware-Tests
Hardware-Tests
Hardware-Tests
Hardware-Tests

Bevor Sie den Lötkolben einschalten und ein elektronisches Bauteil für immer in Zeit und Raum fixieren, ist es eine gute Praxis, einen Testprototyp zu bauen (Tipp Nummer zwei). Zum Glück ist es nicht mehr 1995. Heutzutage ist es ziemlich einfach, auch auf kleinen Steckbrettern ziemlich komplexe Prototypen anzuordnen. In meinem Fall hatte das TFT-Display eine Drop-In-Pin-Belegung für Arduino Uno, also ließ ich es auf meinem Arduino Uno fallen und begann mit den Beispielbibliotheken zu spielen und die Referenzhandbücher zu lesen, um die Funktionsprinzipien und Einschränkungen zu verstehen.

An diesem Punkt habe ich herausgefunden, wie man Linien und Bitmaps zeichnet und Text schreibt, also fing ich an, mit der Software-Codierung herumzufummeln und all die sekundären Sachen für später zu lassen, aber ich werde hier den Temperatursensor einschließen.

Irgendwann hatte ich einen leeren Platz auf dem Display, aber keine der Daten der PC-Sensoren waren wirklich nützlich, also beschloss ich, einen Temperatursensor für die Umgebungstemperatur in das Gehäuse zu legen. Das Display frisst fast alle Arduino-Pins auf, zum Glück ist der analoge Pin A5 ungenutzt, also habe ich einen TMP36 angebunden. Ich habe sogar ein DHT22 getestet, aber es ist für diese Anwendung viel zu übertrieben.

Es gibt viele Beispiele für den TMP36, ich habe gerade eines davon in eine Funktion kopiert. Der TMP35 hat 3 Pins, Vin geht auf 5V, GND geht auf Masse und Out geht auf Pin A5. Ich habe einen 0,1uF Keramikkondensator zwischen Vin und GND platziert. Sie sagen, es ist nötig. Wahrscheinlich ist es in diesem Fall nutzlos, aber… Ich habe sogar die analoge Arduino-Referenzspannung auf den 3,3-V-Pin eingestellt, um die Temperatur besser abzulesen. In diesem Fall immer noch nutzlos, aber…

Schritt 3: Arduino-Code

Bitte laden Sie den mitgelieferten Arduino-Code herunter und öffnen Sie ihn, um der Erklärung in diesem Schritt zu folgen. Ich habe versucht, genügend Kommentare im Code zu hinterlassen, um klar zu sein, ohne ihn zu überfluten.

Sie benötigen auf jeden Fall die MCUFRIEND_kbv- und die Adafruit GFX-Bibliotheken. Beide sind einfach über die Arduino IDE installierbar.

Das Programm kann in Abschnitte wie folgt unterteilt werden:

  1. Definiere und deklariere alle globalen Variablen und andere benötigte Dinge
  2. initialisieren Sie die Anzeige, setzen Sie die externe Referenz und zeichnen Sie die Benutzeroberfläche (all dies ist in der setup()-Funktion enthalten, da sie nur einmal ausgeführt werden muss)
  3. Daten von serieller Verbindung lesen und im Array zuweisen (Funktion loop())
  4. externe Temperatursensordaten lesen (Funktion readExtTemp())
  5. Daten auf dem Display drucken (Funktion printData())
  6. zurück zur Schleife

ABSCHNITT 1: Deklarationen und Definitionen

Im ersten Abschnitt des Codes habe ich viele Zeiger und Arrays verwendet, sodass ich viele sich wiederholende Codezeilen in kürzere FOR-Zyklen schreiben konnte. Ja, ich bin faul. Wie Sie sehen können, habe ich ein Zeigerarray deklariert und mit allen Bildern aus der Datei pics.h gefüllt. Dies ermöglichte den FOR-Zyklustrick, um alle Symbole zu zeichnen.

ABSCHNITT 2: setup(), hauptsächlich UI-Zeichnung

Ich habe mich für die Standardschrift entschieden, da sie keinen transparenten Hintergrund hat, sodass eine neue Textzeile über eine alte geschrieben werden kann, ohne sie löschen zu müssen. Die Verwendung einer anderen Schriftart hätte bedeutet, vor dem Schreiben einer neuen Zeile ein schwarzes Quadrat über den alten Text zu ziehen, was zu einem unangenehmen Flimmereffekt führte.

Nach einigen Tests bin ich zu einem guten Kompromiss zwischen Lesbarkeit und angezeigten Informationen gekommen. Ich habe das Display in zwei Spalten und 5 Zeilen unterteilt. Die linke Spalte enthält CPU- und Motherboard-Daten, einschließlich von oben nach unten CPU-Name, Temperatur, Last, RAM-Auslastung und Motherboard-Temperatur. Der rechte ist der GPU gewidmet und enthält GPU-Name, Temperatur, Last, Frames Per Second-Zähler und externen Temperatursensor.

Wie Sie im Code sehen können, habe ich mich entschieden, keine Bilder auf der SD-Karte zu verwenden, da sie sehr langsam geladen wird. Ich beschloss, alle Symbole in den PROGMEM-Speicher aufzunehmen und die Linien mit dem dedizierten drawLine()-Befehl zu zeichnen. Dies ist auch für kleine UI-Korrekturen nützlich.

In dem schwachen Versuch, der Benutzeroberfläche einen Anschein von Tiefe zu verleihen, habe ich zwei von allem (Linien, Rechtecke, Bilder) mit unterschiedlichen Farben und mit einem kleinen Versatz gezeichnet. Leider ist es nicht das Ergebnis, auf das ich gehofft habe, aber es wird den Zweck erfüllen.

Die letzten Zeilen dieser Funktion dienen zum Drucken von Platzhaltern auf dem TFT, bis das Arduino die Daten empfängt.

ABSCHNITT 3: Hauptschleife(), Datenabruf und Formatierung

Hier passiert die Magie: Daten werden seriell empfangen, der richtigen Variable zugewiesen und dann gedruckt. Um all dies mit möglichst wenigen Zeilen zu erreichen, habe ich einen switch case-Befehl und einen for cycle verwendet.

Das Kommunikationsprotokoll, das ich mitgebracht habe, ist in zwei Teile unterteilt: einen anfänglichen Handshake mit einmaliger Ausführung und den eigentlichen Datenteil.

Der Handshake wird benötigt, um die Autoconnection-Funktion beim Start des PC-Programms zu implementieren. Es geht so:

  • PC sendet den Handshake-String (in diesem Fall nur "*****;")
  • Arduino sendet eine Antwort zurück

Kinderleicht.

Der Datenteil sieht so aus: "i:xxx, yyy, zzz, aaa,;" die Bedeutung ist:

"i" ist der Index, ich habe ihn im Code ComponentSelector genannt. "i"-Werte sind:

  • i=0 - NAMEN. Die folgenden Werte sind die Namen, die in der ersten Zeile des Displays angezeigt werden. Dies wird nur einmal gesendet und auf dem Display gedruckt, ab heute ist es ziemlich schwierig, CPU und GPU zu tauschen…
  • i=1 - 1. SPALTENDATEN - die folgenden Werte werden in der linken Hälfte des Displays von oben nach unten angezeigt. In meinem Fall: CPU-Temp, CPU-Last, RAM-Auslastung, Motherboard-Temp.
  • i=2 - 2. SPALTENDATEN - wie oben, jedoch für die rechte Hälfte des Displays
  • i=3 - DRUCKBEFEHL. In diesem Fall ist die rohe serielle Zeichenfolge nur "3:;" da andere Daten nicht benötigt werden.

"xxx, yyy, zzz, aaa" sind die tatsächlichen Werte. Diese werden vom Arduino als Strings gelesen und die gesamte Formatierung wird vom PC-Programm vorgenommen. Bei i=0 sind diese Werte jeweils 14 Zeichen für die Hardwarenamen. Für i=1 oder 2 sind dies jeweils nur drei Zeichen, genug für die Anzeige von Temperaturen und Bildern pro Sekunde. Natürlich die ":", ", " und ";" Zeichen sind in diesen Feldern verboten.

Das ":" ist das Trennzeichen zwischen ComponentSelector und Werten, das ", " ist das Wertetrennzeichen und das ";" ist das Ende der Zeile

Beim Empfang der Daten speichert das Arduino diese als String, bis das ";" -Symbol empfangen wird, sucht es nach dem ":"-Symbol und verwendet es, um den Wert der KomponenteAuswahl zu erhalten. Dies wird für die Switch-Case-Funktion verwendet, um das richtige Verfahren auszuwählen. Es wird auch verwendet, um den richtigen Index im allData-Array auszuwählen.

Danach sucht der Arduino nach dem Symbol ", " und fährt fort, die Werte in das allData-Array einzugeben.

Wenn der ComponentSelector 0 ist, wird das printName-Flag auf true gesetzt. Wenn ComponentSelector 3 ist, werden die Funktionen readExtTemp() und printData() aufgerufen.

Abschnitt 4: Funktion readExtTemp()

Hier gibt es nicht viel zu sagen, es liest 32 Mal von Pin A5 und gibt den Temperaturwert als String aus. Ich bin bei den Rebellen, also benutze ich Celsius. Alles über 100 °C ist falsch und wird als "---" auf dem Display angezeigt. Bei weniger als 100 °C wird so formatiert, dass genügend Leerzeichen vorhanden sind, um 3 Zeichen auf dem Display abzudecken. Es ist möglich, den Sensor zu entfernen und wieder einzusetzen, und es wird kein seltsamer Wert angezeigt.

Abschnitt 5: printData()-Funktion

Wie immer habe ich für Zyklen verwendet, um nacheinander Sachen auf dem Display zu drucken. Wenn das Flag printNames wahr ist, werden die Namen ausgegeben, das Flag auf false gesetzt und fortgefahren.

Abschnitt 6: zurück zur Schleife

Selbsterklärend genug, würde ich sagen…

pics.h-Datei

Hier habe ich alle Icons für die Benutzeroberfläche gespeichert. Es ist möglich, den im Display enthaltenen SD-Kartenleser zu verwenden, aber ich hatte im Arduino genug Speicherplatz für meine Schwarz-Weiß-Symbole.

Ich habe sie mit dem Junior Icon Editor entworfen, da er kostenlos ist und sich gut zum Pixelmalen kleiner Icons eignet. Ich musste die Icon-Dateien (als-p.webp

Schritt 4: Visual Basic-Code

Visual Basic-Code
Visual Basic-Code

Hier ist der VB-Code

HINWEIS: Dies ist das erste Mal, dass ich ein Visual Studio-Projekt teile. Ich habe gerade die Projektordner kopiert und gezippt. Wenn dies nicht funktioniert, teilen Sie mir bitte eine bessere Möglichkeit mit, diese Art von Projekten zu teilen. Dankeschön

Wie bereits erwähnt, kann ich keine GUI in C# oder anderen Sprachen erstellen, aber ich habe vor langer Zeit einige Erfahrungen mit Visual Basic gesammelt. Ich habe die Visual Studio Community Edition (natürlich kostenlos) mit der Visual Basic-Umgebung heruntergeladen. Nun, ich musste mir viel einfallen lassen, denn das letzte Mal, als ich VB benutzte, war es die Version 2005 oder so… Aber das Internet ist wie immer voller guter Tipps.

Nachdem ich einige Schnittstellen-Zeugnisse herausgefunden habe, ist die neuere Version tatsächlich einfacher und flexibler als die alte.

Für dieses Programm wollte ich etwas mit einem Windows-Formular, das jedoch über ein Taskleistensymbol vollständig verwaltet werden kann. Ich habe das Formular eigentlich fast nur zu Debugging-Zwecken verwendet, da ich gerne Textfelder und Listen zum Lesen der Ausgabewerte der Funktionen und einige Befehlsschaltflächen zum Testen einfüge.

Das "finale" Programm ist nur ein Tray-Icon mit einem Popup-Menü, das die verschiedenen Steuerelemente anzeigt, und ein Hauptformular mit zwei Listboxen, die die an den Arduino gesendeten Daten anzeigen.

Ich habe eine Autoconnect-Funktion und eine "Start at Boot"-Funktion implementiert. Dazu später mehr.

Das Hauptprogramm ist nur eine Adaption verschiedener Beispiele und Codeschnipsel unter Verwendung der OpenHardwareMonitor-Bibliothek und der RivaTuner Shared Memory-Bibliothek.

Das Programm geht so:

  • Holen Sie sich die Daten von OpenHardwareMonitor- und RTSSSm-Bibliotheken
  • alle Daten für das Kommunikationsprotokoll vorbereiten und formatieren
  • Senden Sie die Daten an den Arduino
  • spülen und wiederholen

natürlich werden die Hardwarenamen beim Start gelesen und nur einmal gesendet.

Der FPS-Zähler wird nur aktiviert, wenn eine kompatible App verwendet wird (zB ein Spiel, ein 3D-Modellierungsprogramm usw.), ansonsten wird der Platzhalter "---" an das Display gesendet.

Ich werde nicht näher darauf eingehen, wie man die Werte aus den Bibliotheken bekommt, da es im Internet gut dokumentiert und aus dem Code einigermaßen verständlich ist. Ich möchte nur über die Probleme berichten, die Temperatur des Motherboards durch die OpenHardwareMonitor-Bibliothek (ab jetzt OHMonitor, weil das Leben zu kurz ist) anzuzeigen. Ich habe ein Asus Maximus VIII Gene MoBo, das mit einem Fu**ton-Temperatursensor auf dem Motherboard ausgestattet ist, aber OHMonitor benennt sie als Temperatursensor #1, #2 … #n UND nirgendwo ist die Temperaturposition angegeben. Also musste ich die schreckliche Asus AI Suite Software installieren, bei der die Sensoren mindestens NAMEN haben und die verschiedenen Temperaturen zwischen den beiden Programmen vergleichen. Es sieht so aus, als ob mein generischer Temperatursensor auf dem Motherboard die Nummer 2 für OHMonitor ist.

TL;DR: Sie müssen sich selbst um die richtigen Motherboard-Temperatursensoren kümmern. Der Rest ist wahrscheinlich gut zu gehen.

Dies ist jedoch nur Version 1, ich plane, dieses Gadget auf meinem anderen PC zu installieren, daher werde ich wahrscheinlich eine Möglichkeit implementieren, die Sensoren auszuwählen und vielleicht sogar die Schnittstelle auf dem Arduino unterwegs neu zu gestalten.

Die Autoconnect-Funktion

Diese Funktion ist eigentlich einfach: Wenn der PC nicht mit einem Arduino verbunden ist, wird alle x Millisekunden (basierend auf dem Timer1) diese Funktion aufgerufen. Es versucht, sich mit jedem COM-Port des PCs zu verbinden, sendet bei Erfolg den Handshake-String "*****;". Wenn die Antwort "R" ist, wird das richtige Gerät angeschlossen und das normale Verfahren wird befolgt. Andernfalls versucht es den nächsten COM-Port.

Wie Sie sehen, gibt es in dieser Funktion viele Ausnahmen. Dies liegt daran, dass ich es vollständig Plug-and-Play ohne Fehlerausgabe wollte. Durch die Behandlung der Ausnahmen konnte ich das vollständige Fehlen des externen Geräts ignorieren und das Gerät jederzeit Hotplug und Hotunplug durchführen, ohne einen Breaking-Fehler für das Programm zu generieren.

Die Start At Boot-Funktion

Ich wollte, dass das Programm beim Booten startet. Ganz einfach, sagst du. Legen Sie einen Link in den entsprechenden Ordner, sagen Sie. Aber nein. Aufgrund der OHMonitor- und RTSS-Bibliotheken benötigen wir die Ausführungsebene des Administrators, um Informationen zu sammeln. Dies bedeutet, dass bei jedem Start dieser App der äußerst nervige UAC-Bildschirm angezeigt wird. Auf keinen Fall. Also habe ich das Skript von Matthew Wai (Link hier) angepasst, um einen stillen Start beim Booten zu erreichen. Ich habe das Skript einfach in die Resources1-Datei kopiert, in mehrere Teile aufgeteilt, dann eine Subroutine implementiert, die eine Windows-Aufgabendatei erstellt (oder entfernt), angepasst an den aktuellen Speicherort der Programmausführung und dergleichen.

Das Taskleistensymbol

Dank der NotifyIcon- und ContextMenu-Objekte konnte ich eine einfache und fette Möglichkeit zur Steuerung der App implementieren. Klicken Sie einfach mit der rechten Maustaste auf das Tray-Icon und das Menü erscheint. Es gibt diese Optionen:

  • Beim Booten starten: Sie können es aktivieren und deaktivieren, um die Funktion zum Starten beim Booten zu aktivieren oder zu deaktivieren
  • Autoconnect: wie oben, jedoch mit der Autoconnect-Funktion
  • Verbinden/Trennen: Es verarbeitet die Verbindung. Funktioniert nicht mit aktivierter Autoconnection
  • Aktualisierungszeit: Zeigt ein Dropdown-Untermenü an, Sie können die Aktualisierungszeit von 1 bis 10 Sekunden auswählen
  • Maximieren: öffnet das Hauptfenster. Wie ein Doppelklick auf das Symbol
  • Exit: selbsterklärend

Kompilieren der Software

Um die Software zu kompilieren, müssen Sie wahrscheinlich einen Verweis auf die nicht im Code enthaltenen Bibliotheken herunterladen und hinzufügen.

Die OpenHardwareMonitor-Bibliothek finden Sie hier. Sie müssen die Software herunterladen, die ZIP-Datei öffnen und die Datei OpenHardwareMonitorLib. DLL in den Projektordner kopieren.

Hier ist der Link für die RTSSharedMemoryNET-Bibliothek, die Sie für Ihre Architektur herunterladen und kompilieren müssen, dann die RTSS[TL;DR]moryNET. DLL in Ihren Projektordner kopieren.

Jetzt müssen Sie Ihrem Code eine Referenz hinzufügen, Anweisungen hier

Stellen Sie nur sicher, dass Sie sowohl das RTSS[TL;DR]moryNET- als auch das PCHwMon-Serverprojekt für dieselbe Architektur kompilieren.

Ich habe ein fertiges Setup-Programm mitgeliefert, damit Sie das Ganze installieren können, ohne mit Visual Basic herumzufummeln. Es ist für x86 kompiliert und funktioniert sowohl auf x86- als auch auf x64-Architekturen. Es erfordert das. NET Framework 4.7.2 zum Ausführen.

In jedem Fall müssen Sie RivaTuner installieren. Sie finden es hier als eigenständige App oder Sie installieren Msi Afterburner, der den RTServer enthalten sollte.

Schritt 5: Endgültige Hardwareimplementierung