SerialPort.Open();好像打开了两次,为何?
private void button1_Click(object sender, EventArgs e){
this.serialPort1.Open();
}
单击button1,CommMonitor串口监控工具软件就出现如下:
TestForm.exe, COM1, IOCTL_SET_BAUD_RATE :
1200
TestForm.exe, COM1, IOCTL_SET_BAUD_RATE :
1200
--------------------编程问答-------------------- 代码如下:
namespace TestForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.serialPort1.Open();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.serialPort1.Close();
}
}
} --------------------编程问答-------------------- 怎么没有朋友回呀,急呀! --------------------编程问答-------------------- 1. 是不是你注册了两次button1_Click事件
2. CommMonitor串口监控工具是否正常
这种问题如果发整个工程的话,别人可以复现异常,也就好帮你debug --------------------编程问答-------------------- 首先非常感谢bill_shi68的回复,谢谢!1、没有注册两次button1_Click事件,代码仅有上面那些;2、CommMonitor串口监控工具是正常的,我用别人的程序和用我自己用Delphi写的程序,打开串口,在串口监控工具中只显示一次TestForm.exe, COM1, IOCTL_SET_BAUD_RATE : 1200,大家也可以写个最简单的程序,拖个SerialPort串口控件,再放个按钮,按钮事件仅写 this.serialPort1.Open();然后用串口监控工具看一下,没有执行this.serialPort1.Open();之前和执行this.serialPort1.Open();后是不是显示了两次TestForm.exe, COM1, IOCTL_SET_BAUD_RATE : 1200 --------------------编程问答-------------------- 怎么没有朋友回呀,急呀! --------------------编程问答-------------------- 不大可能会打开两次的,因为串口只要打开了,再打开一次会产生异常
只要第一次serialPort1.Open()成功了,再Open一次会引发异常的 --------------------编程问答-------------------- 把你程序改改,打开串口之前判断一下串口是否被打开,没有打开才打开,打开了就不用打开了 --------------------编程问答-------------------- 我就执行this.serialPort1.Open();这一句,就出来两次如下串口信息:
TestForm.exe, COM1, IOCTL_SET_BAUD_RATE : 1200
TestForm.exe, COM1, IOCTL_SET_BAUD_RATE : 1200
我用DELPHI写的打开串口或用别人写的打开串口的程序就只出现一次这样的串口信息,再说,我在打开串口之前也一定会检测当前串口的状态,若是打开的,则先关闭再打开,若没有打开,才会直接去打开。所以这事非常不理解。
补充:.NET技术 , C#