我在串口读书的代码中碰到一个问题无法解决,请教各位:
在代码的开头声明了一个委托:myDelegate。在串口接收数据触发代码中要将接收的数据赋值给txtMaoZhong(文本框),这些都没问题了,但若想经过一定的判断和计算,将计算结果赋值给txtJingZhong这个文本框时就会异常报错。请问怎样才能在委托中加入我想要的判断和计算功能呢?谢谢!public delegate void myDelegate(); private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//接收串口事件后触发事件
txtDigit.Invoke(new myDelegate(updateTextBox), new object[] { });
} private void updateTextBox()
{
string tempData2 = "1234";
this.txtMaoZhong.Text = tempData2;
this.txtJingZhong.Text = refreshJZ(); //加这个函数就出问题 }
private string refreshJZ()
{
if (this.rbPercent.Checked) //Percent
{
double kz = 0;
if (this.txtKouZhong.Text.Trim() != "")
kz = (Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text)) * (Convert.ToInt32(this.txtKouZhong.Text) * 0.01);
else
kz = Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text);
int kouzhong = Convert.ToInt32(kz);
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text) - kouzhong);
}
else if (this.rbKg.Checked) //Kilo
{
if (this.txtKouZhong.Text.Trim() != "")
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text) - Convert.ToInt32(txtKouZhong.Text));
else
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text));
}
else
{
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text));
}
}
在代码的开头声明了一个委托:myDelegate。在串口接收数据触发代码中要将接收的数据赋值给txtMaoZhong(文本框),这些都没问题了,但若想经过一定的判断和计算,将计算结果赋值给txtJingZhong这个文本框时就会异常报错。请问怎样才能在委托中加入我想要的判断和计算功能呢?谢谢!public delegate void myDelegate(); private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//接收串口事件后触发事件
txtDigit.Invoke(new myDelegate(updateTextBox), new object[] { });
} private void updateTextBox()
{
string tempData2 = "1234";
this.txtMaoZhong.Text = tempData2;
this.txtJingZhong.Text = refreshJZ(); //加这个函数就出问题 }
private string refreshJZ()
{
if (this.rbPercent.Checked) //Percent
{
double kz = 0;
if (this.txtKouZhong.Text.Trim() != "")
kz = (Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text)) * (Convert.ToInt32(this.txtKouZhong.Text) * 0.01);
else
kz = Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text);
int kouzhong = Convert.ToInt32(kz);
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text) - kouzhong);
}
else if (this.rbKg.Checked) //Kilo
{
if (this.txtKouZhong.Text.Trim() != "")
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text) - Convert.ToInt32(txtKouZhong.Text));
else
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text));
}
else
{
this.txtJingZhong.Text = Convert.ToString(Convert.ToInt32(this.txtMaoZhong.Text) - Convert.ToInt32(this.txtPiZhong.Text));
}
}
if(this.txtJingZhong.InvokeRequired)
{
....//间接赋值,
}else
{
this.txtJingZhong.Text = refreshJZ;
}