2011-05-13 2 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

멋진 catch! 나는 이것을 거의 3 분 동안 보았고 +1을 보지 못했다. –

+0

어리석은 나를, 고마워한다. 또한 변경해야합니다 .Trimend to Trim. 추측 라인 리턴은 버퍼로 다시 던져지고있었습니다. – Richard

1

행의 끝은 플랫폼에 따라 다르며 \ r, \ r \ n 또는 \ n 일 수 있습니다. Environment.NewLine은 편집 플랫폼의 줄 끝 문자가 무엇이든간에됩니다.

아마도 새 줄을 제거하기 위해 간단한 바꾸기를 시도해보십시오.

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

당신이 완전히하려는 일에 부합되는지는 확실하지 않지만 ... 거기에 있습니다. :)

관련 문제