LEDMixer.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace LEDMixer
  10. {
  11. public partial class LEDMixer : Form
  12. {
  13. private const int LIGHT_MAX = 0x1F;
  14. public LEDMixer()
  15. {
  16. InitializeComponent();
  17. }
  18. private void LEDMixer_Load(object sender, EventArgs e)
  19. {
  20. String[] PortNames = System.IO.Ports.SerialPort.GetPortNames();
  21. Array.Sort<String>(PortNames, delegate(string strA, string strB) { return int.Parse(strA.Substring(3)).CompareTo(int.Parse(strB.Substring(3))); });
  22. cbPort.Items.Clear();
  23. cbPort.Items.AddRange(PortNames);
  24. cbPort.SelectedIndex = 0;
  25. tbRed.Maximum = LIGHT_MAX;
  26. tbGreen.Maximum = LIGHT_MAX;
  27. tbBlue.Maximum = LIGHT_MAX;
  28. }
  29. private void tbRed_Scroll(object sender, EventArgs e)
  30. {
  31. NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
  32. }
  33. private void tbGreen_Scroll(object sender, EventArgs e)
  34. {
  35. NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
  36. }
  37. private void tbBlue_Scroll(object sender, EventArgs e)
  38. {
  39. NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
  40. }
  41. private void NotifyLight(int Red, int Green, int Blue)
  42. {
  43. byte[] buffer = new byte[3];
  44. buffer[0] = (byte)(0x80 | (Red & LIGHT_MAX));
  45. buffer[1] = (byte)(0x40 | (Green & LIGHT_MAX));
  46. buffer[2] = (byte)(0x20 | (Blue & LIGHT_MAX));
  47. try
  48. {
  49. serSerialPort.PortName = cbPort.Text;
  50. serSerialPort.Open();
  51. serSerialPort.Write(buffer, 0, buffer.Length);
  52. serSerialPort.Close();
  53. }
  54. catch (Exception e)
  55. {
  56. }
  57. }
  58. private void cbPort_SelectedIndexChanged(object sender, EventArgs e)
  59. {
  60. NotifyLight(tbRed.Value, tbGreen.Value, tbBlue.Value);
  61. }
  62. }
  63. }