2011-03-18 42 views
0

我正在使用一個程序從文件中讀取數據並實時繪製圖表。我的數據流來自微控制器輸出,我正在構建一個界面來顯示數據。我在我的例程中使用流式閱讀器,但我遇到了問題。StreamReader或其他方法?做我想做的事

我想要做的是獲得一條線,繪製它,並獲取方法內的下一行。你能否指導我如何使用它來做到這一點。我是C#的新手,我認爲流式閱讀器是做到這一點的最佳方式。我只是需要一種能夠在新的觀點出現時閱讀的方式。

謝謝。

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (curve == null) return; 

    IPointListEdit list = curve.Points as IPointListEdit; 

    if (list == null) return; 

    double time = (Environment.TickCount - tickStart)/1000.0; 
    try 
    { 
     //PROBLEM (NEED TO READ ONE LINE THIS TIME AND THE NEXT LINE IN THE NEXT CALL 
     StreamReader sr = new StreamReader("TestFile.txt"); 
     String line;  
     line = sr.ReadLine(); 
     double value = double.Parse(line); 
     list.Add(time, value); 
    } 
    catch (Exception err) 
    { 
     MessageBox.Show(err.Message); 
    } 

    //graphing code 
} 
+0

文件是在讀取點時寫入的,還是假定爲完整的? – BrokenGlass 2011-03-18 21:24:00

+0

我認爲文件正在寫入,當新信息到達時他需要繪製它。 – Marcote 2011-03-18 21:31:25

+0

我認爲你需要類似Unix/Linux的尾部工具。也許這個問題:http://stackoverflow.com/questions/1197226/c-tail-like-program-for-text-file有幫助。 – Marcote 2011-03-18 21:32:48

回答

2

您將需要緩存讀取器並重構一下代碼。

基本上,如果你想在每個刻度線上讀一行,你需要將你的讀者移出你的方法,並將其設置爲一個字段。現在,當發生滴答時,它將獲取之前使用的相同閱讀器實例。這意味着它與您上次閱讀的文件位於同一位置。所有你需要做的就是調用ReadLine()來獲得下一行。

您目前設置的方式是,您每打開一個打勾並只讀第一行。只是一個FYI,當ReadLine返回null時,你已經到達文件的末尾。

下面的代碼只是它可以如何設置的模型,並希望給你一些關於它如何工作的想法。

StreamReader _reader; 

    public void Init() 
    { 
     _reader = new StreamReader("FileName.txt"); 
     _timer.Start(); 
    } 

    public void timer_Tick(object sender, EventArgs e) 
    { 
     if (curve == null) 
      return; 

     IPointListEdit list = curve.Points as IPointListEdit; 

     if (list == null) 
      return; 

     double time = (Environment.TickCount - tickStart)/1000.0; 
     try 
     { 
      string line = _reader.ReadLine(); 
      if (line == null) 
      { 
       _timer.Stop(); 
       return; 
      } 
      double value = double.Parse(line); 
      list.Add(time, value); 
     } 
     catch (Exception err) 
     { 
      //Do Something 
     } 

    } 
+0

另外,請將讀者置於某處! – 2011-03-18 21:37:13

+0

打開此文件時,文件無法更新。 – 2011-03-18 21:38:54

+0

是的,文件正在寫入,而我正在閱讀。我現在沒有考慮過,但我懷疑會有問題。 – Programmer 2011-03-18 21:39:24

相關問題