zedGraph绘制串口数据时出现延时和卡机,要怎么解决。大约采集了40K左右的数据!

解决方案 »

  1.   

    推荐你用 doworer 去做,这样 就不会死机了, 用多线程在
      

  2.   

            #region 画图程序
            private void paint()
            {
                string s = "";
                LineItem mycurve;
                if (colloctdata.Count > 0)
                {
                    s = colloctdata.Dequeue();
                    Xray_position.Text = System.Convert.ToString(System.Convert.ToDouble(System.Convert.ToInt16(s.Substring(25, 5).Replace(" ", ""), 16))/200);
                    collect_position.Text = System.Convert.ToString(System.Convert.ToDouble(System.Convert.ToInt16(s.Substring(31, 5).Replace(" ", ""), 16)) / 200);
                    if (string.Equals(s.Substring(0, 11), "68 03 07 08"))
                    {
                        double x = System.Convert.ToDouble(System.Convert.ToDouble(System.Convert.ToInt16(s.Substring(31, 5).Replace(" ", ""), 16)) / 200);
                        double y = System.Convert.ToDouble(System.Convert.ToInt32(s.Substring(12, 11).Replace(" ", ""), 16));
                        string showdata = '\n'+x.ToString().PadRight(7) + y.ToString().PadLeft(6)+"\n\r";
                        safeAddtrText(showdata);//显示数据的委托
                        list.Add(x, y);
                        mycurve = zedGraphControl1.GraphPane.AddCurve("", list, Color.Red, SymbolType.None);
                        mycurve.Line.IsAntiAlias = true;//设置连接线的抗锯齿效果
                        this.zedGraphControl1.GraphPane.AxisChange();
                        //this.zedGraphControl1.Invalidate();
                        this.zedGraphControl1.Refresh();
                    } 
                }            
            }
            #endregion
    这是我写的画图显示!