MFC串口接收数据,如何接受正确的一串数据?

2024年11月29日 12:56
有1个网友回答
网友(1):

代码如下:

var msg = Encoding.Default.GetString(this.buf.ToArray());                         

2.完整性判断while (msg.Length > BeginOfLine.Length + EndOfLine.Length)//至少要包含头(2字节)+长度(1字节)+校验(1字节)。   

{

if (msg.IndexOf(BeginOfLine) == 0)      

{                    

if (msg.IndexOf(EndOfLine) > 0)  

{  

this.Raw = new byte[msg.IndexOf(EndOfLine) - BeginOfLine.Length + 1];

this.buf.CopyTo(BeginOfLine.Length, this.Raw, 0, msg.IndexOf(EndOfLine) - BeginOfLine.Length);   

this.buf.RemoveRange(0, msg.IndexOf(EndOfLine) + EndOfLine.Length);                         if (this.buf.Count > 0)

{

msg = Encoding.Default.GetString(this.buf.ToArray());

}

else msg = "";

this.OnGetNew(this.Raw);

}

else

{

break;

}  

}

else

{

//这里是很重要的,如果数据开始不是头,则删除数据。

int index = msg.IndexOf(BeginOfLine);

if (index > 0)

{

this.buf.RemoveRange(0, index);

msg = msg.Substring(index,msg.Length- index);

}

else

{

if(this.buf.Count>0)this.buf.RemoveAt(0);

msg = "";

}

}