C# 无法访问数组的元素
定时器滴答作响时,我正在从传感器读取9字节的数据,我正在将读取的字符串转换为十六进制格式。数据为01-03-04-0A-D5-15-A9-26-FD 现在唯一与我有关的数据是第4和第5个元素我正在使用split命令分割我的字符串,但我仍然无法访问异常弹出Indexoutofrangeexception,当我尝试通过索引3访问第4个元素时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
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的问题(而不是使用它编写的代码)。如果你调试了它,你就会意识到,你“认为”得到的数据不是你“正在”得到的数据。这意味着你可能正在阅读部分语块。这会将您的问题从“无法访问元素数组”改为“如何确保从串行端口读取所需的所有数据”,这可能是检查的有用链接。