C# COM通信为什么会触发两次接收事件,麻烦大神帮我看看,代码如下,接收的字符不多,但mm每次会增加2,我理解为触发了是会触发两次接收事件
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
mm++;
label1.Text =Convert.ToString(mm);
if (rbnGetASII.Checked)//如果接收模式为字符模式
{
string str = serialPort1.ReadExisting();//字符串方式读
txtGetData.AppendText(str);//添加内容textBox文本框中依次向后显示
}
else //如果接收模式为数值接收
{
//易出现异常:由于线程退出或应用程序请求,已中止 I/O 操作
//加入异常处理
try
{
string s = "";
int count = serialPort1.BytesToRead;
byte[] data = new byte[count];
serialPort1.Read(data, 0, count);
foreach (byte item in data)
{
s += Convert.ToChar(item);
}
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { this.txtGetData.Text = s; }));
}
else
{
this.txtGetData.Text = s;
}
//int data;
//data = serialPort1.ReadByte();
//string str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串
//txtGetData.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补“0”
}
catch
{
this.Close();//关闭当前窗体
}
}
serialPort1.DiscardInBuffer();
}