2016-05-04 7 views
-1

私はシリアルポートからデータを読み込み、テキストファイルに保存しています。私はこのように、保存したテキストファイル内の行を数えたいSerialPortから着信データの行番号を付けるにはどうすればいいですか?

150101 05:01:29,4 0030;0000;00;00;00;00;0000;0000;80;10;E008 
    150101 05:01:29,5 0030;0000;00;00;00;00;0000;0000;80;10;E008 
    150101 05:01:29,6 0030;0000;00;00;00;00;0000;0000;00;10;E008 

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 

     RxString = serialPort1.ReadLine(); 
     this.Invoke(new EventHandler(DisplayText)); 
      AppendToFile(RxString); 
    } 
    private void DisplayText(object sender, EventArgs e) 
    { 

    textBox1.AppendText(RxString + Environment.NewLine); 
    } 

    private void AppendToFile(string toAppend) 
    { 

     string myFilePath = @"C: \Users\Glenn\Desktop\data1.txt"; 
     File.AppendAllText(myFilePath, toAppend + Environment.NewLine); 

    } 

150101 05:01:29,4 0030;0000;00;00;00;00;0000;0000;80;10;E008;1 
    150101 05:01:29,5 0030;0000;00;00;00;00;0000;0000;80;10;E008;2 
    150101 05:01:29,6 0030;0000;00;00;00;00;0000;0000;00;10;E008,3 

私のコードは次のようになりますように はテキストファイルに保存した後、私のデータが見えます

誰かが助けることができますか?

+0

にデータを追加しているだけで、あなたの番号を追加テキストファイル –

+0

あなたは例を挙げていただけますか? – user6203007

+0

** AppendToFile(RxString + i); **で追加できます。このような。一行のata時刻を送信しているので、 –

答えて

0

あなたの行番号を取得するには、それに追加するために必要なもののは、あなたが投稿しているビットのうち、適切な格好クラスを作ってみましょう、プラス:

public class SerialPortReader 
{ 
    private const _filePath = @"C:\Users\Glenn\Desktop\data1.txt"; 
    private Int32 _lineNumber = 1; 

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     RxString = serialPort1.ReadLine(); 
     this.Invoke(new EventHandler(DisplayText)); 
     AppendToFile(RxString); 
    } 

    private void DisplayText(object sender, EventArgs e) 
    { 
     textBox1.AppendText(RxString + Environment.NewLine); 
    } 

    private void AppendToFile(string toAppend) 
    { 
     var line = String.Format("{0};{1}\n", toAppend, _lineNumber); 
     File.AppendAllText(_filePath, line); 
     _lineNumber++; 
    } 
} 
+0

それは動作しますが、行番号はすべての行で同じままです。すべての行の行番号は1です。_lineNumber ++は機能しませんか? – user6203007

+0

毎回 'SerialPortReader'クラスをインスタンス化することをお勧めします。再利用された単一のインスタンスですが、これは起こりません。 – DonBoitnott

0

あなたは、クラスレベルの行カウンタを維持することができます

private int _currentRowNum = 1; 

次に、あなたがあなたのAppendToFile方法でこれを行うだろう:これは私がすべての行を取得simple.Hereすることができる

File.AppendAllLines(myFilePath, new string[] {string.Format("{0};{1}", toAppend, _currentRowNum.ToString())}); 
_currentRowNum++; 
+0

それは私にエラーが表示されます "私は2番目のファイルを作成せずに"メモ2: '文字列[]'から '文字列'に変換することはできません – user6203007

0

。最後に数字を追加して新しいファイルに書き込む。

string[] lines = File.ReadAllLines("../../Data/test.txt", Encoding.UTF8); 

List<string> list = new List<string>(); 
int lineCount=1; 
foreach(string line in lines) 
{ 
    list.Add(line + ";" + lineCount++); 
} 
File.WriteAllLines("../../Data/test.txt", list.ToArray()); 
+0

同じファイル内の行に番号を付けることはできますか?ありがとう – user6203007

+0

問題なし...変更あなたのコード –

関連する問題