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コンマが含まれていないため、このエラーが発生しています。したがって、結果の配列には 1 つの要素が含まれ、式splitSerialData[1]は IndexOutOfRangeException をスローします。

于 2012-04-14T21:28:42.520 に答える
3

これは、分割が正確に 1 つの要素 (文字列全体) を返すことを意味します。インデックス 1 には配列要素がないため、

splitSerialData[1]

例外をスローしIndexOutOfBoundsます。

これは、渡す文字列にコンマ文字が含まれていないことを意味します','

于 2012-04-14T21:28:52.927 に答える