2016-03-27 4 views
1

私は温度ロガーを構築しています。最後に貼り付けるのではなく、文字列の先頭が上書きされるのはなぜですか?

screenshot:http://imgur.com/U74v4AT;

while (true) 
{ 
     string line = myport.ReadLine(); // line = *"T: 18.40"* 

     if (line.StartsWith("T")) 
     { 
      line = line.Substring(3) + "°C"; 
      Console.WriteLine(line); 
      // output is *"°C.40"* instead of *"T: 18.40°C"*     
     } 
} 
+0

コードに間違いはありません。あなたの 'line'は_really_' T:18.40'ですか? –

+0

Sonerに同意すると、このコードは期待通りに動作するはずです。少なくともあなたが "18.40℃"を予期していれば。あなたは "T:18.40°C"と書いていますが、 "18.40°C"は実際に欲しいものです。 –

+0

入力があなたの言う通りであれば、このコードは '18.40℃ 'を出力します。 – DavidG

答えて

5

、コンソール画面に出力はラインが実際に何であるかの良い表現ではありません。

Console.WriteLine("18.40\r°C") 

°のような画面になりますC.40

一つの解決策は、myportからの入力をきれいにすることです(私はguesss SERIALPORTを?)

string line = myport.ReadLine(); // line = "T: 18.40\r" 
line = line.Trim();    // remove all leading/trailing whitespace 

しかし、それは起こってはいけません。 ReadLine()は行末を削除しているはずです。あなたのmyport.NewLineプロパティは"\n"に設定されていますが、"\r\n"に設定されている必要があります。

+2

これが解決策でした! – MatMis

-1

この行は、予想されていない可能性が最も高いです。 これを試してください。より安定しているかもしれません。ほとんどの場合、あなたの入力行が"\r"済みです

line = line.Split(' ').Last() + "°C"; 
+0

これは同じ出力を持っています – MatMis

+0

あなたはそれが今解決されてうれしい! –

関連する問題