Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问数组的元素_C# - Fatal编程技术网

C# 无法访问数组的元素

C# 无法访问数组的元素,c#,C#,定时器滴答作响时,我正在从传感器读取9字节的数据,我正在将读取的字符串转换为十六进制格式。数据为01-03-04-0A-D5-15-A9-26-FD 现在唯一与我有关的数据是第4和第5个元素我正在使用split命令分割我的字符串,但我仍然无法访问异常弹出Indexoutofrangeexception,当我尝试通过索引3访问第4个元素时 private void timer1_Tick(object sender, EventArgs e) { // t

定时器滴答作响时,我正在从传感器读取9字节的数据,我正在将读取的字符串转换为十六进制格式。数据为01-03-04-0A-D5-15-A9-26-FD 现在唯一与我有关的数据是第4和第5个元素我正在使用split命令分割我的字符串,但我仍然无法访问异常弹出Indexoutofrangeexception,当我尝试通过索引3访问第4个元素时

  private void timer1_Tick(object sender, EventArgs e)
        {
           // timer1.Enabled = false;
            serialPort1.Write(query, 0, query.Length);
            incoming = serialPort1.ReadExisting();

         ba = Encoding.Default.GetBytes(incoming);
        var hexString = BitConverter.ToString(ba);

        textBox1.Text = incoming;
        textBox2.Text = hexString;

       string[] splittedResult = hexString.Split('-');
        textBox3.Text = splittedResult[3];
        //label1.Text = splittedResult[1];



       // textBox3.Text = Convert.ToString(hexString.Length);


        timer1.Enabled = true;
    }

可能hextstring为null,或者它的值比您想象的要短。试试这个:

...
string[] splittedResult = hexString.Split('-');
if (splittedResult.Length >=4 ) // check lenght
    textBox3.Text = splittedResult[3];
...

可能hextstring为null,或者它的值比您想象的要短。试试这个:

...
string[] splittedResult = hexString.Split('-');
if (splittedResult.Length >=4 ) // check lenght
    textBox3.Text = splittedResult[3];
...

请仅在有关visual studio的问题中使用
visual studio
标记(而不是使用它编写的代码)。如果您调试了此标记,您会发现,您“认为”正在获取的数据不是您“正在”获取的数据,则可能会重复此标记。这意味着你可能正在阅读部分语块。这会将您的问题从“无法访问元素数组”更改为“如何确保从串行端口读取所需的所有数据”,并且可能是有用的检查链接。请仅使用
visual studio
标记来回答有关visual studio的问题(而不是使用它编写的代码)。如果你调试了它,你就会意识到,你“认为”得到的数据不是你“正在”得到的数据。这意味着你可能正在阅读部分语块。这会将您的问题从“无法访问元素数组”改为“如何确保从串行端口读取所需的所有数据”,这可能是检查的有用链接。