Skip to content

Commit bd0162e

Browse files
committed
checkbox, cpu temp, command line change
1 parent 584bcad commit bd0162e

File tree

10 files changed

+247
-66
lines changed

10 files changed

+247
-66
lines changed

AsusFanControl/AsusControl.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ public void SetFanSpeed(byte value, byte fanIndex = 0)
2626
AsusWinIO64.HealthyTable_SetFanTestMode((char)(value > 0 ? 0x01 : 0x00));
2727
}
2828

29-
public void SetFanSpeed(int percent)
29+
public void SetFanSpeed(int percent, byte fanIndex = 0)
3030
{
3131
var value = (byte)(percent / 100.0f * 255);
32-
SetFanSpeed(value);
32+
SetFanSpeed(value, fanIndex);
3333
}
3434

3535
public void SetFansSpeed(byte value)
@@ -67,5 +67,15 @@ public List<int> GetFanSpeeds()
6767

6868
return fanSpeeds;
6969
}
70+
71+
public int HealthyTable_FanCounts()
72+
{
73+
return AsusWinIO64.HealthyTable_FanCounts();
74+
}
75+
76+
public ulong Thermal_Read_Cpu_Temperature()
77+
{
78+
return AsusWinIO64.Thermal_Read_Cpu_Temperature();
79+
}
7080
}
7181
}

AsusFanControl/AsusWinIO64.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ public class AsusWinIO64
1818
public static extern void HealthyTable_SetFanTestMode(char mode);
1919
[DllImport("AsusWinIO64.dll")]
2020
public static extern void HealthyTable_SetFanPwmDuty(short duty);
21+
[DllImport("AsusWinIO64.dll")]
22+
public static extern ulong Thermal_Read_Cpu_Temperature();
2123
}
2224
}

AsusFanControl/Program.cs

Lines changed: 62 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,77 @@ static int Main(string[] args)
1313
{
1414
if (args.Length < 1)
1515
{
16-
Console.WriteLine("Usage: AsusFanControl <fanSpeedPercent>");
16+
Console.WriteLine("Usage: AsusFanControl <args>");
17+
Console.WriteLine("\t--get-fan-speeds");
18+
Console.WriteLine("\t--set-fan-speeds=0-100 (percent value, 0 for turning off test mode)");
19+
Console.WriteLine("\t--get-fan-count");
20+
Console.WriteLine("\t--get-fan-speed=fanId (comma separated)");
21+
Console.WriteLine("\t--set-fan-speed=fanId:0-100 (comma separated, percent value, 0 for turning off test mode)");
22+
Console.WriteLine("\t--get-cpu-temp");
1723
return 1;
1824
}
1925

20-
bool tryParse = int.TryParse(args[0], out int num);
26+
var asusControl = new AsusControl();
2127

22-
if (!tryParse)
28+
foreach (var arg in args)
2329
{
24-
Console.WriteLine("Please enter a numeric value for fan speed.");
25-
return 1;
26-
}
30+
if (arg.StartsWith("--get-fan-speeds"))
31+
{
32+
var fanSpeeds = asusControl.GetFanSpeeds();
33+
Console.WriteLine($"Current fan speeds: {string.Join(" ", fanSpeeds)} RPM");
34+
}
2735

28-
if ((num != 0 && num < 40) || num > 99)
29-
{
30-
Console.WriteLine("Please enter a value for fan speed between 40 and 99 or 0 for turning off test mode.");
31-
Console.WriteLine("If you want to skip these limits you need to change it in source code.");
32-
return 1;
33-
}
36+
if (arg.StartsWith("--set-fan-speeds"))
37+
{
38+
var newSpeedStr = arg.Split('=')[1];
39+
var newSpeed = int.Parse(newSpeedStr);
40+
asusControl.SetFansSpeed(newSpeed);
3441

35-
var asusControl = new AsusControl();
42+
if(newSpeed == 0)
43+
Console.WriteLine("Test mode turned off");
44+
else
45+
Console.WriteLine($"New fan speeds: {newSpeed}%");
46+
}
47+
48+
if (arg.StartsWith("--get-fan-speed="))
49+
{
50+
var fanIds = arg.Split('=')[1].Split(',');
51+
foreach (var fanIdStr in fanIds)
52+
{
53+
var fanId = int.Parse(fanIdStr);
54+
var fanSpeed = asusControl.GetFanSpeed((byte)fanId);
55+
Console.WriteLine($"Current fan speed for fan {fanId}: {fanSpeed} RPM");
56+
}
57+
}
58+
59+
if (arg.StartsWith("--get-fan-count"))
60+
{
61+
var fanCount = asusControl.HealthyTable_FanCounts();
62+
Console.WriteLine($"Fan count: {fanCount}");
63+
}
3664

37-
var fanSpeeds = asusControl.GetFanSpeeds();
38-
Console.WriteLine($"Current fan speeds: {string.Join(" ", fanSpeeds)}");
65+
if (arg.StartsWith("--set-fan-speed="))
66+
{
67+
var fanSettings = arg.Split('=')[1].Split(',');
68+
foreach (var fanSetting in fanSettings)
69+
{
70+
var fanId = int.Parse(fanSetting.Split(':')[0]);
71+
var fanSpeed = int.Parse(fanSetting.Split(':')[1]);
72+
asusControl.SetFanSpeed(fanSpeed, (byte)fanId);
3973

40-
asusControl.SetFansSpeed(num);
74+
if (fanSpeed == 0)
75+
Console.WriteLine($"Test mode turned off for fan {fanId}");
76+
else
77+
Console.WriteLine($"New fan speed for fan {fanId}: {fanSpeed}%");
78+
}
79+
}
80+
81+
if (arg.StartsWith("--get-cpu-temp"))
82+
{
83+
var cpuTemp = asusControl.Thermal_Read_Cpu_Temperature();
84+
Console.WriteLine($"Current CPU temp: {cpuTemp}");
85+
}
86+
}
4187

