summary refs log tree commit diff
path: root/Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs')
-rw-r--r--Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs75
1 files changed, 75 insertions, 0 deletions
diff --git a/Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs b/Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs
new file mode 100644
index 0000000000..dfaffed309
--- /dev/null
+++ b/Projects/LEDNotifier/LEDMixerApp/LEDMixer.cs
@@ -0,0 +1,75 @@
+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;
+
+namespace LEDMixer
+{
+    public partial class LEDMixer : Form
+    {
+        private const int LIGHT_MAX = 0x1F;
+        
+        public LEDMixer()
+        {
+            InitializeComponent();
+        }
+
+        private void LEDMixer_Load(object sender, EventArgs e)
+        {
+            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))); });
+            cbPort.Items.Clear();
+            cbPort.Items.AddRange(PortNames);
+
+            cbPort.SelectedIndex = 0;
+
+            tbRed.Maximum = LIGHT_MAX;
+            tbGreen.Maximum = LIGHT_MAX;
+            tbBlue.Maximum = LIGHT_MAX;
+        }
+
+        private void tbRed_Scroll(object sender, EventArgs e)
+        {
+            NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
+        }
+
+        private void tbGreen_Scroll(object sender, EventArgs e)
+        {
+            NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
+        }
+
+        private void tbBlue_Scroll(object sender, EventArgs e)
+        {
+            NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
+        }
+        
+        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 = cbPort.Text;
+                serSerialPort.Open();
+                serSerialPort.Write(buffer, 0, buffer.Length);
+                serSerialPort.Close();
+            }
+            catch (Exception e)
+            {
+
+            }
+        }
+
+        private void cbPort_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
+        }
+    }
+}