串行数据输入文本框
本文关键字:文本 输入 数据 | 更新日期: 2023-09-27 18:07:36
我从串行中获取数据并将其拆分为不同的文本框。这是有效的,但是在大约2个读数后,程序冻结并出现错误"indexoutorange在Set1(array[0])
或Set2(array[1])
行上未处理"。
这是我的代码,任何帮助都是非常感谢的。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string data_in = serialPort1.ReadExisting();
char[] delimiter1 = new char[] { '*' };
string[] info = data_in.Split(delimiter1, StringSplitOptions.None);
this.BeginInvoke(new EventHandler(delegate
{
//Set(array);
Set1(info[0]);
Set2(info[1]);
}));
Application.DoEvents();
}
private void Set(string[] strText)
{
tbFib.Text = strText[0];
}
private void Set1(string strText)
{
tbGravity.Text = strText;
}
private void Set2(string strText)
{
tbTemp.Text = strText;
}
来自serialPort1.ReadExisting()
的数据显然在某些(或所有)情况下不包含*
。这将导致调用data_in.Split
返回一个可能为空的数组。
info
的长度。