【发布时间】:2013-06-16 07:56:30
【问题描述】:
我大约有一个数据流。 500 Hz 来自串行端口。数据由控制机器的微处理器发送。数据被一个类过滤掉并显示在不同的文本框中,该类去除了传输协议使用的标题字符。 这是将我得到的四个变量分配给不同文本框的代码。
private void SetText(string text)
{
if (this.txtOutput.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.BeginInvoke(d, new object[] { text });
}
else
{
txtOutput.AppendText(text + "\r\n");
string a = "", b = "", c = "", d="";
string invia = text.ToString();
Stripper strp = new Stripper();
strp.Distri(invia, out a, out b, out c, out d);
if (a != "")
{
textBox7.Text = a; //currentRes
}
if (b != "")
{
textBox2.Text = b; //temperature
}
if (d != "" )
{
textBox3.Text = d; //motor current
}
if (c == "1\r") //motor RPM
{
timer3.Start();
}
}
}
我面临的问题是我每秒获得数百个值“a”、“b”和“d”,显然相关的文本框正在闪烁。此外,我想平均每个变量的值,每个变量取 100 个样本,然后在相关文本框中显示它们。这样可以避免闪烁并提供更准确的读数。
如何在不冻结同时必须为其他功能提供控制的应用程序的情况下将每个变量“a”、“b”和“d”平均到 x 个样本? 示例代码将不胜感激。
【问题讨论】:
标签: c# stream serial-port buffer average