{"id":10585,"date":"2009-05-08T20:57:52","date_gmt":"2009-05-08T19:57:52","guid":{"rendered":"http:\/\/funrecycler.com\/?p=1247"},"modified":"2009-05-08T20:57:52","modified_gmt":"2009-05-08T19:57:52","slug":"vbnet-coretemp-werte-in-der-eigenen-anwendung","status":"publish","type":"post","link":"https:\/\/funrecycler.com\/index.php\/2009\/05\/08\/vbnet-coretemp-werte-in-der-eigenen-anwendung\/","title":{"rendered":"VB.NET &#8211; CoreTemp Werte in der eigenen Anwendung"},"content":{"rendered":"<p><a rel=\"attachment wp-att-1288\" href=\"http:\/\/funrecycler.com\/?attachment_id=1288\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1288\" style=\"margin: 4px;\" title=\"cpu_info\" src=\"http:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/cpu_info.png\" alt=\"cpu_info\" width=\"244\" height=\"152\" \/><\/a>Das n\u00fctzliche Tool CoreTemp hatte ich bereits in dem Beitrag &#8222;<a title=\"coretemp\" href=\"http:\/\/funrecycler.com\/?p=230\" target=\"_blank\" rel=\"noopener\">Tools die man Braucht &#8211; Teil6 &#8211; CoreTemp<\/a>&#8220; vorgestellt. CoreTemp verf\u00fcgt \u00fcber \u00fcber eine Loogingfunktion um die Temperaturen der einzelnen Cores auszulesen und in einer CSV zu dokumentieren. M\u00f6chte man aber nun in seiner eigenen Anwendung die CPU\/Core Temperatur veranschaulichen, geht dies zum einen \u00fcber WMI, welches aber keine vern\u00fcnftigen Werte liefert. Der andere Weg f\u00fchrt \u00fcber die GetCoreTempInfoNET.dll welche \u00fcber die <a title=\"cortemp wbsite\" href=\"http:\/\/www.alcpu.com\/CoreTemp\/developers.html\" target=\"_blank\" rel=\"noopener\">CoreTemp\/Developer Website <\/a>bezogen werden kann. Diese DLL kann in VisualStudio oder SharpDevelop eingebunden werden um so auf die enthalten Funktionen zugeiffen zu k\u00f6nnen. Wie dies geht werde ich in einen kleinen Quellcode Beispiel erl\u00e4utern.<br \/>\n<!--more--><strong>Einbinden der DLL in SharpDevelop<\/strong><br \/>\nIn einen Neuerstellten Projekt \u00f6ffnet man den Referenzdialog, dieser ist \u00fcber Men\u00fc <strong>Projekt &gt; Referenz hinzuf\u00fcgen<\/strong> erreichbar. Mit Klick auf &#8222;<strong>Suchen<\/strong>&#8220; im Karteireiter &#8222;<strong>.NET Assemblybrowser<\/strong>&#8220; w\u00e4hlt man die GetCoreTempInfoNET.dll aus. Mit klick auf &#8222;<strong>OK<\/strong>&#8220; ist die Datei eingebunden und kann genutzt werden.<br \/>\n<a rel=\"attachment wp-att-1249\" href=\"http:\/\/funrecycler.com\/?attachment_id=1249\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1249\" title=\"sharp_ref\" src=\"http:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/sharp_ref.png\" alt=\"sharp_ref\" width=\"462\" height=\"341\" \/><\/a><br \/>\n<strong>Quellcode<\/strong><br \/>\nZuerst ben\u00f6tigt man ein paar Variablen und erstellt den Namespace f\u00fcr die DLL<\/p>\n<pre lang=\"VB\">Imports GetCoreTempInfoNET<\/pre>\n<p><\/p>\n<pre lang=\"VB\">Public cpu_typ As String\nPublic cpu_speed As String\nPublic cpu_vid As String\nPublic cpu_phy_count As String\nPublic cpu_core_count As String\nPublic cpu_core_load(3) As String\nPublic cpu_core_temp(3) As String\nPublic cpu_fsb As String\nPublic cpu_multi As String<\/pre>\n<p>Desweiteren wird ein Timer ben\u00f6tigt der die Temperatur nach einer bestimmten Zeit aktualisiert.<br \/>\n<strong>Class MainForm<\/strong><\/p>\n<pre lang=\"VB\">Public CTInfo As CoreTempInfo\nPublic Sub New()\n    Me.InitializeComponent()\n    CTInfo = New CoreTempInfo()\n    AddHandler CTInfo.ReportError, AddressOf CTInfo_ReportError\nEnd Sub<\/pre>\n<p>CTInfo erstellen, Errorhandler erstellen<br \/>\n<strong>die Prozedur<\/strong><\/p>\n<pre lang=\"VB\">Public Sub get_coretemp(ByVal sender As Object, ByVal e As ElapsedEventArgs)\n        'CoreTemp Daten aus dem Speicher holen\n        Dim bReadSuccess As Boolean = CTInfo.GetData()\n        'wenn erfolgreich dann Daten lesen\n        und in Variablen speichern\n        If bReadSuccess Then\n            Dim index As UInteger\n            'CPU Daten in speichern\n            cpu_typ = CTInfo.GetCPUName\n            cpu_speed = CTInfo.GetCPUSpeed &amp; \" MHz \"\n            cpu_vid = CTInfo.GetVID\n            cpu_phy_count = CTInfo.GetCPUCount\n            cpu_core_count = CTInfo.GetCoreCount\n            cpu_multi = CTInfo.GetMultiplier\n            cpu_fsb = CTInfo.GetFSBSpeed\n            cpu_max_temp(0) = CTInfo.GetTjMax(0)\n            cpu_max_temp(1) = CTInfo.GetTjMax(1)\n            cpu_max_temp(2) = CTInfo.GetTjMax(2)\n            cpu_max_temp(3) = CTInfo.GetTjMax(3)\n            'einzelne Temperaturen der Cores lesen\n            For i As UInteger = 0 To CTInfo.GetCPUCount - 1\n                For g As UInteger = 0 To CTInfo.GetCoreCount - 1\n                    index = g + (i * CTInfo.GetCoreCount)\n                    If CTInfo.IsDistanceToTjMax Then\n                        cpu_core_temp(index) = _\n                        CTInfo.GetTemp(index)\n                        cpu_core_load(index) = _\n                        CTInfo.GetCoreLoad(index)\n                    Else\n                        cpu_core_temp(index) = _\n                        CTInfo.GetTemp(index)\n                        cpu_core_load(index) = _\n                        CTInfo.GetCoreLoad(index)\n                    End If\n                Next\n            Next\n        Else\n            'wenn die CPU nicht erkannt\n             werden konnte\n            messagebox.Show(\"Fehler Name: _\n             \" + CTInfo.GetLastError().ToString())\n            messagebox.Show(\"Fehler: _\n            \" + CInt(CTInfo.GetLastError).ToString())\n            messagebox.Show(\"Fehler Nachricht: _\n            \" + CTInfo.GetErrorMessage(CTInfo.GetLastError))\n            Timer_cpu.enabled = False\n        End If\nEnd Sub<\/pre>\n<p><strong>Timer<\/strong><\/p>\n<pre lang=\"VB\">Sub Timer_cpuTick(sender As Object, e As EventArgs)\n      'Prozedur aufrufen\n      get_coretemp(Nothing, Nothing)\n      'Temperaturen an Label \u00fcbergeben\n      lbl_core_1.Text = cpu_core_temp(0)\n      lbl_core_2.text = cpu_core_temp(1)\n      lbl_core_3.text = cpu_core_temp(2)\n      lbl_core_4.text = cpu_core_temp(3)\n      'Auslastung an Label \u00fcbergeben\n      lbl_cpu_load_1.Text = cpu_core_load(0)\n      lbl_cpu_load_2.Text = cpu_core_load(1)\n      lbl_cpu_load_3.Text = cpu_core_load(2)\n      lbl_cpu_load_4.Text = cpu_core_load(3)\n      'weitere Daten \u00fcbergeben\n      lbl_cpu_name.text = cpu_typ\n      lbl_fsb.Text = cpu_fsb\n      lbl_multi.Text = cpu_multi\n      lbl_speed.Text = cpu_speed\n      lbl_vcore.Text = cpu_vid\nEnd Sub<\/pre>\n<p>Der Intervall des Timers kann frei nach belieben gew\u00e4hlt werden. Eine Sekunde macht sich hier ganz gut.<br \/>\n<strong>Fehlerbehandlung<\/strong><\/p>\n<pre lang=\"VB\">Public Sub CTInfo_ReportError(ByVal ErrCode As ErrorCodes, _\nByVal ErrMsg As String)\n       Message.show(ErrMsg)\nEnd Sub<\/pre>\n<p>Hinweis: CoreTemp mu\u00df zum gleichen Zeitpunkt laufen wie Ihre Anwendung um die Daten direkt von CoreTemp zulesen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das n\u00fctzliche Tool CoreTemp hatte ich bereits in dem Beitrag &#8222;Tools die man Braucht &#8211; Teil6 &#8211; CoreTemp&#8220;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,14],"tags":[633,638,1133,2353],"class_list":["post-10585","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-programmieren","tag-coretemp","tag-cpu-temperatur-mit-vbnet-auslesen","tag-getcoretempinfonetdll","tag-sharpdevelop"],"_links":{"self":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/10585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/comments?post=10585"}],"version-history":[{"count":0,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/10585\/revisions"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=10585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=10585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=10585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}