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(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); } } }