关于SerialPort串口发送指令的时候会收到三次

关于SerialPort串口发送指令的时候会收到三次,要怎么丢去第一包数据,只留下第二三包数据

SerialPort sp=new SerialPor();
//发送数据
                    try
                    {
                        sp.Write(tx, 0, txlen); 
                    }
                    catch
                    {
                        ret = false;
                    }
                    //接收数据
                    if (ret)
                    {
                        
                        Thread.Sleep(500);
                        //读取数据
        

                try
                        {
                            //int n = sp.BytesToRead;
                            rx_act = sp.Read(rx, 0, RX_BUF_LENGTH);
                            //buffer.AddRange(rx);
                            //while (buffer.Count <= 6) { 
                            ////buffer
                            //}
                            sp_status = true;
                        }
                        catch (Exception ex)
                        {
                            sp_status = false;
                            ret = false;
                        }
                        //sp_status = true;
                    }

img

我也是一个刚要学C#的萌新,你看看这个函数前面的引用。把引用中的其中两个删掉就可以了

你判断一下,不需要的数据别处理不就得了
对方设备的协议就这么规定的,要先给你重复你发的内容,再给你发数据,这没办法
对方设备的程序你改不了,它给你发了你就只能收,收了别管不就得了

你说的3次其实数据并不一样,需要整体处理。
另外,串口数据本质上并不是以帧为单位的,串口调试软件只是为了显示方便,才按长度或间隔时间显示为一段一段的,实际使用里虽然也有以时间作为帧划分依据的,但这个和调试助手的划分标准未必一致。