{"id":1271,"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 style=\"overflow-wrap:anywhere\"><a href=\"https:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/m-cd9c1403acf84fd1.png\" style=\"overflow-wrap:anywhere\"><img decoding=\"async\" src=\"https:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/m-cd9c1403acf84fd1.png\" alt=\"cpu_info\" style=\"float:left;margin:0.5em 1em 0.5em 0;margin-top:4px;margin-right:4px;margin-bottom:4px;margin-left:4px;width:244px;height:152px;max-width:100%;height:auto\" \/><\/a>Das n\u00fctzliche Tool CoreTemp hatte ich bereits in dem Beitrag &quot;<a href=\"https:\/\/funrecycler.com\/index.php\/2009\/03\/22\/tools-die-man-braucht-teil-6-coretemp\/\" style=\"overflow-wrap:anywhere\">Tools die man Braucht &#8211; Teil6 &#8211; CoreTemp<\/a>&quot; 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 href=\"http:\/\/www.alcpu.com\/CoreTemp\/developers.html\" style=\"overflow-wrap:anywhere\">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. <\/p>\n<p><!--more--><\/p>\n<p style=\"overflow-wrap:anywhere\"><strong>Einbinden der DLL in SharpDevelop<\/strong> In einen Neuerstellten Projekt \u00f6ffnet man den Referenzdialog, dieser ist \u00fcber Men\u00fc <strong>Projekt &gt; Referenz hinzuf\u00fcgen<\/strong> erreichbar. Mit Klick auf &quot;<strong>Suchen<\/strong>&quot; im Karteireiter &quot;<strong>.NET Assemblybrowser<\/strong>&quot; w\u00e4hlt man die GetCoreTempInfoNET.dll aus. Mit klick auf &quot;<strong>OK<\/strong>&quot; ist die Datei eingebunden und kann genutzt werden. <a href=\"https:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/m-77a6155d41e6b669.png\" style=\"overflow-wrap:anywhere\"><img decoding=\"async\" src=\"https:\/\/funrecycler.com\/wp-content\/uploads\/2009\/05\/m-77a6155d41e6b669.png\" alt=\"sharp_ref\" style=\"width:462px;height:341px;max-width:100%;height:auto\" \/><\/a> <strong>Quellcode<\/strong> Zuerst ben\u00f6tigt man ein paar Variablen und erstellt den Namespace f\u00fcr die DLL <\/p>\n<pre><code>Imports GetCoreTempInfoNET<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> <\/p>\n<pre><code>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<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Desweiteren wird ein Timer ben\u00f6tigt der die Temperatur nach einer bestimmten Zeit aktualisiert. <strong>Class MainForm<\/strong> <\/p>\n<pre><code>Public CTInfo As CoreTempInfo\nPublic Sub New()\n    Me.InitializeComponent()\n    CTInfo = New CoreTempInfo()\n    AddHandler CTInfo.ReportError, AddressOf CTInfo_ReportError\nEnd Sub<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> CTInfo erstellen, Errorhandler erstellen <strong>die Prozedur<\/strong> <\/p>\n<pre><code>Public Sub get_coretemp(ByVal sender As Object, ByVal e As ElapsedEventArgs)\n        &#x27;CoreTemp Daten aus dem Speicher holen\n        Dim bReadSuccess As Boolean = CTInfo.GetData()\n        &#x27;wenn erfolgreich dann Daten lesen\n        und in Variablen speichern\n        If bReadSuccess Then\n            Dim index As UInteger\n            &#x27;CPU Daten in speichern\n            cpu_typ = CTInfo.GetCPUName\n            cpu_speed = CTInfo.GetCPUSpeed &amp; &quot; MHz &quot;\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            &#x27;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            &#x27;wenn die CPU nicht erkannt\n             werden konnte\n            messagebox.Show(&quot;Fehler Name: _\n             &quot; + CTInfo.GetLastError().ToString())\n            messagebox.Show(&quot;Fehler: _\n            &quot; + CInt(CTInfo.GetLastError).ToString())\n            messagebox.Show(&quot;Fehler Nachricht: _\n            &quot; + CTInfo.GetErrorMessage(CTInfo.GetLastError))\n            Timer_cpu.enabled = False\n        End If\nEnd Sub<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> <strong>Timer<\/strong> <\/p>\n<pre><code>Sub Timer_cpuTick(sender As Object, e As EventArgs)\n      &#x27;Prozedur aufrufen\n      get_coretemp(Nothing, Nothing)\n      &#x27;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      &#x27;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      &#x27;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<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Der Intervall des Timers kann frei nach belieben gew\u00e4hlt werden. Eine Sekunde macht sich hier ganz gut. <strong>Fehlerbehandlung<\/strong> <\/p>\n<pre><code>Public Sub CTInfo_ReportError(ByVal ErrCode As ErrorCodes, _\nByVal ErrMsg As String)\n       Message.show(ErrMsg)\nEnd Sub<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> 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 &quot;Tools die man Braucht &#8211; Teil6 &#8211; CoreTemp&quot;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,5],"tags":[469,470,471,118],"class_list":["post-1271","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\/1271","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=1271"}],"version-history":[{"count":1,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1271\/revisions"}],"predecessor-version":[{"id":2285,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1271\/revisions\/2285"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=1271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=1271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=1271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}