串口接收数据不全,该怎么处理

串口接收数据不全
我用超级终端可以接收到数据,但我自己只能收到一半为什么 呢?哪里出错了?

串口接收数据不全,该怎么处理

串口接收数据不全,该怎么处理
------解决思路----------------------
用sp的异步接收回调函数也一样

它也并不能区分什么时候算一个完整的数据

所以任何时候执行这个回调都是有可能的

比如对方给你发了16个字节,可能接收到8个字节,它就已经执行了

你需要先把接收到的内容放到list<byte>里,然后再次接收到数据之后拼接到后面
------解决思路----------------------
这是我以前做的,你可以试一下,可能是比较笨的方法,发送指令后是休眠了一秒才去接收的返回数据。串口接收数据不全,该怎么处理

byte[] temp3 = mysendb("FF FF 02 02 FF FF");//结束操作
            byte[] temp1 = mysendb("FF FF 00 00 FF FF"); //复位指令
            byte[] temp2 = mysendb("FF FF 01 01 01 03 30 FF FF"); //设置操作时间指令
            
            try
            {
                if (!serialPort1.IsOpen)
                {
                    serialPort1.Open();
                }
                
                 serialPort1.Write(temp1, 0, 6);//发送复位数据
                 Thread.Sleep(1000);
                 byte[] recb = new byte[6];//接收复位返回值
                 int iffuwei = serialPort1.Read(recb, 0, 6);
                 if (iffuwei != 6)
                 {
                     MessageBox.Show("复位未成功!");
                     timer1.Start();
                     return;
                 }
                 Thread.Sleep(1000);
                 serialPort1.Write(temp2, 0, 9);//发送考核数据

                timer1.Stop();
                //启动定时
                timer3.Interval = 1000;
                timer3.Start();
            }
            catch
            {
                timer1.Start();
                return;
            }