diff options
Diffstat (limited to 'lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs')
| -rw-r--r-- | lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs | 115 | 
1 files changed, 115 insertions, 0 deletions
| diff --git a/lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs b/lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs new file mode 100644 index 0000000000..32543fc59b --- /dev/null +++ b/lib/lufa/Projects/LEDNotifier/CPUUsageApp/CPUMonitor.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace CPUMonitor +{ +    public partial class frmCPU : Form +    { +        private RegistryKey AppRegKey; + +        private const int LIGHT_MAX = 0x1F; + +        public frmCPU() +        { +            InitializeComponent(); + +            nicoNotifyIcon.Icon = this.Icon; +            nicoNotifyIcon.MouseClick += new MouseEventHandler(TrayIconClick);         +        } + +        private void Form1_Load(object sender, EventArgs e) +        { +            AppRegKey = Registry.CurrentUser.CreateSubKey("Software\\CPUMonitor"); + +            String[] PortNames = System.IO.Ports.SerialPort.GetPortNames(); +            Array.Sort<String>(PortNames, delegate(string strA, string strB) { return int.Parse(strA.Substring(3)).CompareTo(int.Parse(strB.Substring(3))); }); +            cmbComPort.Items.Clear(); +            cmbComPort.Items.AddRange(PortNames); + +            cmbComPort.SelectedIndex = System.Convert.ToInt32(AppRegKey.GetValue("Port", "1")) - 1; +            serSerialPort.PortName = cmbComPort.Text; + +            Hide(); +        } + +        private void NotifyLight(int Red, int Green, int Blue) +        { +            byte[] buffer = new byte[3]; +            buffer[0] = (byte)(0x80 | (Red & LIGHT_MAX)); +            buffer[1] = (byte)(0x40 | (Green & LIGHT_MAX)); +            buffer[2] = (byte)(0x20 | (Blue & LIGHT_MAX)); + +            try +            { +                serSerialPort.PortName = cmbComPort.Text; +                serSerialPort.Open(); +                serSerialPort.Write(buffer, 0, buffer.Length); +                serSerialPort.Close(); +            } +            catch (Exception e) +            { + +            } +        } + +        private void tmrCPUTimer_Tick(object sender, EventArgs e) +        { +            float CPUUsage = pcCPUUsage.NextValue(); + +            int Red = 0; +            int Green = 0; +            int Blue = 0; + +            if (CPUUsage < 25) +            { +                Green = (int)((LIGHT_MAX / 25) * CPUUsage); +            } +            else if (CPUUsage < 50) +            { +                Blue = (int)((LIGHT_MAX / 25) * (CPUUsage - 25)); +                Green = LIGHT_MAX - Blue; +            } +            else if (CPUUsage < 75) +            { +                Red = (int)((LIGHT_MAX / 25) * (CPUUsage - 50)); +                Blue = LIGHT_MAX - Red; +            } +            else +            { +                Red = LIGHT_MAX; +            } + +            NotifyLight(Red, Green, Blue); +            lblCPU.Text = ((int)CPUUsage).ToString() + "%"; +        } + +        private void btnExit_Click(object sender, EventArgs e) +        { +            Application.Exit(); +        } + +        private void btnMinimizeToTray_Click(object sender, EventArgs e) +        { +            this.Hide(); +        } + +        private void TrayIconClick(object sender, MouseEventArgs e) +        { +            this.Show(); +            this.WindowState = FormWindowState.Normal; +        } + +        private void cbPort_SelectedIndexChanged(object sender, EventArgs e) +        { +            AppRegKey.SetValue("Port", cmbComPort.SelectedIndex + 1); +            serSerialPort.PortName = cmbComPort.Text; +        } +    } +} | 
