FrmLight.cs 4.0 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CodeSplice
{
    public partial class FrmLight : Asa.Theme.FlatForm
    {
        private string Command;
        private System.IO.Ports.SerialPort port;

        public FrmLight()
        {
            InitializeComponent();
        }

        private void WriteCmd()
        {
            if (!port.IsOpen) return;
            Command = "S";
            if (flatCheck1.Checked)
                Command += string.Format("{0:000}T", flatTrack1.Value);
            else
                Command += "001F";
            if (flatCheck2.Checked)
                Command += string.Format("{0:000}T", flatTrack2.Value);
            else
                Command += "001F";
            if (flatCheck3.Checked)
                Command += string.Format("{0:000}T", flatTrack3.Value);
            else
                Command += "001F";
            if (flatCheck4.Checked)
                Command += string.Format("{0:000}T", flatTrack4.Value);
            else
                Command += "001F";
            Command += "C#";
            port.Write(Command);
        }

        private void FrmLight_Load(object sender, EventArgs e)
        {
            port = new System.IO.Ports.SerialPort
            {
                BaudRate = 19200,
                DataBits = 8,
                Parity = System.IO.Ports.Parity.None,
                StopBits = System.IO.Ports.StopBits.One
            };

            Command = Common.Config.LightOpen;
            flatTrack1.Value = Convert.ToInt32(Command.Substring(1, 3));
            flatCheck1.Checked = Command.Substring(4, 1) == "T" ? true : false;
            flatTrack2.Value = Convert.ToInt32(Command.Substring(5, 3));
            flatCheck2.Checked = Command.Substring(8, 1) == "T" ? true : false;
            flatTrack3.Value = Convert.ToInt32(Command.Substring(9, 3));
            flatCheck3.Checked = Command.Substring(12, 1) == "T" ? true : false;
            flatTrack4.Value = Convert.ToInt32(Command.Substring(13, 3));
            flatCheck4.Checked = Command.Substring(16, 1) == "T" ? true : false;
            flatLabel1.Text = flatTrack1.Value.ToString();
            flatLabel2.Text = flatTrack2.Value.ToString();
            flatLabel3.Text = flatTrack3.Value.ToString();
            flatLabel4.Text = flatTrack4.Value.ToString();

            CboPort.ItemAdd(System.IO.Ports.SerialPort.GetPortNames());
            CboPort.Text = Common.Config.LightPort;
        }

        private void FrmLight_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (port == null) return;
            if (port.IsOpen) port.Close();
        }

        private void BtnOK_Click(object sender, EventArgs e)
        {
            Common.Config.LightPort = CboPort.Text;
            Common.Config.LightOpen = Command;
            Close();
        }

        private void BtnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void CboPort_SelectedIndexChanged(object sender)
        {
            if (CboPort.SelectedIndex == -1) return;
            if (port == null) return;
            try
            {
                if (port.IsOpen) port.Close();
                port.PortName = CboPort.Text;
                port.Open();
            }
            catch (Exception ex)
            {
                Common.Log.Out("Error: " + ex.ToString());
                MessageBox.Show(ex.ToString());
            }
        }

        private void FlatCheck_CheckedChanged(object sender)
        {
            WriteCmd();
        }

        private void FlatTrack_ValueChanged(object sender)
        {
            WriteCmd();
            Asa.Theme.FlatTrack ft = sender as Asa.Theme.FlatTrack;
            string s = ft.Name.Substring(9);
            Controls["flatLabel" + s].Text = ft.Value.ToString();
        }
    }
}