弹出对话框显示数据,不弹出不显示
我现在做的一个电子秤串口程序。就是把称出来的数据显示在窗体上,在保存在Excel里面。
现在问题是我在接收数据的时候用MessageBox.Show(a)弹出接收的数据(a是接收的数据) 它就会显示在窗体上面。
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
#region 打开串口
private void btnStart_Click(object sender, EventArgs e)
{
if (StartBool == false)
{
try
{
this.ClosingBool = false;//是否正在关闭串口
this.Listening = false;//是否正在接收数据
this.StartBool = true;
this.txtReceiveData.Text = "";
this.serialPort1.PortName = "COM1";
this.serialPort1.BaudRate = 9600;
this.serialPort1.DataBits = 8;
this.serialPort1.Parity = System.IO.Ports.Parity.None;
this.serialPort1.StopBits = System.IO.Ports.StopBits.One;
if (this.serialPort1.IsOpen == false)
{
this.serialPort1.Open();
MessageBox.Show("打开串口成功!");
this.btnStop.Enabled = true;
this.btnStart.Enabled = false;
}
}
catch
{
if (this.serialPort1.IsOpen == true)
{
this.serialPort1.Close();
}
MessageBox.Show("打开串口失败");
}
}
}
#endregion
#region 读取数据
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (ClosingBool) return; //如果正在关闭,忽略关闭操作,尽快的完成本次数据的读取
try
{
Listening = true; //设置标记,说明我现在开始读取数据
int n = this.serialPort1.BytesToRead;
byte[] buf = new byte[n];
this.serialPort1.Read(buf, 0, n);
this.txtReceiveData.Invoke((EventHandler)(delegate
{
string receiveData = Encoding.ASCII.GetString(buf);
string[] aaa = receiveData.Split(new char[] { '\n' });
//MessageBox.Show(receiveData.ToString());
if (receiveData.Length == 8)
{
Data2 = "DATA:20";
}
if (aaa.Length == 6 && receiveData.Contains("NW:") && aaa[3].Contains(".")==true)
{
Data = Data2 + aaa[0].ToString();
NO = aaa[1].ToString();
GW = aaa[2].ToString();
NW = aaa[3].ToString();
DataRow d = dtable.NewRow();
d["Data"] = Data;
d["NO"] = NO;
d["GW"] = GW;
d["NW"] = NW;
dtable.Rows.Add(d);
}
if (Data.Contains("DATA:") == true && Data.Length > 5)