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

 我来答
茂尔答题
推荐于2019-10-19 · TA获得超过750个赞
知道答主
回答量:5
采纳率:0%
帮助的人:855
展开全部

代码如下:

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

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式