buffer.CopyTo(0, binary_data_1, 0, len + 4);//复制一条完整数据到具体的数据缓存
data_1_catched = true;
buffer.RemoveRange(0, len + 4);//正确分析一条数据,从缓存中移除数据。
}
else
{
//这里是很重要的,如果数据开始不是头,则删除数据
buffer.RemoveAt(0);
}
}
//分析数据
if (data_1_catched)
{
//我们的数据都是定好格式的,所以当我们找到分析出的数据1,就知道固定位置一定是这些数据,我们只要显示就可以了
string data = "\r\n" + binary_data_1[3].ToString("X2") + " " + binary_data_1[4].ToString("X2") + " " +
binary_data_1[5].ToString("X2") + " " + binary_data_1[6].ToString("X2") + " " +
binary_data_1[7].ToString("X2");
//更新界面
this.Invoke((EventHandler)(delegate { textData.Text = data; }));
}
//如果需要别的协议,只要扩展这个data_n_catched就可以了。往往我们协议多的情况下,还会包含数据编号,给来的数据进行
//编号,协议优化后就是: 头+编号+长度+数据+校验
//</协议解析>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////