本帖最后由 hollandjzy 于 2011-10-09 12:49:05 编辑

解决方案 »

  1.   

    关闭串口时,可能ataReceived中正在进行ReadLine操作
    关闭前要释放资源,清空缓存
      

  2.   

     private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            { 
                  if(!sp.IsOpen)return;
                  bufferReciver = bufferReciver + serialPort1.ReadLine();        }
      

  3.   

    为什么我在关闭串口的时候  会产生 DATAReceived 事件呢
      

  4.   

    关闭的时候datareceive已经触发正在执行
      

  5.   

    可以试试        private void buttonOpenClose_Click(object sender, EventArgs e)
            {
                if (serialPort1.IsOpen)
                {
                   //关闭串口前停止发送和接收,释放资源
                   buttonOpenClose.Text = "打开";
                   serialPort1.Close();
                }
     
            }
      

  6.   

    我自己找到原因了  是READLINE  没有读到结束符 他就一直在停留在READLINE了