2011-05-13 11 views
0

バッファにデータがあるときにシリアルポートからデータの行を読み込む以下のコードを貼り付けましたが、余分な空白行を印刷しています私が間違っていることは何ですか?C#で空白を取り除くことに問題がある

static void Port1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    int i = 0; 
    int end = -1; 
    SerialPort Port1 = (SerialPort)sender; 
    String GPSMessage = ""; 

    while (end == -1) 
    { 
     int GPStoRead = Port1.BytesToRead; 
     byte[] GPSbuffer = new byte[GPStoRead]; 
     Port1.Read(GPSbuffer, 0, GPSbuffer.Length); 
     buffer = Utility.CombineArrays(buffer, GPSbuffer); 
     for (i = 0; i < buffer.Length; i++) 
     { 
      if (buffer[i] == '\r') 
      { 
       end = i;       
      }  
     }         
    } 

    GPSMessage += new String(System.Text.Encoding.UTF8.GetChars(Utility.ExtractRangeFromArray(buffer, 0, end))); 
    GPSMessage.TrimEnd(); 
    if (GPSMessage != "") 
    { 
     Debug.Print(GPSMessage); 
    } 

    buffer = Utility.ExtractRangeFromArray(buffer, end, buffer.Length - end); 
} 
+0

バッファとは何ですか? – ColWhi

+0

私はメインプログラムクラスのバッファを自分で宣言しました。私はそれを投稿に追加してくださいね。 – Richard

答えて

7

トリミングされたテキストが返されます。

GPSMessage = GPSMessage.TrimEnd(); 
+0

ニースキャッチ!私はこれをほとんど3分間見て、それを見なかった+1 –

+0

愚かな私は、キャッチをありがとう。トリムに変更する必要があります。推測線のリターンはバッファーに戻ってきた – Richard

1

行末はプラットフォームによって異なりますが、\ r、\ r \ n、または\ nにすることができます。 Environment.NewLineは、コンパイルプラットフォーム用の行末文字が何であれになります。

おそらく新しい行を取り除くために単純な置き換えを試してみてください。

string foo = GetSomeSortOfMultilineText(); 
foo = foo.Replace(Environment.NewLine, String.Empty); 

これが完全にやろうとしているものに合っているのかどうかはわかりませんが、そこに行ってください。 :)