2016-03-27 2 views
1

Я строю температурный регистратор.Почему начало строки перезаписывается, а не вставляется в конец?

скриншот: 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

Я не вижу ничего плохого в вашем коде. Вы уверены, что ваша 'строка' _really_' T: 18.40'? –

+0

Согласен с Soner, этот код должен работать должным образом. По крайней мере, если вы ожидаете «18,40 ° C». Вы написали «T: 18.40 ° C», но «18.40 ° C» - это то, что вы на самом деле хотите, не так ли? –

+0

Если вход такой, как вы говорите, тогда этот код выведет '18.40 ° C'. – DavidG

ответ

5

Скорее всего, ваша входная строка заканчивается "\r", выход на экране консоли не хорошее представление о том, что линия на самом деле.

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

будет выглядеть на экране, как

° C.40

один раствор для очистки ввода от myport (а SerialPort я guesss?)

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

Линия, скорее всего, не то, что вы ожидаете от нее. Попробуйте это, возможно, более стабильным.

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

У этого же выхода – MatMis

+0

Стоит попробовать. Рад, что вы все решили. –

Смежные вопросы