【发布时间】:2021-03-13 12:27:15
【问题描述】:
我想绘制从 TCP 服务器获取的所有数据点。但我想不出一种方法来绘制所有数据点。相反,目前我将字符串打印到文本框中。从文本框中只打印第一行。 这是示波器 GUI 的实时数据绘图。 如何绘制所有值。
我用 I2S 麦克风对正弦波进行了测试,当使用以下代码绘制时,它给出了一个失真的信号。
int t;
private void Timer1_Tick(object sender, EventArgs e)
{
one = new Thread(test);
one.Start();
t++;
}
public void test()
{
byte[] bytes = new byte[client.ReceiveBufferSize];
var readCount = stream.Read(bytes, 0, bytes.Length);
string datastring = Encoding.UTF8.GetString(bytes);
txtdata.Invoke((MethodInvoker)(() => txtdata.Text = datastring.Substring(0, 100)));
txtno.Invoke((MethodInvoker)(() =>
txtno.Text = ("\nnumber of bytes read: " + readCount)
));
String ch1 = txtdata.Text; ;
String[] ch1y = ch1.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
for (int a = 1; a < ch1y.Length - 1; a++)
{
chart1.Invoke((MethodInvoker)(() =>
chart1.Series[0].Points.AddXY(t, Convert.ToDouble(ch1y[a]))
));
}
}
【问题讨论】:
-
定时器的间隔是多少?
-
1 毫秒 @ChrisSchaller。
-
您的方法是否在该时间范围内完成,我怀疑您很容易获得竞争条件
-
client到底是什么? -
客户端是PC,服务器是ESP32模块@ChrisSchaller
标签: c# winforms charts tcpclient