Merge pull request #1 from Darren80/Dev

Optimisations
This commit is contained in:
Darren Ohonba - Evans
2024-05-19 21:34:55 +01:00
committed by GitHub
14 changed files with 9908 additions and 323 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8.1"/>
</startup> </startup>
</configuration> </configuration>

View File

@@ -8,10 +8,11 @@
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<RootNamespace>AsusFanControl</RootNamespace> <RootNamespace>AsusFanControl</RootNamespace>
<AssemblyName>AsusFanControl</AssemblyName> <AssemblyName>AsusFanControl</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -41,6 +42,7 @@
<LangVersion>7.3</LangVersion> <LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit> <Prefer32Bit>true</Prefer32Bit>
<WarningLevel>5</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>..\bin\x64\Release\</OutputPath> <OutputPath>..\bin\x64\Release\</OutputPath>
@@ -70,6 +72,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
<None Include="Directory.Build.props" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="AsusWinIO64.dll"> <Content Include="AsusWinIO64.dll">

View File

@@ -0,0 +1,5 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<configSections> <configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="AsusFanControlGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> <section name="AsusFanControlGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup> </sectionGroup>
</configSections> </configSections>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8.1"/>
</startup> </startup>
<userSettings> <userSettings>
<AsusFanControlGUI.Properties.Settings> <AsusFanControlGUI.Properties.Settings>
@@ -19,6 +19,12 @@
<setting name="forbidUnsafeSettings" serializeAs="String"> <setting name="forbidUnsafeSettings" serializeAs="String">
<value>True</value> <value>True</value>
</setting> </setting>
<setting name="fanControlState" serializeAs="String">
<value>Off</value>
</setting>
<setting name="FanCurvePoints" serializeAs="String">
<value>20,1-60,1-61,20-70,20-71,30-80,55</value>
</setting>
</AsusFanControlGUI.Properties.Settings> </AsusFanControlGUI.Properties.Settings>
</userSettings> </userSettings>
</configuration> </configuration>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -8,7 +9,7 @@
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>AsusFanControlGUI</RootNamespace> <RootNamespace>AsusFanControlGUI</RootNamespace>
<AssemblyName>AsusFanControlGUI</AssemblyName> <AssemblyName>AsusFanControlGUI</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
@@ -28,6 +29,9 @@
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted> <PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled> <BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -54,9 +58,10 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion> <LangVersion>8</LangVersion>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit> <Prefer32Bit>true</Prefer32Bit>
<WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>..\bin\x64\Release\</OutputPath> <OutputPath>..\bin\x64\Release\</OutputPath>
@@ -64,12 +69,12 @@
<Optimize>true</Optimize> <Optimize>true</Optimize>
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion> <LangVersion>8</LangVersion>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit> <Prefer32Bit>true</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>propeller.ico</ApplicationIcon> <ApplicationIcon>3038.7-fan-icon-iconbunny_1_.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ManifestCertificateThumbprint>3896F9A71C1385218E0E436CCCE1201230675364</ManifestCertificateThumbprint> <ManifestCertificateThumbprint>3896F9A71C1385218E0E436CCCE1201230675364</ManifestCertificateThumbprint>
@@ -84,17 +89,150 @@
<SignManifests>true</SignManifests> <SignManifests>true</SignManifests>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Deployment" /> <Reference Include="System.Deployment" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Form1.cs"> <Compile Include="Form1.cs">
@@ -116,8 +254,10 @@
<Compile Include="Properties\Resources.Designer.cs"> <Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile> </Compile>
<None Include="AsusFanControlGUI_TemporaryKey.pfx" /> <None Include="AsusFanControlGUI_TemporaryKey.pfx" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput> <LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -138,6 +278,7 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="3038.7-fan-icon-iconbunny_1_.ico" />
<Content Include="propeller.ico" /> <Content Include="propeller.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -153,4 +294,14 @@
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Fody.6.5.5\build\Fody.targets" Condition="Exists('..\packages\Fody.6.5.5\build\Fody.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Fody.6.5.5\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.5.5\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
</Target>
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
</Project> </Project>

View File

@@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura />
</Weavers>

View File

@@ -28,6 +28,7 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.trackBarFanSpeed = new System.Windows.Forms.TrackBar(); this.trackBarFanSpeed = new System.Windows.Forms.TrackBar();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
@@ -46,17 +47,40 @@
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.pictureBoxFanCurve = new System.Windows.Forms.PictureBox(); this.pictureBoxFanCurve = new System.Windows.Forms.PictureBox();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.fanControl = new System.Windows.Forms.RadioButton(); this.fanControl = new System.Windows.Forms.RadioButton();
this.fanCurveControl = new System.Windows.Forms.RadioButton(); this.fanCurve = new System.Windows.Forms.RadioButton();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.autoRefresh = new System.Windows.Forms.CheckBox();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.label6 = new System.Windows.Forms.Label();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label9 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.numericUpDown2 = new System.Windows.Forms.NumericUpDown();
this.label7 = new System.Windows.Forms.Label();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.label3 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).BeginInit();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// trackBarFanSpeed // trackBarFanSpeed
// //
this.trackBarFanSpeed.Location = new System.Drawing.Point(17, 54); this.trackBarFanSpeed.Location = new System.Drawing.Point(17, 94);
this.trackBarFanSpeed.Margin = new System.Windows.Forms.Padding(4); this.trackBarFanSpeed.Margin = new System.Windows.Forms.Padding(4);
this.trackBarFanSpeed.Maximum = 100; this.trackBarFanSpeed.Maximum = 100;
this.trackBarFanSpeed.Name = "trackBarFanSpeed"; this.trackBarFanSpeed.Name = "trackBarFanSpeed";
@@ -65,11 +89,12 @@
this.trackBarFanSpeed.Value = 100; this.trackBarFanSpeed.Value = 100;
this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp); this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp);
this.trackBarFanSpeed.MouseCaptureChanged += new System.EventHandler(this.trackBarFanSpeed_MouseCaptureChanged); this.trackBarFanSpeed.MouseCaptureChanged += new System.EventHandler(this.trackBarFanSpeed_MouseCaptureChanged);
this.trackBarFanSpeed.MouseUp += new System.Windows.Forms.MouseEventHandler(this.trackBarFanSpeed_MouseUp);
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 401); this.label1.Location = new System.Drawing.Point(13, 509);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(88, 16); this.label1.Size = new System.Drawing.Size(88, 16);
@@ -79,7 +104,7 @@
// labelValue // labelValue
// //
this.labelValue.AutoSize = true; this.labelValue.AutoSize = true;
this.labelValue.Location = new System.Drawing.Point(118, 401); this.labelValue.Location = new System.Drawing.Point(118, 509);
this.labelValue.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelValue.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelValue.Name = "labelValue"; this.labelValue.Name = "labelValue";
this.labelValue.Size = new System.Drawing.Size(11, 16); this.labelValue.Size = new System.Drawing.Size(11, 16);
@@ -89,7 +114,7 @@
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(50, 437); this.label2.Location = new System.Drawing.Point(50, 575);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(85, 16); this.label2.Size = new System.Drawing.Size(85, 16);
@@ -98,7 +123,7 @@
// //
// button1 // button1
// //
this.button1.Location = new System.Drawing.Point(13, 431); this.button1.Location = new System.Drawing.Point(13, 569);
this.button1.Margin = new System.Windows.Forms.Padding(4); this.button1.Margin = new System.Windows.Forms.Padding(4);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(29, 28); this.button1.Size = new System.Drawing.Size(29, 28);
@@ -110,7 +135,7 @@
// labelRPM // labelRPM
// //
this.labelRPM.AutoSize = true; this.labelRPM.AutoSize = true;
this.labelRPM.Location = new System.Drawing.Point(153, 437); this.labelRPM.Location = new System.Drawing.Point(153, 575);
this.labelRPM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelRPM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelRPM.Name = "labelRPM"; this.labelRPM.Name = "labelRPM";
this.labelRPM.Size = new System.Drawing.Size(11, 16); this.labelRPM.Size = new System.Drawing.Size(11, 16);
@@ -120,7 +145,7 @@
// labelCPUTemp // labelCPUTemp
// //
this.labelCPUTemp.AutoSize = true; this.labelCPUTemp.AutoSize = true;
this.labelCPUTemp.Location = new System.Drawing.Point(185, 473); this.labelCPUTemp.Location = new System.Drawing.Point(185, 611);
this.labelCPUTemp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labelCPUTemp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelCPUTemp.Name = "labelCPUTemp"; this.labelCPUTemp.Name = "labelCPUTemp";
this.labelCPUTemp.Size = new System.Drawing.Size(11, 16); this.labelCPUTemp.Size = new System.Drawing.Size(11, 16);
@@ -129,7 +154,7 @@
// //
// button2 // button2
// //
this.button2.Location = new System.Drawing.Point(13, 467); this.button2.Location = new System.Drawing.Point(13, 605);
this.button2.Margin = new System.Windows.Forms.Padding(4); this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2"; this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(29, 28); this.button2.Size = new System.Drawing.Size(29, 28);
@@ -141,7 +166,7 @@
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(50, 473); this.label4.Location = new System.Drawing.Point(50, 611);
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(116, 16); this.label4.Size = new System.Drawing.Size(116, 16);
@@ -156,7 +181,7 @@
this.toolStripMenuItemCheckForUpdates}); this.toolStripMenuItemCheckForUpdates});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(510, 28); this.menuStrip1.Size = new System.Drawing.Size(595, 28);
this.menuStrip1.TabIndex = 10; this.menuStrip1.TabIndex = 10;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@@ -195,17 +220,17 @@
// label5 // label5
// //
this.label5.AutoSize = true; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(341, 28); this.label5.Location = new System.Drawing.Point(349, 67);
this.label5.Name = "label5"; this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(76, 16); this.label5.Size = new System.Drawing.Size(61, 16);
this.label5.TabIndex = 13; this.label5.TabIndex = 13;
this.label5.Text = "PWM value"; this.label5.Text = "XX% Fan";
// //
// pictureBoxFanCurve // pictureBoxFanCurve
// //
this.pictureBoxFanCurve.Location = new System.Drawing.Point(13, 184); this.pictureBoxFanCurve.Location = new System.Drawing.Point(13, 200);
this.pictureBoxFanCurve.Name = "pictureBoxFanCurve"; this.pictureBoxFanCurve.Name = "pictureBoxFanCurve";
this.pictureBoxFanCurve.Size = new System.Drawing.Size(477, 203); this.pictureBoxFanCurve.Size = new System.Drawing.Size(565, 258);
this.pictureBoxFanCurve.TabIndex = 0; this.pictureBoxFanCurve.TabIndex = 0;
this.pictureBoxFanCurve.TabStop = false; this.pictureBoxFanCurve.TabStop = false;
this.pictureBoxFanCurve.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBoxFanCurve_Paint); this.pictureBoxFanCurve.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBoxFanCurve_Paint);
@@ -217,44 +242,241 @@
// //
// groupBox1 // groupBox1
// //
this.groupBox1.Controls.Add(this.radioButton1);
this.groupBox1.Controls.Add(this.fanControl); this.groupBox1.Controls.Add(this.fanControl);
this.groupBox1.Controls.Add(this.fanCurveControl); this.groupBox1.Controls.Add(this.fanCurve);
this.groupBox1.Controls.Add(this.trackBarFanSpeed); this.groupBox1.Controls.Add(this.trackBarFanSpeed);
this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Location = new System.Drawing.Point(12, 32); this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(486, 146); this.groupBox1.Size = new System.Drawing.Size(566, 182);
this.groupBox1.TabIndex = 14; this.groupBox1.TabIndex = 14;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "groupBox1"; this.groupBox1.Text = "groupBox1";
// //
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Checked = true;
this.radioButton1.Location = new System.Drawing.Point(20, 31);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(72, 20);
this.radioButton1.TabIndex = 16;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "Turn off";
this.radioButton1.UseVisualStyleBackColor = true;
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
//
// fanControl // fanControl
// //
this.fanControl.AutoSize = true; this.fanControl.AutoSize = true;
this.fanControl.Location = new System.Drawing.Point(20, 27); this.fanControl.Location = new System.Drawing.Point(20, 67);
this.fanControl.Name = "fanControl"; this.fanControl.Name = "fanControl";
this.fanControl.Size = new System.Drawing.Size(137, 20); this.fanControl.Size = new System.Drawing.Size(137, 20);
this.fanControl.TabIndex = 15; this.fanControl.TabIndex = 15;
this.fanControl.Text = "Turn on fan control"; this.fanControl.Text = "Turn on fan control";
this.fanControl.UseVisualStyleBackColor = true; this.fanControl.UseVisualStyleBackColor = true;
this.fanControl.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged); this.fanControl.CheckedChanged += new System.EventHandler(this.fanControl_CheckedChanged);
// //
// fanCurveControl // fanCurve
// //
this.fanCurveControl.AutoSize = true; this.fanCurve.AutoSize = true;
this.fanCurveControl.Location = new System.Drawing.Point(20, 108); this.fanCurve.Location = new System.Drawing.Point(20, 148);
this.fanCurveControl.Name = "fanCurveControl"; this.fanCurve.Name = "fanCurve";
this.fanCurveControl.Size = new System.Drawing.Size(130, 20); this.fanCurve.Size = new System.Drawing.Size(130, 20);
this.fanCurveControl.TabIndex = 14; this.fanCurve.TabIndex = 14;
this.fanCurveControl.Text = "Turn on fan curve"; this.fanCurve.Text = "Turn on fan curve";
this.fanCurveControl.UseVisualStyleBackColor = true; this.fanCurve.UseVisualStyleBackColor = true;
this.fanCurveControl.CheckedChanged += new System.EventHandler(this.fanCurve_CheckedChanged); this.fanCurve.CheckedChanged += new System.EventHandler(this.fanCurve_CheckedChanged);
//
// button3
//
this.button3.Location = new System.Drawing.Point(553, 464);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(25, 23);
this.button3.TabIndex = 22;
this.button3.Text = "S";
this.toolTip1.SetToolTip(this.button3, "Set");
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(12, 464);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(35, 23);
this.button4.TabIndex = 23;
this.button4.Text = "R";
this.toolTip1.SetToolTip(this.button4, "Reset");
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// autoRefresh
//
this.autoRefresh.AutoSize = true;
this.autoRefresh.Checked = true;
this.autoRefresh.CheckState = System.Windows.Forms.CheckState.Checked;
this.autoRefresh.Location = new System.Drawing.Point(12, 542);
this.autoRefresh.Name = "autoRefresh";
this.autoRefresh.Size = new System.Drawing.Size(106, 20);
this.autoRefresh.TabIndex = 15;
this.autoRefresh.Text = "Auto Refresh";
this.autoRefresh.UseVisualStyleBackColor = true;
//
// notifyIcon1
//
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "notifyIcon1";
this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
//
// contextMenuStrip1
//
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openToolStripMenuItem,
this.closeToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(115, 52);
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(114, 24);
this.openToolStripMenuItem.Text = "Open";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
//
// closeToolStripMenuItem
//
this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
this.closeToolStripMenuItem.Size = new System.Drawing.Size(114, 24);
this.closeToolStripMenuItem.Text = "Close";
this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(6, 29);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(74, 16);
this.label6.TabIndex = 17;
this.label6.Text = "Hysteresis:";
//
// numericUpDown1
//
this.numericUpDown1.Location = new System.Drawing.Point(153, 23);
this.numericUpDown1.Maximum = new decimal(new int[] {
10,
0,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(41, 22);
this.numericUpDown1.TabIndex = 18;
this.numericUpDown1.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.numericUpDown2);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.numericUpDown1);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Location = new System.Drawing.Point(364, 512);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(214, 87);
this.groupBox2.TabIndex = 19;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Advanced";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(194, 28);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(14, 16);
this.label9.TabIndex = 24;
this.label9.Text = "s";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(183, 62);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(25, 16);
this.label8.TabIndex = 23;
this.label8.Text = "ms";
//
// numericUpDown2
//
this.numericUpDown2.Increment = new decimal(new int[] {
500,
0,
0,
0});
this.numericUpDown2.Location = new System.Drawing.Point(120, 56);
this.numericUpDown2.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.numericUpDown2.Minimum = new decimal(new int[] {
1000,
0,
0,
0});
this.numericUpDown2.Name = "numericUpDown2";
this.numericUpDown2.Size = new System.Drawing.Size(63, 22);
this.numericUpDown2.TabIndex = 22;
this.numericUpDown2.Value = new decimal(new int[] {
3000,
0,
0,
0});
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(7, 58);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(99, 16);
this.label7.TabIndex = 21;
this.label7.Text = "Update Speed:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(371, 617);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(44, 16);
this.label3.TabIndex = 20;
this.label3.Text = "label3";
this.label3.Visible = false;
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(53, 464);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(494, 22);
this.textBox1.TabIndex = 21;
// //
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(510, 523); this.ClientSize = new System.Drawing.Size(595, 650);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.autoRefresh);
this.Controls.Add(this.pictureBoxFanCurve); this.Controls.Add(this.pictureBoxFanCurve);
this.Controls.Add(this.labelCPUTemp); this.Controls.Add(this.labelCPUTemp);
this.Controls.Add(this.button2); this.Controls.Add(this.button2);
@@ -270,14 +492,19 @@
this.MainMenuStrip = this.menuStrip1; this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(4); this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "Form1"; this.Name = "Form1";
this.Text = "Asus Fan Control"; this.Text = "AsusFanControlEnhanced";
this.Load += new System.EventHandler(this.Form1_Load); this.Resize += new System.EventHandler(this.Form1_Resize);
((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).EndInit();
this.menuStrip1.ResumeLayout(false); this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout(); this.menuStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxFanCurve)).EndInit();
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout(); this.groupBox1.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@@ -302,8 +529,27 @@
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label5;
private System.Windows.Forms.PictureBox pictureBoxFanCurve; private System.Windows.Forms.PictureBox pictureBoxFanCurve;
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton fanCurveControl; private System.Windows.Forms.RadioButton fanCurve;
private System.Windows.Forms.RadioButton fanControl; private System.Windows.Forms.RadioButton fanControl;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.CheckBox autoRefresh;
private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.NumericUpDown numericUpDown1;
private System.Windows.Forms.GroupBox groupBox2;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.NumericUpDown numericUpDown2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
} }
} }

