Advertisement
abdullahkahraman

Untitled

Jun 8th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.48 KB | None | 0 0
  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.Threading;
  9. using System.Windows.Forms;
  10. using System.Management;
  11. using System.Security.Principal;
  12.  
  13. using System.Diagnostics;
  14.  
  15. namespace RGB_Controller
  16. {
  17.     public partial class FormMain : Form
  18.     {
  19.         bool isSelecting_pictureBoxColor;
  20.         bool mouseOverMenu;
  21.         bool portStatus;
  22.         bool transferData;
  23.         bool connectedAtLeastOnce;
  24.         int serialPortErrorCount = 0;
  25.  
  26.         public FormMain()
  27.         {
  28.             InitializeComponent();
  29.         }
  30.  
  31.         private void Form1_Load(object sender, EventArgs e)
  32.         {
  33.             bool isAdmin;
  34.  
  35.             connectedAtLeastOnce = false;
  36.             isSelecting_pictureBoxColor = false;
  37.             trackBarRed.Value = int.Parse(labelRed.Text);
  38.             trackBarGreen.Value = int.Parse(labelGreen.Text);
  39.             trackBarBlue.Value = int.Parse(labelBlue.Text);
  40.             panelPreview.BackColor = Color.FromArgb(trackBarRed.Value, trackBarGreen.Value, trackBarBlue.Value);
  41.  
  42.             try
  43.             {
  44.                 WindowsIdentity user = WindowsIdentity.GetCurrent();
  45.                 WindowsPrincipal principal = new WindowsPrincipal(user);
  46.                 isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
  47.             }
  48.             catch
  49.             {
  50.                 isAdmin = false;
  51.             }
  52.             if (isAdmin == false)
  53.             {
  54.                 MessageBox.Show("Lütfen programı Yönetici (Administrator) olarak çalıştırın.");
  55.             }
  56.             timerCOM_listUpdater_Tick(null, null);
  57.         }
  58.  
  59.         private void pictureBoxColor_MouseDown(object sender, MouseEventArgs e)
  60.         {
  61.             isSelecting_pictureBoxColor = true;
  62.             try
  63.             {
  64.                 Bitmap bmpImage = (Bitmap)pictureBoxColor.Image;
  65.                 Color clr = bmpImage.GetPixel(e.X, e.Y);
  66.  
  67.                 panelPreview.BackColor = clr;
  68.  
  69.                 trackBarRed.Value = clr.R;
  70.                 labelRed.Text = trackBarRed.Value.ToString();
  71.                 trackBarGreen.Value = clr.G;
  72.                 labelGreen.Text = trackBarGreen.Value.ToString();
  73.                 trackBarBlue.Value = clr.B;
  74.                 labelBlue.Text = trackBarBlue.Value.ToString();
  75.             }
  76.             catch
  77.             {
  78.  
  79.             }
  80.         }
  81.  
  82.         private void pictureBoxColor_MouseUp(object sender, MouseEventArgs e)
  83.         {
  84.             isSelecting_pictureBoxColor = false;
  85.         }
  86.  
  87.         private void pictureBoxColor_MouseMove(object sender, MouseEventArgs e)
  88.         {
  89.             if (isSelecting_pictureBoxColor == true)
  90.             {
  91.                 try
  92.                 {
  93.                     Bitmap bmpImage = (Bitmap)pictureBoxColor.Image;
  94.                     Color clr = bmpImage.GetPixel(e.X, e.Y);
  95.  
  96.                     panelPreview.BackColor = clr;
  97.  
  98.                     trackBarRed.Value = clr.R;
  99.                     labelRed.Text = trackBarRed.Value.ToString();
  100.                     trackBarGreen.Value = clr.G;
  101.                     labelGreen.Text = trackBarGreen.Value.ToString();
  102.                     trackBarBlue.Value = clr.B;
  103.                     labelBlue.Text = trackBarBlue.Value.ToString();
  104.                 }
  105.                 catch
  106.                 {
  107.  
  108.                 }
  109.             }
  110.         }
  111.  
  112.         private void trackBarRed_Scroll(object sender, EventArgs e)
  113.         {
  114.             try
  115.             {
  116.                 panelPreview.BackColor = Color.FromArgb(trackBarRed.Value, panelPreview.BackColor.G, panelPreview.BackColor.B);
  117.                 labelRed.Text = trackBarRed.Value.ToString();
  118.             }
  119.             catch { }
  120.         }
  121.  
  122.         private void trackBarGreen_Scroll(object sender, EventArgs e)
  123.         {
  124.             try
  125.             {
  126.                 panelPreview.BackColor = Color.FromArgb(panelPreview.BackColor.R, trackBarGreen.Value, panelPreview.BackColor.B);
  127.                 labelGreen.Text = trackBarGreen.Value.ToString();
  128.             }
  129.             catch { }
  130.         }
  131.  
  132.         private void trackBarBlue_Scroll(object sender, EventArgs e)
  133.         {
  134.             try
  135.             {
  136.                 panelPreview.BackColor = Color.FromArgb(panelPreview.BackColor.R, panelPreview.BackColor.G, trackBarBlue.Value);
  137.                 labelBlue.Text = trackBarBlue.Value.ToString();
  138.             }
  139.             catch { }
  140.         }
  141.  
  142.         private void timerCOM_listUpdater_Tick(object sender, EventArgs e)
  143.         {
  144.             if (mouseOverMenu == false)
  145.             {
  146.                 try
  147.                 {
  148.                     ManagementObjectSearcher searcher =
  149.                         new ManagementObjectSearcher("root\\WMI",
  150.                         "SELECT * FROM MSSerial_PortName");
  151.  
  152.                     toolStripMenuItemConnect.DropDownItems.Clear();
  153.  
  154.                     foreach (ManagementObject queryObj in searcher.Get())
  155.                     {
  156.                         if (queryObj["InstanceName"].ToString().Contains("USB"))
  157.                         {
  158.                             toolStripMenuItemConnect.DropDownItems.Add(queryObj["PortName"].ToString(), null, MenuItemClickHandler);
  159.                         }
  160.                     }
  161.  
  162.                     if (toolStripMenuItemConnect.DropDownItems.Count == 0)
  163.                     {
  164.                         toolStripMenuItemConnect.DropDownItems.Add("Port Bulunamadı.");
  165.                     }
  166.                     else if (portStatus == false && connectedAtLeastOnce == false)
  167.                     {
  168.                         timerStatusUpdater.Stop();
  169.                         timerStatusUpdater.Start();
  170.                         toolStripStatusLabel1.Text = "Bağlanılabilecek portlar bulundu.";
  171.                         connectedAtLeastOnce = true;
  172.                     }
  173.                 }
  174.                 catch
  175.                 {
  176.                     if (toolStripMenuItemConnect.DropDownItems.Count == 0)
  177.                     {
  178.                         toolStripMenuItemConnect.DropDownItems.Add("Port Bulunamadı.");
  179.                     }
  180.  
  181.                     timerStatusUpdater.Stop();
  182.                     timerStatusUpdater.Start();
  183.                     toolStripStatusLabel1.Text = "Portlara erişilemiyor.";
  184.                 }
  185.             }
  186.         }
  187.  
  188.         private void MenuItemClickHandler(object sender, EventArgs e)
  189.         {
  190.             ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
  191.             // Take some action based on the data in clickedItem
  192.             // RS232 Connection
  193.             try
  194.             {
  195.                 if (serialPort1.IsOpen)
  196.                 {
  197.                     serialPort1.Close();
  198.                 }
  199.                 serialPort1.PortName = clickedItem.Text;
  200.                 serialPort1.Open();
  201.                 portStatus = true;
  202.                 iconConnected.Enabled = true;
  203.                 toolStripMenuItemConnect.Enabled = false;
  204.                 toolStripMenuItemDisconnect.Enabled = true;
  205.  
  206.                 timerStatusUpdater.Stop();
  207.                 timerStatusUpdater.Start();
  208.                 toolStripStatusLabel1.Text = "Bağlanıldı.";
  209.             }
  210.             catch
  211.             {
  212.                 portStatus = false;
  213.                 timerStatusUpdater.Stop();
  214.                 timerStatusUpdater.Start();
  215.                 toolStripStatusLabel1.Text = "Bağlanılamadı.";
  216.                 // MessageBox.Show(string.Format("Bağlanırken. Hata ayrıntısı:\n{0}", ex.ToString()), "Hata");
  217.             }
  218.         }
  219.  
  220.         private void toolStripMenuItemDisconnect_Click(object sender, EventArgs e)
  221.         {
  222.             try
  223.             {
  224.                 if (serialPort1.IsOpen)
  225.                 {
  226.                     serialPort1.Close();
  227.                 }
  228.                 iconConnected.Enabled = false;
  229.                 toolStripMenuItemConnect.Enabled = true;
  230.                 toolStripMenuItemDisconnect.Enabled = false;
  231.                 portStatus = false;
  232.  
  233.                 timerStatusUpdater.Stop();
  234.                 timerStatusUpdater.Start();
  235.                 toolStripStatusLabel1.Text = "Bağlantı kesildi.";
  236.             }
  237.             catch (Exception ex)
  238.             {
  239.                 timerStatusUpdater.Stop();
  240.                 timerStatusUpdater.Start();
  241.                 toolStripStatusLabel1.Text = "Bağlantı kesilemedi." + ex.Message.ToString();
  242.             }
  243.         }
  244.  
  245.         private void timerStatusUpdater_Tick(object sender, EventArgs e)
  246.         {
  247.             if (portStatus == true)
  248.             {
  249.                 toolStripStatusLabel1.Text = "Hazır.";
  250.                 connectedAtLeastOnce = true;
  251.  
  252.                 // Use this timer's same value to transfer data in a regular interval
  253.                 transferData = true;
  254.             }
  255.             else
  256.             {
  257.                 toolStripStatusLabel1.Text = "Bağlantı Yok.";
  258.                 iconConnected.Enabled = false;
  259.             }
  260.         }
  261.  
  262.         private void toolStripMenuItemExit_Click(object sender, EventArgs e)
  263.         {
  264.             if (portStatus)
  265.             {
  266.                 try
  267.                 {
  268.                     serialPort1.Close();
  269.                     portStatus = false;
  270.                 }
  271.                 catch
  272.                 {
  273.                     MessageBox.Show("Port düzgün olarak kapatılamadı.");
  274.                 }
  275.             }
  276.             Application.Exit();
  277.         }
  278.  
  279.         private void timerCommunication_Tick(object sender, EventArgs e)
  280.         {
  281.             string serialPortReceivedMessage;
  282.             if (portStatus == true && transferData == true)
  283.             {
  284.                 try
  285.                 {
  286.                     serialPortReceivedMessage = string.Empty;
  287.                     serialPort1.Write("R");
  288.                     if (Convert.ToInt32(labelRed.Text) > 1)
  289.                     {
  290.                         serialPort1.Write(new byte[] { Convert.ToByte(Convert.ToInt32(labelRed.Text) * 0.5) }, 0, 1);
  291.                     }
  292.                     else
  293.                     {
  294.                         serialPort1.Write(new byte[] { Convert.ToByte(labelRed.Text) }, 0, 1);
  295.                     }
  296.                     serialPort1.Write("G");
  297.                     serialPort1.Write(new byte[] { Convert.ToByte(labelGreen.Text) }, 0, 1);
  298.                     serialPort1.Write("B");
  299.                     serialPort1.Write(new byte[] { Convert.ToByte(labelBlue.Text) }, 0, 1);
  300.  
  301.                     Stopwatch stopwatch = Stopwatch.StartNew();
  302.                     while (true)
  303.                     {
  304.                         if (stopwatch.ElapsedMilliseconds >= 10)
  305.                         {
  306.                             break;
  307.                         }
  308.                         Thread.Sleep(1);
  309.                     }
  310.                     serialPortReceivedMessage = serialPort1.ReadExisting();
  311.                     if (serialPortReceivedMessage.Contains("K") == false)
  312.                     {
  313.                         serialPortErrorCount++;
  314.                         if (serialPortErrorCount >= 10)
  315.                         {
  316.                             serialPortErrorCount = 0;
  317.                             toolStripMenuItemDisconnect_Click(null, null);
  318.                             throw new Exception();
  319.                         }
  320.                     }
  321.                     else
  322.                     {
  323.                         serialPortErrorCount = 0;
  324.                     }
  325.                     transferData = false;
  326.                 }
  327.                 catch
  328.                 {
  329.                     toolStripMenuItemDisconnect_Click(null, null);
  330.                 }
  331.             }
  332.         }
  333.  
  334.         private void panelPreview_BackColorChanged(object sender, EventArgs e)
  335.         {
  336.             transferData = true;
  337.         }
  338.  
  339.         private void toolStripSettings_DropDownOpened(object sender, EventArgs e)
  340.         {
  341.             mouseOverMenu = true;
  342.         }
  343.  
  344.         private void toolStripSettings_DropDownClosed(object sender, EventArgs e)
  345.         {
  346.             mouseOverMenu = false;
  347.         }
  348.  
  349.         private void FormMain_FormClosed(object sender, FormClosedEventArgs e)
  350.         {
  351.             if (portStatus)
  352.             {
  353.                 try
  354.                 {
  355.                     serialPort1.Close();
  356.                 }
  357.                 catch
  358.                 {
  359.                     MessageBox.Show("Port düzgün olarak kapatılamadı.");
  360.                 }
  361.             }
  362.         }
  363.     }
  364. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement