appwyp 2022-09-02 01:30 采纳率: 43.8%
浏览 308
已结题

C# 用 多个chart 画多个动态曲线图 卡死

采用C#的chart来画动态曲线图(chart1, chart2, char3, chart4) ,大约每100毫秒收到串口送过来的数据50 个bytes左右
char1的曲线基本上卡死,char2曲线更新缓慢,char3曲线流畅, chart4 曲线能更新正常。 I7 cpu ,32Gb RAM 电脑上测试。

串口送到数据事件后

Invoke(new RecvCOMDataDelegate(UpdateUIData), new object[] { readBytes });

UI 主线程来画4个charts
四个chart的 X轴 用同个long xSeq来叠加,如果用时间戳没足够空间显示,时间戳毕竟太长,
Y轴是来自串口收到的数据。但要求能够动态更新Y轴的最大和最小值。

private void UpdateUIData(byte[] readBytes)
{
xSeq++;
//char1
//char2
//char3

// chart4 for curve W1 , W2
int w1_raw = ...
int w2_raw = ...
chart4W1W2.Series[0].Points.AddXY(xSeq, w1_raw);
chart4W1W2.Series[1].Points.AddXY(xSeq, w2_raw);
//保持100个点
if (chart4W1W2.Series[0].Points.Count > 100)
{
chart4W1W2.Series[0].Points.RemoveAt(0);
}

    if (chart4W1W2.Series[1].Points.Count > 100)
    {
        chart4W1W2.Series[1].Points.RemoveAt(0);
    }
  //下面是获取W1 曲线Y轴的最大和最小值
    DataPoint w1_maxdp = chart4W1W2.Series[0].Points.FindMaxByValue();
    DataPoint w1_mindp = chart4W1W2.Series[0].Points.FindMinByValue();
    double[] w1s_max = w1_maxdp.YValues;
    double[] w1s_min = w1_mindp.YValues;

      //下面是获取W2 曲线Y轴的最大和最小值
    DataPoint w2_maxdp = chart4W1W2.Series[1].Points.FindMaxByValue();
    DataPoint w2_mindp = chart4W1W2.Series[1].Points.FindMinByValue();
    double[] w2s_max = w2_maxdp.YValues;
    double[] w2s_min = w2_mindp.YValues;
   

   //比较w1 和 w2谁的最小值最小,和谁的最大值最大
    axY_min = ((w1s_min[0] < w2s_min[0] ? w1s_min[0] : w2s_min[0]) - 500);
    axY_max = ((w1s_max[0] > w2s_max[0] ? w1s_max[0] : w2s_max[0]) + 500);

    chart4W1W2.ChartAreas[0].AxisY.Minimum = axY_min;
    chart4W1W2.ChartAreas[0].AxisY.Maximum = axY_max;

    chart4W1W2.ChartAreas[0].AxisX.Minimum = chart4W1W2.Series[0].Points[0].XValue;
    chart4W1W2.ChartAreas[0].AxisX.Maximum = xSeq;
  • 写回答

4条回答 默认 最新

  • IT里的交易员 2022-09-02 07:45
    关注

    先检查数据格式是否统一,尤其是时间轴数据,如果采集的格式或刻度不一致,容易导致同步问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月7日
  • 赞助了问题酬金50元 9月2日
  • 创建了问题 9月2日

悬赏问题

  • ¥15 PPOCRLabel
  • ¥15 网友们我该怎么办啊,急
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