c# 串口通信高端写法

      public SerialPort BurnDevice;
        private StringBuilder builder = new StringBuilder();

        public string receive_content = string.Empty;

   /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="com">烧录器对应的串口号</param>
        /// <param name="Baudrate">波特率默认115200</param>
        /// 
        public className(string com, int Baudrate = 115200)
        {


        
            try
            {
                if (com == null)
                    com = SerialPort.GetPortNames()[0];
                BurnDevice = new SerialPort();


                BurnDevice = new SerialPort(com, Baudrate, Parity.None, 8, StopBits.One);
                /// <summary>
                /// ConfigureMgr.getInstance().getValue()用于获取配置文件
                /// 为个burner的实例绑定相应的数据接收处理事件
                /// </summary>
                //if (ConfigureMgr.getInstance().getValue("Burn1Comport") == com)
                BurnDevice.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
                if (BurnDevice.IsOpen == false)
                {
                    try
                    {
                        BurnDevice.Open();
                    }
                    catch (Exception)
                    {
                        if (MessageBox.Show("串口打开失败,请检查接口并重插","请确认",MessageBoxButtons.OKCancel) == DialogResult.OK)
                        {
                            BurnDevice.Open();
                        }
                    }
                    
                }


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                //Log.writeLog(ex.ToString(), ErrorLevel.ERROR, "PL03");
            }

        }

 /// <summary>
        /// 从串口收到数据时调用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// 

public void serialPort_Burn1DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try

            {        

               int n = BurnDevice.BytesToRead;
                
                if (n == 0)
                    return;

                 string recvStr = string.Empty;


                byte[] buf = new byte[n];

                BurnDevice.Read(buf, 0, n);

              builder.Clear();
                builder.Append(Encoding.ASCII.GetString(buf));

              receive_content = builder.ToString();//解析这个就好

}catch.......不细写了

}

猜你喜欢

转载自blog.csdn.net/qq_20410891/article/details/80569873