如何用C#的serialport类接收单片机发送的数据

2025-03-03 07:46:20
推荐回答(3个)
回答1:

///

        /// 读取返回数据

        ///

        ///

        private string Read()

        {

            //获得返回数据

            string Return = "";

            string ShowReturn = "";  //显示的命令

            try

            {

                Thread.Sleep(100);


                int len = this.serialPort1.BytesToRead;

                if (len > 0)

                {

                    byte[] data = new byte[len];

                    if (len > 0)

                    {

                        for (int i = 0; i < len; i++)

                            data[i] = (byte)this.serialPort1.ReadByte();

                    }

                    for (int i = 0; i < data.Length; i++)

                    {

                        if (data[i] == 0)

                        {

                            Return += "00";

                            ShowReturn += "00" + " ";

                        }

                        else if (data[i] < 16)

                        {

                            Return += "0" + Convert.ToString(data[i], 16);

                            ShowReturn += "0" + Convert.ToString(data[i], 16) + " ";

                        }

                        else

                        {

                            Return += Convert.ToString(data[i], 16);

                            ShowReturn += Convert.ToString(data[i], 16) + " ";

                        }

                    }

                }

                else

                {

                    Return = "未接受到返回数据";

                }

            }

            catch (Exception ex)

            {

                Return = ex.Message;

            }

            this.txtMessage.AppendText(ShowReturn + "\r\n");

            return Return.ToUpper();

        }


这是以前写的一段代码,你改改吧

回答2:

有读数据啊serialPort1.ReadLine().ToString (); 这不就是从串口中读数据
其实可以添加一个串口接收数据的事件,这样有数据过来,就可以读了

回答3:

serialport打开后,不要关闭,定义接收数据的委托函数,在委托函数里处理数据