FormSetting.cs 4.7 KB
using System.IO.Ports;
using System.Windows.Forms;
using MachineDll;

namespace App
{
    public partial class FormSetting : Form
    {
        public FormSetting()
        {
            InitializeComponent();
            ReadItsValue();
        }

        private void ReadItsValue()
        {
            cmbPortName.SelectedItem = SerialPortSetting.PortName;
            txtBaud.Text = SerialPortSetting.BautRate.ToString();
            txtDataBits.Text = SerialPortSetting.DataBits.ToString();
            BindParity();
            BindStopBits();
        }

        private void BindStopBits()
        {
            switch (SerialPortSetting.StopBits)
            {
                case StopBits.None:
                    cmbStopBits.SelectedIndex = 0;
                    break;
                case StopBits.One:
                    cmbStopBits.SelectedIndex = 1;
                    break;
                case StopBits.OnePointFive:
                    cmbStopBits.SelectedIndex = 2;
                    break;
                case StopBits.Two:
                    cmbStopBits.SelectedIndex = 3;
                    break;
                default:
                    ShowError();
                    break;
            }
        }

        private void BindParity()
        {
            switch(SerialPortSetting.Parity)
            {
                case Parity.None:
                    cmbParity.SelectedIndex = 0;
                    break;
                case Parity.Odd:
                    cmbParity.SelectedIndex = 1;
                    break;
                case Parity.Even:
                    cmbParity.SelectedIndex = 2;
                    break;
                default:
                    ShowError();
                    break;
            }
        }

        private void ShowError()
        {
            MessageBox.Show("无效的数据读取");
            btnConfirm.Enabled = false;
        }

        private void btnDefault_Click(object sender, System.EventArgs e)
        {
            SetDefaultValue();
        }

        private void SetDefaultValue()
        {
            cmbPortName.SelectedIndex = 0;
            txtBaud.Text = "9600";
            txtDataBits.Text = "8";
            cmbParity.SelectedIndex = 0;
            cmbStopBits.SelectedIndex = 1;
        }

        private void btnConfirm_Click(object sender, System.EventArgs e)
        {
           bool port = SetPortName();
           bool baud = SetBaudRate();
           bool Data = SetDataBits();
           bool Parity = SetParity();
           bool Stop = SetStopBits();

           if (port && baud && Data && Parity && Stop)
           {
               Close();
           }
           else
           {
               MessageBox.Show("有错误的输入,请检查");
           }
        }

        private bool SetStopBits()
        {
            switch (cmbStopBits.SelectedIndex)
            {
                case 0:
                    SerialPortSetting.StopBits = StopBits.None;
                    return true;
                case 1:
                    SerialPortSetting.StopBits = StopBits.One;
                    return true;
                case 2:
                    SerialPortSetting.StopBits = StopBits.OnePointFive;
                    return true;
                case 3:
                    SerialPortSetting.StopBits = StopBits.Two;
                    return true;
                default:
                    return false;
            }
        }

        private bool SetParity()
        {
           switch(cmbParity.SelectedIndex)
           {
               case 0:
                   SerialPortSetting.Parity = Parity.None;
                   return true;
               case 1:
                   SerialPortSetting.Parity = Parity.Odd;
                   return true;
               case 2:
                   SerialPortSetting.Parity = Parity.Even;
                   return true;
               default:
                   return false;
           }
        }

        private bool SetDataBits()
        {
            int dataBits;
            if (int.TryParse(txtDataBits.Text, out dataBits))
            {
                SerialPortSetting.DataBits = dataBits;
                return true;
            }
            else
            {
                return false;
            }
        }

        private bool SetBaudRate()
        {
            int baudRate;
            if (int.TryParse(txtBaud.Text, out baudRate))
            {
                SerialPortSetting.BautRate = baudRate;
                return true;
            }
            else
            {
                return false;
            }
        }

        private bool SetPortName()
        {
            SerialPortSetting.PortName = cmbPortName.SelectedItem.ToString();
            return true;
        }


    }
}