C#串口问题
各位高手 我有一个串口问题向大家请教,我在窗体的load事件中加入这样几句话 {
                     comm.NewLine = "/r/n";
             comm.PortName = "COM4";
             comm.BaudRate = 115200;
             try
             {
                 comm.Open();
             }
             catch (Exception ex)
             {
                 //捕获到异常信息,创建一个新的comm对象,之前的不能用了。    
                 comm = new SerialPort();
                 //现实异常信息给客户。    
                 MessageBox.Show(ex.Message);
             }
             comm.DataReceived += comm_DataReceived; }然后在DataReceive中主要代码如下
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
         {                 
             try
             {
                 Listening = true;    
                 int n = comm.BytesToRead;
                 byte[] buf = new byte[n];                   
                 comm.Read(buf, 0, n);  }
当我关闭窗体时在窗体的closed事件中又这样操作
{
    try
             {
                 comm.Close();                  
             }
             catch (Exception ex)
             {
                 //捕获到异常信息,创建一个新的comm对象,之前的不能用了。    
                 comm = new SerialPort();
                 //现实异常信息给客户。    
                 MessageBox.Show(ex.Message);
             }   
} 结果给我的提醒是端口被关闭,结果就退不出程序了,而不关串口,关闭窗口后,又提醒我有异常,无法访问以释放的对象,我怀疑是 comm.DataReceived += comm_DataReceived;这句话的问题,可是怎么也调不通了,请各位高手指教一下,小弟感激不尽了。
------解决方案--------------------在comm.Open()或Close()之前判断comm是否已打开。然后再操作。
Listening = true;
这句话用不着。
你要是参考别人的程序,全搞明白,再用。
------解决方案--------------------端口用完后,先关闭了
------解决方案--------------------  把comm = new SerialPort();都去掉,你每用一次它前面的初始化就没用了
------解决方案--------------------或者用一次comm = new SerialPort(),把它放在最上面