View File

@@ -2,20 +2,23 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Security.AccessControl;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using AsusFanControl; using AsusFanControl;
using AsusFanControlGUI.Properties;
using static System.Windows.Forms.VisualStyles.VisualStyleElement; using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace AsusFanControlGUI namespace AsusFanControlGUI
{ {
public partial class Form1 : Form public partial class Form1 : Form
{ {
private System.Windows.Forms.Timer timer; private readonly Random rnd = new Random();
AsusControl asusControl = new AsusControl(); readonly AsusControl asusControl = new AsusControl();
int fanSpeed = 0; int fanSpeed = 0;
public Form1() public Form1()
@@ -23,27 +26,76 @@ namespace AsusFanControlGUI
InitializeComponent(); InitializeComponent();
AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit);
toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit; if (Debugger.IsAttached)
toolStripMenuItemForbidUnsafeSettings.Checked = Properties.Settings.Default.forbidUnsafeSettings; Settings.Default.Reset();
//trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
init();
} }
private void Form1_Load(object sender, EventArgs e) private async void init()
{ {
// Create and start the timer if (IsHandleCreated)
timer = new System.Windows.Forms.Timer(); {
timer.Interval = 1000; // 1000 milliseconds = 1 second toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit;
timer.Tick += Timer_Tick; toolStripMenuItemForbidUnsafeSettings.Checked = Properties.Settings.Default.forbidUnsafeSettings;
timer.Start(); trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
radioButton1.Checked = Properties.Settings.Default.fanControlState == "Off";
fanControl.Checked = Properties.Settings.Default.fanControlState == "Manual";
fanCurve.Checked = Properties.Settings.Default.fanControlState == "Curve";
// Manually trigger events
radioButton1_CheckedChanged(radioButton1, EventArgs.Empty);
fanCurve_CheckedChanged(fanCurve, EventArgs.Empty);
fanControl_CheckedChanged(fanControl, EventArgs.Empty);
Properties.Settings.Default.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == "FanCurvePoints")
{
textBox1.Text = Properties.Settings.Default.FanCurvePoints;
}
};
SetFanCurvePoints(null);
//SetFanCurvePoints("20,1;60,1;61,20;70,20;71,30;80,55");
Timer_Tick();
}
else
{
// Restart the init function after a short delay
await System.Threading.Tasks.Task.Delay(20);
init();
}
} }
private void Timer_Tick(object sender, EventArgs e) private async void Timer_Tick()
{ {
// Update fan speeds if (autoRefresh.Checked && WindowState != FormWindowState.Minimized)
labelRPM.Text = string.Join(" ", asusControl.GetFanSpeeds()); {
Console.WriteLine($"Refreshing {rnd.Next(100)}");
// Update CPU temperature // Update fan speeds and CPU temperature on a separate task
labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}"; await Task.Run(() =>
{
// Get fan speeds
string fanSpeeds = string.Join(" ", asusControl.GetFanSpeeds());
// Get CPU temperature
string cpuTemp = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
// Update UI on the main thread
BeginInvoke(new Action(() =>
{
labelRPM.Text = fanSpeeds;
labelCPUTemp.Text = cpuTemp;
}));
});
Timer_Tick();
}
else
{
await Task.Delay(1000).ContinueWith(t => { Timer_Tick(); });
}
} }
private void OnProcessExit(object sender, EventArgs e) private void OnProcessExit(object sender, EventArgs e)
@@ -66,11 +118,33 @@ namespace AsusFanControlGUI
private void toolStripMenuItemCheckForUpdates_Click(object sender, EventArgs e) private void toolStripMenuItemCheckForUpdates_Click(object sender, EventArgs e)
{ {
System.Diagnostics.Process.Start("https://github.com/Karmel0x/AsusFanControl/releases"); System.Diagnostics.Process.Start("https://github.com/Darren80/AsusFanControlEnhanced/releases");
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
Properties.Settings.Default.fanControlState = "Off";
Properties.Settings.Default.Save();
asusControl.SetFanSpeeds(0);
}
}
private void fanControl_CheckedChanged(object sender, EventArgs e)
{
if (fanControl.Checked)
{
Properties.Settings.Default.fanControlState = "Manual";
Properties.Settings.Default.Save();
trackBarFanSpeed_MouseCaptureChanged(sender, e);
}
} }
private void setFanSpeed(int value, bool isTurnedOn) private void setFanSpeed(int value, bool isTurnedOn)
{ {
Properties.Settings.Default.fanSpeed = value; Properties.Settings.Default.fanSpeed = value;
Properties.Settings.Default.Save(); Properties.Settings.Default.Save();
@@ -78,9 +152,9 @@ namespace AsusFanControlGUI
value = 0; value = 0;
if (value == 0) if (value == 0)
labelValue.Text = "turned off"; BeginInvoke(new Action(() => labelValue.Text = "turned off"));
else else
labelValue.Text = value.ToString(); BeginInvoke(new Action(() => labelValue.Text = value.ToString() + "%"));
if (fanSpeed == value) if (fanSpeed == value)
return; return;
@@ -89,7 +163,7 @@ namespace AsusFanControlGUI
asusControl.SetFanSpeeds(value); asusControl.SetFanSpeeds(value);
} }
private void trackBarFanSpeed_MouseCaptureChanged(object sender, EventArgs e) private async void trackBarFanSpeed_MouseCaptureChanged(object sender, EventArgs e)
{ {
if (Properties.Settings.Default.forbidUnsafeSettings) if (Properties.Settings.Default.forbidUnsafeSettings)
{ {
@@ -99,7 +173,12 @@ namespace AsusFanControlGUI
trackBarFanSpeed.Value = 99; trackBarFanSpeed.Value = 99;
} }
setFanSpeed(trackBarFanSpeed.Value, fanControl.Checked); Decimal trackBarFanSpeedValue = trackBarFanSpeed.Value;
label5.Text = trackBarFanSpeedValue.ToString() + "% Fan";
await Task.Run(() =>
setFanSpeed((int)trackBarFanSpeedValue, fanControl.Checked)
);
} }
private void trackBarFanSpeed_KeyUp(object sender, KeyEventArgs e) private void trackBarFanSpeed_KeyUp(object sender, KeyEventArgs e)
@@ -126,107 +205,86 @@ namespace AsusFanControlGUI
// My Code: // My Code:
private Point maxPoint; private Point maxPoint;
private Point minPoint; private Point minPoint;
private Dictionary<int, Point> fanCurvePoints = new Dictionary<int, Point>()
{
{ 1, new Point(20, 1) },
{ 4, new Point(60, 1) },
{ 5, new Point(61, 20) },
{ 7, new Point(70, 20) },
{ 8, new Point(71, 30) },
{ 9, new Point(80, 55) },
};
private Timer fanCurveTimer; // Declare the timer as a class-level variable
// Set up the graph dimensions
const int padding = 40;
// Draw the temperature axis and labels
const int tempMin = 20;
const int tempMax = 100;
const int tempInterval = 10;
private void pictureBoxFanCurve_Paint(object sender, PaintEventArgs e) private void pictureBoxFanCurve_Paint(object sender, PaintEventArgs e)
{ {
// Draw the fan curve graph // Get the graphics object to draw on the picture box
Graphics g = e.Graphics; Graphics g = e.Graphics;
// Set up the graph dimensions // Calculate the width and height of the graph area
int padding = 20; int graphWidth = pictureBoxFanCurve.Width - 80;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding; int graphHeight = pictureBoxFanCurve.Height - 80;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Draw the temperature axis and labels // Draw the X-axis (temperature axis)
int tempMin = 30; g.DrawLine(Pens.Black, 40, pictureBoxFanCurve.Height - 40, pictureBoxFanCurve.Width - 40, pictureBoxFanCurve.Height - 40);
int tempMax = 100;
int tempInterval = 10;
g.DrawLine(Pens.Black, padding, pictureBoxFanCurve.Height - padding, pictureBoxFanCurve.Width - padding, pictureBoxFanCurve.Height - padding); // Draw temperature labels and tick marks on the X-axis
for (int temp = 20; temp <= 100; temp += 10)
for (int temp = tempMin; temp <= tempMax; temp += tempInterval)
{ {
int x = padding + (temp - tempMin) * graphWidth / (tempMax - tempMin); int x = 40 + (temp - 20) * graphWidth / 80;
g.DrawLine(Pens.Black, x, pictureBoxFanCurve.Height - padding - 5, x, pictureBoxFanCurve.Height - padding + 5); g.DrawLine(Pens.Black, x, pictureBoxFanCurve.Height - 40 - 5, x, pictureBoxFanCurve.Height - 40 + 5);
g.DrawString(temp.ToString(), DefaultFont, Brushes.Black, x - 10, pictureBoxFanCurve.Height - padding + 10); g.DrawString(temp.ToString(), Control.DefaultFont, Brushes.Black, x - 10, pictureBoxFanCurve.Height - 40 + 10);
} }
g.DrawString("Temperature (°C)", DefaultFont, Brushes.Black, pictureBoxFanCurve.Width / 2 - 40, pictureBoxFanCurve.Height - padding + 20); // Draw the X-axis label (Temperature)
g.DrawString("Temperature (°C)", Control.DefaultFont, Brushes.Black, pictureBoxFanCurve.Width / 2 - 40, pictureBoxFanCurve.Height - 40 + 20);
// Draw the fan speed axis and labels // Draw the Y-axis (fan speed axis)
int speedMin = 0; g.DrawLine(Pens.Black, 40, 40, 40, pictureBoxFanCurve.Height - 40);
int speedMax = 100;
int speedInterval = 20;
g.DrawLine(Pens.Black, padding, padding, padding, pictureBoxFanCurve.Height - padding); // Draw fan speed labels and tick marks on the Y-axis
for (int speed = 0; speed <= 100; speed += 20)
for (int speed = speedMin; speed <= speedMax; speed += speedInterval)
{ {
int y = pictureBoxFanCurve.Height - padding - speed * graphHeight / speedMax; int y = pictureBoxFanCurve.Height - 40 - speed * graphHeight / 100;
g.DrawLine(Pens.Black, padding - 5, y, padding + 5, y); g.DrawLine(Pens.Black, 35, y, 45, y);
g.DrawString(speed.ToString(), DefaultFont, Brushes.Black, 5, y - 10); g.DrawString(speed.ToString(), Control.DefaultFont, Brushes.Black, 5f, y - 10);
} }
g.DrawString("Fan Speed (%)", DefaultFont, Brushes.Black, padding - 10, padding - 20, new StringFormat(StringFormatFlags.DirectionVertical)); // Draw the Y-axis label (Fan Speed)
g.DrawString("Fan Speed (%)", Control.DefaultFont, Brushes.Black, 20f, 0f, new StringFormat(StringFormatFlags.DirectionVertical));
// Draw the fan curve points // Draw green dots for each fan curve point
foreach (Point point in fanCurvePoints.Values) foreach (Point point in fanCurvePoints.Values)
{ {
int x = padding + (point.X - tempMin) * graphWidth / (tempMax - tempMin); int x = 40 + (point.X - 20) * graphWidth / 80;
int y = pictureBoxFanCurve.Height - padding - point.Y * graphHeight / speedMax; int y = pictureBoxFanCurve.Height - 40 - point.Y * graphHeight / 100;
g.FillEllipse(Brushes.Green, x - 3, y - 3, 12, 12); g.FillEllipse(Brushes.Green, x - 3, y - 3, 12, 12);
} }
// Draw the maximum and minimum temperature points // If there are at least two fan curve points, connect them with a thick black line
int maxX = padding + (maxPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
int maxY = pictureBoxFanCurve.Height - padding - maxPoint.Y * graphHeight / speedMax;
g.FillEllipse(Brushes.Red, maxX - 5, maxY - 5, 10, 10);
int minX = padding + (minPoint.X - tempMin) * graphWidth / (tempMax - tempMin);
int minY = pictureBoxFanCurve.Height - padding - minPoint.Y * graphHeight / speedMax;
g.FillEllipse(Brushes.Yellow, minX - 5, minY - 5, 10, 10);
// Draw lines connecting the fan curve points
if (fanCurvePoints.Count >= 2) if (fanCurvePoints.Count >= 2)
{ {
Point[] graphPoints = fanCurvePoints.Values Point[] graphPoints = fanCurvePoints.Values
.OrderBy(p => p.X) .OrderBy(p => p.X)
.Select(p => new Point( .Select(p => new Point(40 + (p.X - 20) * graphWidth / 80, pictureBoxFanCurve.Height - 40 - p.Y * graphHeight / 100))
padding + (p.X - tempMin) * graphWidth / (tempMax - tempMin),
pictureBoxFanCurve.Height - padding - p.Y * graphHeight / speedMax
))
.ToArray(); .ToArray();
using (Pen thickPen = new Pen(Color.Black, 3)) using Pen thickPen = new Pen(Color.Black, 3f);
{ g.DrawLines(thickPen, graphPoints);
g.DrawLines(Pens.Black, graphPoints);
}
} }
} }
private void pictureBoxFanCurve_MouseDoubleClick(object sender, MouseEventArgs e) private void pictureBoxFanCurve_MouseDoubleClick(object sender, MouseEventArgs e)
{ {
// Set up the graph dimensions (int temperature, int fanSpeed) = mousePosition(e.Location);
int padding = 20;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Define the temperature and fan speed ranges
int tempMin = 30;
int tempMax = 100;
int speedMin = 0;
int speedMax = 100;
// Convert the mouse coordinates to graph coordinates
int temperature = tempMin + (e.X - padding) * (tempMax - tempMin) / graphWidth;
int fanSpeed = speedMax - (e.Y - padding) * speedMax / graphHeight;
// Check if a point with the same y-axis already exists
if (fanCurvePoints.Values.Any(p => p.Y == fanSpeed))
{
return; // Do not add the new point
}
if (fanCurvePoints.Count >= 15) if (fanCurvePoints.Count >= 15)
{ {
@@ -249,14 +307,13 @@ namespace AsusFanControlGUI
private (int temperature, int fanSpeed) mousePosition(Point e) private (int temperature, int fanSpeed) mousePosition(Point e)
{ {
// Set up the graph dimensions // Set up the graph dimensions
int padding = 20; int padding = 40;
int graphWidth = pictureBoxFanCurve.Width - 2 * padding; int graphWidth = pictureBoxFanCurve.Width - 2 * padding;
int graphHeight = pictureBoxFanCurve.Height - 2 * padding; int graphHeight = pictureBoxFanCurve.Height - 2 * padding;
// Define the temperature and fan speed ranges // Define the temperature and fan speed ranges
int tempMin = 30; int tempMin = 20;
int tempMax = 100; int tempMax = 100;
int speedMin = 0;
int speedMax = 100; int speedMax = 100;
// Convert the mouse coordinates to graph coordinates // Convert the mouse coordinates to graph coordinates
@@ -266,29 +323,35 @@ namespace AsusFanControlGUI
return (temperature, fanSpeed); return (temperature, fanSpeed);
} }
private KeyValuePair<int, Point> nearestPointToMouse(MouseEventArgs e, int maxDistance)
{
(int temperature, int fanSpeed) = mousePosition(e.Location);
var nearestPoints = fanCurvePoints
.OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
KeyValuePair<int, Point> reachablePoint = nearestPoints
.FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= maxDistance);
return reachablePoint;
}
private int maxDistance = 8;
private void pictureBoxFanCurve_MouseClick(object sender, MouseEventArgs e) private void pictureBoxFanCurve_MouseClick(object sender, MouseEventArgs e)
{ {
if (e.Button == MouseButtons.Right) if (e.Button == MouseButtons.Right)
{ {
(int temperature, int fanSpeed) = mousePosition(e.Location); KeyValuePair<int, Point> reachablePoint = nearestPointToMouse(e, maxDistance);
var nearestPoints = fanCurvePoints
.OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
var reachablePoint = nearestPoints
.FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
if (reachablePoint.Value != Point.Empty) if (reachablePoint.Value != Point.Empty)
{ {
fanCurvePoints.Remove(reachablePoint.Key); fanCurvePoints.Remove(reachablePoint.Key);
Console.WriteLine($"Point ID: {reachablePoint.Key} deleted.");
pictureBoxFanCurve.Invalidate(); pictureBoxFanCurve.Invalidate();
Console.WriteLine($"Point ID: {reachablePoint.Key} deleted.");
} }
} }
} }
private void pictureBoxFanCurve_MouseDown(object sender, MouseEventArgs e) private void pictureBoxFanCurve_MouseDown(object sender, MouseEventArgs e)
@@ -297,22 +360,12 @@ namespace AsusFanControlGUI
if (e.Button == MouseButtons.Left) if (e.Button == MouseButtons.Left)
{ {
Console.WriteLine(e.Button); // Console.WriteLine(e.Button);
KeyValuePair<int, Point> reachablePoint = nearestPointToMouse(e, maxDistance);
// Get mouse position
(int temperature, int fanSpeed) = mousePosition(e.Location);
var nearestPoints = fanCurvePoints
.OrderBy(p => Distance(p.Value, new Point(temperature, fanSpeed)));
var reachablePoint = nearestPoints
.FirstOrDefault(p => Distance(p.Value, new Point(temperature, fanSpeed)) <= 20);
if (reachablePoint.Value != Point.Empty) if (reachablePoint.Value != Point.Empty)
{ {
selectedPointId = reachablePoint.Key; selectedPointId = reachablePoint.Key;
Console.WriteLine($"Distance: {Distance(reachablePoint.Value, new Point(temperature, fanSpeed))}"); //Console.WriteLine($"Distance: {Distance(reachablePoint.Value, new Point(temperature, fanSpeed))}");
} }
else else
{ {
@@ -325,18 +378,24 @@ namespace AsusFanControlGUI
{ {
if (selectedPointId != 0) if (selectedPointId != 0)
{ {
// Console.Write("MouseMove, Key: ");
// Get mouse location on grid // Get mouse location on grid
(int temperature, int fanSpeed) = mousePosition(e.Location); (int temperature, int fanSpeed) = mousePosition(e.Location);
//Update location of point
fanCurvePoints[selectedPointId] = new Point(temperature, fanSpeed); fanCurvePoints[selectedPointId] = new Point(temperature, fanSpeed);
pictureBoxFanCurve.Invalidate(); // Redraw the graph
// Show the tooltip with the current X and Y values
toolTip1.SetToolTip(pictureBoxFanCurve, $"Temperature: {temperature}°C, Fan Speed: {fanSpeed}%");
// Redraw the graph
pictureBoxFanCurve.Invalidate();
} }
} }
private void pictureBoxFanCurve_MouseUp(object sender, MouseEventArgs e) private void pictureBoxFanCurve_MouseUp(object sender, MouseEventArgs e)
{ {
selectedPointId = 0; selectedPointId = 0;
toolTip1.SetToolTip(pictureBoxFanCurve, "Fan Curve Graph");
SaveFanCurvePoints();
// fanCurvePoints.ToList().ForEach(point => Console.Write($"ID: {point.Key}, X: {point.Value.X}, Y: {point.Value.Y}")); // fanCurvePoints.ToList().ForEach(point => Console.Write($"ID: {point.Key}, X: {point.Value.X}, Y: {point.Value.Y}"));
// Console.WriteLine(); // Console.WriteLine();
@@ -349,90 +408,171 @@ namespace AsusFanControlGUI
return Math.Sqrt(dx * dx + dy * dy); return Math.Sqrt(dx * dx + dy * dy);
} }
private Dictionary<int, Point> fanCurvePoints = new Dictionary<int, Point>();
private Timer fanCurveTimer; // Declare the timer as a class-level variable
bool isControlYeilded = false; bool isControlYeilded = false;
private void fanCurve_CheckedChanged(object sender, EventArgs e) private void fanCurve_CheckedChanged(object sender, EventArgs e)
{ {
if (fanCurveControl.Checked) Properties.Settings.Default.fanControlState = "Curve";
Properties.Settings.Default.Save();
if (fanCurve.Checked)
{ {
// Start a timer to read the temperature and update the fan speed every 3 seconds // Read the current temperature
fanCurveTimer = new Timer(); ulong currentTemp = asusControl.Thermal_Read_Cpu_Temperature(); // Implement the ReadTemperature method to get the current temperature
fanCurveTimer.Interval = 1000; // 3 seconds
fanCurveTimer.Tick += (s, args) => // Find the fan curve points that bracket the current temperature
KeyValuePair<int, Point> lowerPoint = fanCurvePoints.OrderByDescending(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X <= currentTemp);
KeyValuePair<int, Point> upperPoint = fanCurvePoints.OrderBy(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X >= currentTemp);
// Calculate the fan speed based on linear interpolation between the bracket points
int fanSpeed;
// Check if the current temperature is within the range of the fan curve points
if ((ulong)lowerPoint.Key == 0 || (ulong)upperPoint.Key == 0)
{ {
// Read the current temperature // Temperature is outside the range, yield control to the system
ulong currentTemp = asusControl.Thermal_Read_Cpu_Temperature(); // Implement the ReadTemperature method to get the current temperature if (!isControlYeilded)
// Find the fan curve points that bracket the current temperature
KeyValuePair<int, Point> lowerPoint = fanCurvePoints.OrderByDescending(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X <= currentTemp);
KeyValuePair<int, Point> upperPoint = fanCurvePoints.OrderBy(p => p.Value.X).FirstOrDefault(p => (ulong)p.Value.X >= currentTemp);
// Calculate the fan speed based on linear interpolation between the bracket points
int fanSpeed;
// Check if the current temperature is within the range of the fan curve points
if ((ulong)lowerPoint.Key == 0 || (ulong)upperPoint.Key == 0)
{ {
// Temperature is outside the range, yield control to the system asusControl.SetFanSpeeds(0);
if (!isControlYeilded) isControlYeilded = true;
{
asusControl.SetFanSpeeds(0);
isControlYeilded = true;
}
} }
else if (lowerPoint.Value.X == upperPoint.Value.X)
{
isControlYeilded = false;
fanSpeed = lowerPoint.Value.Y;
}
else
{
isControlYeilded = false;
double ratio = (currentTemp - (ulong)lowerPoint.Value.X) / (double)(upperPoint.Value.X - lowerPoint.Value.X);
fanSpeed = (int)(lowerPoint.Value.Y + (upperPoint.Value.Y - lowerPoint.Value.Y) * ratio);
// Apply hysteresis to prevent rapid fan speed changes
int hysteresis = 2; // Adjust the hysteresis value as needed
if (fanSpeed > lastFanSpeed + hysteresis || fanSpeed < lastFanSpeed - hysteresis)
{
// Update the fan speed
fanSpeed = Math.Max(1, Math.Min(100, fanSpeed));
setFanSpeed(fanSpeed, true); // Implement the SetFanSpeed method to control the fan speed
lastFanSpeed = fanSpeed;
}
}
};
fanCurveTimer.Start();
}
else
{
// Stop the timer when the fan curve is unchecked
if (fanCurveTimer != null)
{
fanCurveTimer.Stop();
fanCurveTimer.Dispose();
fanCurveTimer = null;
} }
else if (lowerPoint.Value.X == upperPoint.Value.X)
{
setFanSpeed(lowerPoint.Value.Y, true); // Implement the SetFanSpeed method to control the fan speed
Console.WriteLine($"Set fan speed to {lowerPoint.Value.Y}% {rnd.Next(1000)}, last fan speed = {lastFanSpeed}");
// Update UI on the main thread
BeginInvoke(new Action(() =>
{
label3.Text = $"Low: {lowerPoint.Value.X} High: {upperPoint.Value.X}";
}));
lastFanSpeed = lowerPoint.Value.Y;
}
else
{
isControlYeilded = false;
double ratio = (currentTemp - (ulong)lowerPoint.Value.X) / (double)(upperPoint.Value.X - lowerPoint.Value.X);
fanSpeed = (int)(lowerPoint.Value.Y + (upperPoint.Value.Y - lowerPoint.Value.Y) * ratio);
// Apply hysteresis to prevent rapid fan speed changes
int hysteresis = (int)numericUpDown1.Value; // Adjust the hysteresis value as needed
if (fanSpeed > lastFanSpeed + hysteresis || fanSpeed < lastFanSpeed - hysteresis || fanSpeed < 10)
{
// Update the fan speed
fanSpeed = Math.Max(1, Math.Min(100, fanSpeed));
setFanSpeed(fanSpeed, true); // Implement the SetFanSpeed method to control the fan speed
Console.WriteLine($"Set fan speed to {fanSpeed}% {rnd.Next(1000)}, last fan speed = {lastFanSpeed}");
// Update UI on the main thread
BeginInvoke(new Action(() =>
{
label3.Text = $"Low: {lowerPoint.Value.X} High: {upperPoint.Value.X}";
}));
lastFanSpeed = fanSpeed;
}
};
Task.Delay((int)numericUpDown2.Value).ContinueWith(t => { fanCurve_CheckedChanged(null, null); });
} }
} }
// Keep track of the last fan speed to apply hysteresis // Keep track of the last fan speed to apply hysteresis
private int lastFanSpeed = 0; private int lastFanSpeed = 0;
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (fanControl.Checked)
{
setFanSpeed(trackBarFanSpeed.Value, fanCurveControl.Checked);
}
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
Hide();
notifyIcon1.Visible = true;
}
} }
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Show();
WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
}
private void SaveFanCurvePoints()
{
string fanCurvePointsString = string.Join("-", fanCurvePoints.OrderBy(x => x.Value.X).Select(x => $"{x.Value.X},{x.Value.Y}"));
Properties.Settings.Default.FanCurvePoints = fanCurvePointsString;
Properties.Settings.Default.Save();
Console.WriteLine(fanCurvePointsString);
}
private void SetFanCurvePoints(String? fanCurveString)
{
int count = 0;
string fanCurvePointsString = fanCurveString ?? Properties.Settings.Default.FanCurvePoints;
if (!string.IsNullOrEmpty(fanCurvePointsString))
{
Console.WriteLine(fanCurvePointsString);
// Parse the string
try
{
fanCurvePoints = fanCurvePointsString.Split('-')
.Select(x =>
{
string[] parts = x.Split(',');
return new KeyValuePair<int, Point>(count++, new Point(int.Parse(parts[0]), int.Parse(parts[1])));
})
.ToDictionary(x => x.Key, x => x.Value);
//Save
textBox1.Text = fanCurvePointsString;
SaveFanCurvePoints();
}
catch
{
MessageBox.Show("Invalid string.");
}
}
pictureBoxFanCurve.Invalidate();
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text = Properties.Settings.Default.FanCurvePoints;
SetFanCurvePoints(null);
}
private void button3_Click(object sender, EventArgs e)
{
SetFanCurvePoints(textBox1.Text);
}
private void trackBarFanSpeed_MouseUp(object sender, MouseEventArgs e)
{
trackBarFanSpeed_MouseCaptureChanged(sender, e);
}
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace AsusFanControlGUI.Properties namespace AsusFanControlGUI.Properties {
{ using System;
/// <summary> /// <summary>
@@ -19,31 +19,26 @@ namespace AsusFanControlGUI.Properties
// class via a tool like ResGen or Visual Studio. // class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen // To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project. // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources internal class Resources {
{
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() internal Resources() {
{
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Returns the cached ResourceManager instance used by this class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager internal static global::System.Resources.ResourceManager ResourceManager {
{ get {
get if (object.ReferenceEquals(resourceMan, null)) {
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AsusFanControlGUI.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AsusFanControlGUI.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
@@ -56,14 +51,11 @@ namespace AsusFanControlGUI.Properties
/// resource lookups using this strongly typed resource class. /// resource lookups using this strongly typed resource class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture internal static global::System.Globalization.CultureInfo Culture {
{ get {
get
{
return resourceCulture; return resourceCulture;
} }
set set {
{
resourceCulture = value; resourceCulture = value;
} }
} }

View File

@@ -12,7 +12,7 @@ namespace AsusFanControlGUI.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -58,5 +58,29 @@ namespace AsusFanControlGUI.Properties {
this["forbidUnsafeSettings"] = value; this["forbidUnsafeSettings"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Off")]
public string fanControlState {
get {
return ((string)(this["fanControlState"]));
}
set {
this["fanControlState"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("20,1-60,1-61,20-70,20-71,30-80,55")]
public string FanCurvePoints {
get {
return ((string)(this["FanCurvePoints"]));
}
set {
this["FanCurvePoints"] = value;
}
}
} }
} }

View File

@@ -11,5 +11,11 @@
<Setting Name="forbidUnsafeSettings" Type="System.Boolean" Scope="User"> <Setting Name="forbidUnsafeSettings" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value> <Value Profile="(Default)">True</Value>
</Setting> </Setting>
<Setting Name="fanControlState" Type="System.String" Scope="User">
<Value Profile="(Default)">Off</Value>
</Setting>
<Setting Name="FanCurvePoints" Type="System.String" Scope="User">
<Value Profile="(Default)">20,1-60,1-61,20-70,20-71,30-80,55</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="5.7.0" targetFramework="net472" developmentDependency="true" />
<package id="Fody" version="6.5.5" targetFramework="net472" developmentDependency="true" />
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net472" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net472" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net472" />
<package id="System.AppContext" version="4.3.0" targetFramework="net472" />
<package id="System.Collections" version="4.3.0" targetFramework="net472" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net472" />
<package id="System.Console" version="4.3.0" targetFramework="net472" />
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net472" />
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net472" />
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net472" />
<package id="System.Globalization" version="4.3.0" targetFramework="net472" />
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net472" />
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net472" />
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net472" />
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Linq" version="4.3.0" targetFramework="net472" />
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net472" />
<package id="System.ObjectModel" version="4.3.0" targetFramework="net472" />
<package id="System.Reflection" version="4.3.0" targetFramework="net472" />
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net472" />
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net472" />
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net472" />
<package id="System.Threading" version="4.3.0" targetFramework="net472" />
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net472" />
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net472" />
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net472" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net472" />
</packages>