c#DataReceived收到的数据包不完全

privatevoidComport_DataReceived(objectsender,SerialDataReceivedEventArgse){intn=compo... private void Comport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n = comport.BytesToRead;
byte[] buf = new byte[n];
comport.Read(buf, 0, n);
builder.Clear();
this.Invoke((EventHandler)(delegate
{
builder.Append(Encoding.ASCII.GetString(buf));
buffer = (Encoding.ASCII.GetString(buf)).ToString();
Fixture2_message.AppendText(builder.ToString());
if (buffer.Contains("{{(rxPacket)}"))
{
count++;//为全部变量
Fixture1_message.AppendText(count.ToString() + ",");
}
}));
}
当发指令后,DataReceived理论会收到100个包,但是现在我这样写代码,只收到98个,不知道出错在哪里,请帮忙看看。
展开
 我来答
语句定义符
2017-06-03 · 超过129用户采纳过TA的回答
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:116万
展开全部
个属于很正常的现象,串口本身有缓冲机制,比如说你一次发送50个数据,那很可能是分成几次发送的,串口默认的ReceivedBytesThreshold是1,也就是说接收缓冲区中收到1个字节就会引发DataReceived,此时你肯定是没有收到所有数据的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式