C# 串口接收数据在UI控件上显示不同步 15

我现在通过硬件发送数据波特率115200数据2秒一发。上位机接收数据用的是C#winform使用DataReceived这个自带的方法接收数据。前台用了一个RichTex... 我现在通过硬件发送数据 波特率115200 数据2秒一发 。上位机接收数据用的是C# winform 使用DataReceived 这个自带的方法接收数据。前台用了一个RichTextBox 控件显示。
我设置了一个变量 i 只要一进DataReceived 方法 自加一次,值赋给RichTextBox 。如果正确现在的显示就应该是RichTextBox的数一秒加一次 1,2,3,4.....一直加下去。但是现在的显示是1 ,3,,5,7, 9 , 12。但是自己实验了一下,开了一个定时器 一秒给RichTextBox 赋值 一次 就可以显示 !不知道为什么,感觉是因为跨线程更新控件比较慢!代码如下:
int i=0;SetValues_Thead a;
void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if(!com.Sp.IsOpen)
{
MessageBox.Show("Com Error");
}

if (rtb_Test.InvokeRequired)
{
i = i + 1;
this.Invoke(a,i);
}
else
{
rtb_Test.Text = i.ToString();
}
}

private delegate void SetValues_Thead(int i);

void SetValue(int k)
{
rtb_Test.Text = (i).ToString();
}
展开
 我来答
syht2000
高粉答主

2015-01-21 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

把i=i+1也就是i++移到这里来看看,另外串口本身有缓冲的,你两秒发送一次并不能保证上位机一定是两秒收一次数据。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式