使用C#解决空白问题

时间:2011-05-13 13:57:11

标签: 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);
}

2 个答案:

答案 0 :(得分:7)

修剪返回修剪过的文本。改为:

GPSMessage = GPSMessage.TrimEnd();

答案 1 :(得分:1)

行尾不同于您的平台,它可以是\ r,\ r \ n或\ n。 Environment.NewLine将是编译平台的最终字符。

尝试使用简单的替换来删除新行?

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

不确定这是否适合你想要完全做的事,但是......你去了。 :)