C#串口通信SerialPort

C#串口通信SerialPort

        public KopSoftSerialPort()
        {
            InitializeComponent();

            //获取串口
            cbPortName.Items.AddRange(SerialPort.GetPortNames());
            if (cbPortName.Items.Count > 0)
            {
                cbPortName.SelectedIndex = 0;
            }

            cbBaudRate.SelectedIndex = 5;
            cbDataBits.SelectedIndex = 2;
            cbParity.SelectedIndex = 0;
            cbStopBits.SelectedIndex = 0;

            pictureBox1.Image = KopSoftTool.Properties.Resources.red;
        }
        /// <summary>
        /// 打开串口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (cbPortName.Items.Count <= 0)
            {
                MessageBox.Show("没有发现串口,请检查线路!");
                return;
            }

            btnSend.Enabled = false;
            serialPort.Encoding = Encoding.GetEncoding("gb2312"); //解决串口接收中文乱码

            if (serialPort.IsOpen == false)
            {
                serialPort.PortName = cbPortName.SelectedItem.ToString();
                serialPort.BaudRate = Convert.ToInt32(cbBaudRate.SelectedItem.ToString());
                serialPort.Parity = (Parity)Convert.ToInt32(cbParity.SelectedIndex.ToString());
                serialPort.DataBits = Convert.ToInt32(cbDataBits.SelectedItem.ToString());
                serialPort.StopBits = (StopBits)Convert.ToInt32(cbStopBits.SelectedItem.ToString());
                try
                {
                    serialPort.Open();
                    btnSend.Enabled = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                btnOpen.Text = "关闭串口";
                pictureBox1.Image = KopSoftTool.Properties.Resources.green;

                serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived); //绑定事件
            }
            else
            {
                try
                {
                    serialPort.Close();
                    btnSend.Enabled = false;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                btnOpen.Text = "打开串口";
                pictureBox1.Image = KopSoftTool.Properties.Resources.red;
            }
        }
View Code
        public void UpdateRecevie(object NewData)
        {
            if (this.InvokeRequired) //等待异步
            {
                UpdateString myInvoke = new UpdateString(UpdateRecevie);
                Invoke(myInvoke, new object[] { NewData });
            }
            else
            {
                textBox2.AppendText(NewData.ToString());
                //textBox2.SelectionStart = textBox2.Text.Length - 1;
                textBox2.ScrollToCaret();
            }
        }

猜你喜欢

转载自www.cnblogs.com/williamyoung/p/10623448.html