none
同時讀寫在txtflie至chart顯示曲線問題 RRS feed

  • 問題

  • 寫入正常,讀入chart曲線失敗
     float a1;//Alpha1
                        float a2;//Alpha2
                        float a3;//合併
                        float b1; //Beta1
                        float b2;//Beta2
                        float b3;//合併
                        float c1;//Gamma1
                        float c2;//Gamma2
                        float c3;//合併
                        float i;//Delta
                        a1 = e.ThinkGearState.Alpha1 / 100000 * 121;//Alpha1
                        a2 = e.ThinkGearState.Alpha2 / 100000 * 121;//Alpha2
                        a3 = a2 - a1;
                        b1 = e.ThinkGearState.Beta1 / 100000 * 121;//Beta1
                        b2 = e.ThinkGearState.Beta2 / 100000 * 121;//Beta2
                        b3 = b2 - b1;
                        c1 = e.ThinkGearState.Gamma1 / 100000 * 121;//Gamma1
                        c2 = e.ThinkGearState.Gamma2 / 100000 * 121;//Gamma2
                        c3 = c2 - c1; 
                        i = (e.ThinkGearState.Delta / 100000 * 121);//Delta
                        label3.Text = "連接腦波儀成功!";
                        label1.Text = "雜訊: " + e.ThinkGearState.PoorSignal;
                        label2.Text = "放鬆: " + e.ThinkGearState.Meditation;
                        label9.Text = "集中度" + e.ThinkGearState.Attention;
                        label4.Text = "" + e.ThinkGearState.Raw;
                        label5.Text = ("Alpha1:" + a1);
                        label10.Text = ("Alpha2:" + a2);
                        label14.Text = ("Alpha:" + a3);
                        label7.Text = ("Beta1_1:" + b1);
                        label11.Text = ("Beta_2:" + b2);
                        label15.Text = ("Beta:"+b3);
                        label8.Text = ("Gamma1_1:" + c1);
                        label12.Text = ("Gamma1_2:" + c2);
                        label16.Text = ("Gamma1:"+c3);
                        label6.Text = ("Delta:" + i);
                        
                        label13.Text = ("Date time" + DateTime.Now.Second.ToString());
                        // label13.Text = ("Date time" + DateTime.Now.ToString());
                        progressBar1.Value = (int)(e.ThinkGearState.Meditation);
                        progressBar2.Value = (int)(e.ThinkGearState.Attention);
                        try
                        {
    
    
                            //int counter  =0;
                            System.IO.StreamWriter file = new System.IO.StreamWriter(@"E:\micheal\專案\brian\test.txt", true);
                            string k0 = string.Format("" + DateTime.Now.Second.ToString());
                            string k1 = string.Format(","+e.ThinkGearState.Raw);
                            string k2 = string.Format("," + a3);
                            string k3 = string.Format(","+b3);
                            string k4 = string.Format("," + c3);
                            string k5 = string.Format("," + i);
                            string lines = k0+k1+k2+k3+k4+k5+ Environment.NewLine;
                            file.WriteLine(lines);
                            textBox1.Text += lines + Environment.NewLine;
                           // FileStream fsw = new FileStream(@"E:\micheal\專案\brian\test.txt", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.Read);
                           // for ((line = file.ReadLine()) != null);
                           // {
                             //   string[] position = line.Split(',');
                             //   chart1.Series.Clear();
                             //   Series series1 = new Series("Alpha");
                              //  series1.ChartType = SeriesChartType.Spline;
                              //  series1.BorderWidth = 3;
                             //   series1.ShadowOffset = 1;
                             //   series1.Points.AddY(45);
                         //   }
                            file.Close();



    • 已編輯 FlyingBread 2016年6月20日 上午 03:15 修改標題贅字
    2016年6月14日 下午 03:27

所有回覆

  • 失敗有錯誤訊息嗎?應該是讀fsw吧,或者直接處理lines字串...
    2016年6月15日 上午 12:38
  • 沒有信訊
    2016年6月15日 上午 04:36
  • 沒有信訊
    讀.txt file失敗喔
    2016年6月15日 上午 04:37
  • FileStream fsw = new FileStream(@"E:\micheal\專案\brian\test.txt", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.Read);                                  
    byte[] b = new byte[1024];
                UTF8Encoding temp = new UTF8Encoding(true);
                while (fsw.Read(b,0,b.Length) > 0)
                {
                    string sTemp = temp.GetString(b);                                        
                    string[] position = sTemp.Split(',');   
                    chart1.Series.Clear();   
                    Series series1 = new Series("Alpha");  
                    series1.ChartType = SeriesChartType.Spline;  
                    series1.BorderWidth = 3;   
                    series1.ShadowOffset = 1;   
                    series1.Points.AddY(45);   
                }

    FileStream 類別

    2016年6月15日 上午 10:47
  • 持續寫入時,FileStream 為獨佔,就會不能 read 。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年6月15日 下午 03:47
  • 謝謝您~

    我回去試試看

    2016年6月16日 上午 04:45
  • 錯誤資訊如下:

    1.類型 'System.IO.IOException' 的未處理例外狀況發生於 mscorlib.dll

    2.其他資訊: 由於另一個處理序正在使用檔案 'G:\micheal\專案\brian\test.txt',所以無法存取該檔案。

    以上.

    看起來需要,暫停寫入後讀入資料但是在使用fsw時無法使用file.colse();

    2016年6月16日 下午 04:21
  •                string[] position = lines.Split(',');   
                    chart1.Series.Clear();   
                    Series series1 = new Series("Alpha");  
                    series1.ChartType = SeriesChartType.Spline;  
                    series1.BorderWidth = 3;   
                    series1.ShadowOffset = 1;   
                    series1.Points.AddY(45);   

    直接處理lines字串,應該不用讀文字檔吧...

    2016年6月17日 上午 12:44
  • 1.因為要做離線測試,故必須經檔案轉入系統.

    2.可以用EXCEL 轉到chart嗎?

    3.不過書上都先轉到sql資料庫,但是教授不肯.

    2016年6月17日 上午 04:39
  • 先file.Close再去讀fsw吧...
    2016年6月17日 上午 05:51
  • 不行耶,因為fsw 不能使用file.close 指令,故當fsw跑完後沒有釋放fsw,return 執行後,system.io.streamwriter file就會停止執行,訊息就會出現. 由於另一個處理序正在使用檔案 'G:\micheal\專案\brian\test.txt',所以無法存取該檔案。
    2016年6月18日 上午 08:54
  • 看起來沒生錯誤

    chart 無顯示

    1.程式內容如下:

                                                                                

     using (var wStream = new StreamWriter(filePath, true))
                            {
                                wStream.WriteLine(lines);
                            }
                            using (var rStream = new StreamReader(filePath))
                            {
                                string line;
                                while ((line = rStream.ReadLine()) != null)
                                {
                                    byte[] b = new byte[1024];

                                    UTF8Encoding temp = new UTF8Encoding(true);
                                    string sTemp = temp.GetString(b);
                                    string[] position = sTemp.Split(',');
                                    chart1.Series.Clear();
                                    Series series1 = new Series("Alpha");
                                    series1.ChartType = SeriesChartType.Spline;
                                    series1.BorderWidth = 3;
                                    series1.ShadowOffset = 1;
                                    series1.Points.AddY(b);
                                }
                            }

                        }
                        catch
                        {

                            textBox1.Text = "錯誤";

                        }
                        //

                        return;





                    }
                    else
                    {
                        label3.Text = "連接腦波儀成功!請戴妥腦波儀並耐心等待";
                        label1.Text = "雜訊: " + e.ThinkGearState.PoorSignal;
                        label2.Text = "放鬆: 0";

                    }

                    //  };
                }));
                Thread.Sleep(1000);
            }

    2.txt file內容如下:

    39,54,-16.44874,-13.05711,-51.44073,1144.569

    40,-215,-12.00683,-3.14842,-7.272099,230.4324

    41,-77,-417.2419,162.4498,-356.7431,2170.175

    42,180,5.355457,12.32506,-49.32202,1278.718

    44,-545,1.766602,0.5977364,10.19062,710.5628

    45,704,-109.741,-65.64371,-13.41406,1864.311

    46,115,-580.0934,82.87411,-156.1106,2545.038

    48,1408,4.836372,-3.057671,-7.03736,1048.853

    49,-362,-23.60347,-1.110779,-2.17679,470.5508

    50,-1253,-67.78057,-34.28656,4.611311,817.1602

    54,-899,-375.0782,273.0328,-271.6377,1183.259

    58,-394,-158.8452,712.5968,-102.4822,941.6111


    2016年6月19日 下午 02:50