.net vs 2005 c#程序。
我的计算机通过串口接收外设(仪表)持续发来的数据,串口serialPort有一个DataReceived()事件,当接收到数据时就会触发这个事件。这部分我已做好了。
现在的问题是:我想加一个功能,即在屏幕上放上红、绿两个小图标,当串口有数据来时显示红灯图标,无信号来时显示绿灯图标。这样在  
  private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
  {
  //接收串口事件后触发事件  this.picRed.Visible = true; //开红灯
  this.picGreen.Visible = false;
  }但是当串口拔掉或外设仪表关掉后如何能检测到以便使用以下代码关闭红灯而显示绿灯:
this.picRed.Visible = false; //开绿灯
this.picGreen.Visible = true;谢谢各位!

解决方案 »

  1.   

    我的程序大致结构如下:
    System.IO.Ports.SerialPort serialPort = new System.IO.Ports.SerialPort();
    private delegate void myDelegate();
    ......
    private void Form1_Load(object sender, EventArgs e)
      {   
      serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
      this.openSerialPort();
      }  private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
      {
      //接收串口事件后触发事件
      txtDigit.Invoke(new myDelegate(updateTextBox), new object[] { });
      }private void updateTextBox()
      {
      //txtDigit.Font = new Font("Grramond", 22.0F, FontStyle.Bold);
      //int tempData = 0;  this.picRed.Visible = true; //开红灯
      this.picGreen.Visible = false;  if (serialPort.BytesToRead > 0)
      {
      serialPort.Read(message, 0, 1);
      ......
      }
    }请各位帮忙看看。谢谢!
     
     
      

  2.   

    void serialPort_DataReceived(object sender,SerialDataReceivedEventArgs e)
    {
        if(e.EventType=SerialData.Eof)//结束
        {
            this.picRed.Visible = false; 
            this.picGreen.Visible = true;
        }
    }