--- /dev/null
+using System;\r
+using System.Collections.Generic;\r
+using System.ComponentModel;\r
+using System.Data;\r
+using System.Drawing;\r
+using System.Linq;\r
+using System.Text;\r
+using System.Windows.Forms;\r
+\r
+namespace LEDMixer\r
+{\r
+ public partial class LEDMixer : Form\r
+ {\r
+ private const int LIGHT_MAX = 0x1F;\r
+ \r
+ public LEDMixer()\r
+ {\r
+ InitializeComponent();\r
+ }\r
+\r
+ private void LEDMixer_Load(object sender, EventArgs e)\r
+ {\r
+ for (int i = 1; i <= 99; i++)\r
+ cbPort.Items.Add("COM" + i.ToString());\r
+\r
+ cbPort.SelectedIndex = 0;\r
+\r
+ tbRed.Maximum = LIGHT_MAX;\r
+ tbGreen.Maximum = LIGHT_MAX;\r
+ tbBlue.Maximum = LIGHT_MAX;\r
+ }\r
+\r
+ private void tbRed_Scroll(object sender, EventArgs e)\r
+ {\r
+ NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);\r
+ }\r
+\r
+ private void tbGreen_Scroll(object sender, EventArgs e)\r
+ {\r
+ NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);\r
+ }\r
+\r
+ private void tbBlue_Scroll(object sender, EventArgs e)\r
+ {\r
+ NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);\r
+ }\r
+ \r
+ private void NotifyLight(int Red, int Green, int Blue)\r
+ {\r
+ byte[] buffer = new byte[3];\r
+ buffer[0] = (byte)(0x80 | (Red & LIGHT_MAX));\r
+ buffer[1] = (byte)(0x40 | (Green & LIGHT_MAX));\r
+ buffer[2] = (byte)(0x20 | (Blue & LIGHT_MAX));\r
+\r
+ try\r
+ {\r
+ serSerialPort.PortName = cbPort.Text;\r
+ serSerialPort.Open();\r
+ serSerialPort.Write(buffer, 0, buffer.Length);\r
+ serSerialPort.Close();\r
+ }\r
+ catch (Exception e)\r
+ {\r
+\r
+ }\r
+ }\r
+\r
+ private void cbPort_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);\r
+ }\r
+ }\r
+}\r