0

我有以下代码:

void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        string serialData = serialport.ReadExisting().Replace("/n", "");
        string[] splitSerialData = serialData.Split(new Char[] {','}); //Split up the data

        this.Invoke(new Action(delegate()
            {
                this.temperatureLabel.Text = splitSerialData[0];
            }));
    }

它工作正常,但是当我这样做时:

void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        string serialData = serialport.ReadExisting().Replace("/n", "");
        string[] splitSerialData = serialData.Split(new Char[] {','}); //Split up the data

        this.Invoke(new Action(delegate()
            {
                this.temperatureLabel.Text = splitSerialData[0];
                this.lightLevelLabel.Text = splitSerialData[1];
            }));
    }

它不起作用并说“索引超出了数组的范围”。

4

2 回答 2

4

您收到此错误是因为serialData不包含逗号。因此,结果数组包含一个元素,并且表达式splitSerialData[1]将引发 IndexOutOfRangeException。

于 2012-04-14T21:28:42.520 回答
3

这意味着拆分只返回一个元素 - 整个字符串。索引 1 处没有数组元素,所以

splitSerialData[1]

抛出IndexOutOfBounds异常。

反过来,这意味着您传递的字符串不包含逗号','字符。

于 2012-04-14T21:28:52.927 回答