4288
return 0;
4389
}

AsusFanControlGUI/App.config

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<configuration>
3+
<configSections>
4+
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
5+
<section name="AsusFanControlGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
6+
</sectionGroup>
7+
</configSections>
38
<startup>
49
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
510
</startup>
11+
<userSettings>
12+
<AsusFanControlGUI.Properties.Settings>
13+
<setting name="fanSpeed" serializeAs="String">
14+
<value>90</value>
15+
</setting>
16+
</AsusFanControlGUI.Properties.Settings>
17+
</userSettings>
618
</configuration>

AsusFanControlGUI/Form1.Designer.cs

Lines changed: 71 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

AsusFanControlGUI/Form1.cs

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,69 @@ namespace AsusFanControlGUI
1414
public partial class Form1 : Form
1515
{
1616
AsusControl asusControl = new AsusControl();
17+
int fanSpeed = 0;
1718

1819
public Form1()
1920
{
2021
InitializeComponent();
22+
23+
trackBarFanSpeed.Value = Properties.Settings.Default.fanSpeed;
2124
}
2225

23-
private void setFanSpeed(int value)
26+
private void setFanSpeed()
2427
{
25-
if (value < 40)
28+
var value = trackBarFanSpeed.Value;
29+
Properties.Settings.Default.fanSpeed = value;
30+
Properties.Settings.Default.Save();
31+
32+
if (!checkBoxTurnOn.Checked)
33+
value = 0;
34+
else if(value < 40)
2635
value = 0;
27-
if (value > 99)
36+
else if (value > 99)
2837
value = 99;
2938

30-
labelValue.Text = value == 0 ? "turned off (set value between 40 and 100)" : value.ToString();
39+
if (!checkBoxTurnOn.Checked)
40+
labelValue.Text = "turned off";
41+
else if (value == 0)
42+
labelValue.Text = "turned off (set value between 40 and 100)";
43+
else
44+
labelValue.Text = value.ToString();
45+
46+
if (fanSpeed == value)
47+
return;
48+
49+
fanSpeed = value;
50+
3151
asusControl.SetFansSpeed(value);
3252
}
3353

3454
private void trackBar1_MouseCaptureChanged(object sender, EventArgs e)
3555
{
36-
setFanSpeed(trackBar1.Value);
56+
setFanSpeed();
3757
}
3858

3959
private void trackBar1_KeyUp(object sender, KeyEventArgs e)
4060
{
41-
setFanSpeed(trackBar1.Value);
61+
if (e.KeyCode != Keys.Left && e.KeyCode != Keys.Right)
62+
return;
63+
64+
setFanSpeed();
4265
}
4366

4467
private void button1_Click(object sender, EventArgs e)
4568
{
4669
labelRPM.Text = string.Join(" ", asusControl.GetFanSpeeds());
4770
}
4871

72+
private void checkBoxTurnOn_CheckedChanged(object sender, EventArgs e)
73+
{
74+
setFanSpeed();
75+
}
76+
77+
private void button2_Click(object sender, EventArgs e)
78+
{
79+
labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}";
80+
}
4981
}
5082
}

0 commit comments

Comments
 (0)