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

2020-06-05 教育 109阅读

代码如下:

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 = "";

}

}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com