title: C# and serial communication how to flush the device to read same data again?
body: <p>Okay so I am stuck for almost <strong>20 days</strong> now in the same problem of a serial communication device. I have a hardware sensor which read tags and returns the tag code number on every read through serial com port 1 or 3.Any of these I use doesn't matter. I am using a program I wrote in c# to play with the incoming data.
  Now problem is that if forexample:
  my sensor reads tag with code <strong>"e2 0 10 1 83 10 1 23 7 0 d0 c0 1 be"</strong>
  It will not read this tag again unless I switch of the sensor and turn it on again (Power reset) . So I can't figure out how to make my <strong>sensor forget all the data it read till I closed the port</strong>. <strong>ANY ONE CAN HELP PLEASE I AM DESPERATE NOW</strong>
  Some one told me that we need to write to device with some commands but he didn't know more than that.
  Here is the current code:</p>
  
  <pre><code> void IntializeSensor()
      {
          try
          {
              if (mySerialPort==null)
              {
                  mySerialPort = new SerialPort("COM3");
  
                  mySerialPort.BaudRate = 9600;
                  mySerialPort.Parity = Parity.None;
  
                  mySerialPort.StopBits = StopBits.One;
                  mySerialPort.DataBits = 8;
                  mySerialPort.ReadTimeout = 2000;
                  mySerialPort.Handshake = Handshake.None;
                  LoglistBox.Items.Add("--Port Intilalized at COM1--");
                  mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
              }
  
          }
          catch (Exception ex)
          {
  
              MessageBox.Show(ex.Message);
          }
      }
    void OpenPort()
      {
          try
          {
              str = "";
  
              if (mySerialPort.IsOpen)
              {
                  ClosePort();
                  Thread.Sleep(6000);
  
              }
              mySerialPort.Open();
  
              LoglistBox.Items.Add("--Port Opened at COM1 Success--");
          }
          catch (Exception ex)
          {
  
  
              LoglistBox.Items.Add("--Port Opened Failed--Error: "+ex.Message);
          }
      }
  </code></pre>
  
  <p>void ClosePort()
          {</p>
  
  <pre><code>        try
          {
              mySerialPort.Write("ABCABCABCABCABC");
              mySerialPort.DiscardInBuffer();
              mySerialPort.DiscardOutBuffer();
              mySerialPort.Dispose();
              mySerialPort.Close();
  
              LoglistBox.Items.Add("--Port Closed at COM1 Success--");
          }
          catch (Exception ex)
          {
  
              LoglistBox.Items.Add("--Port Closed Failed--Error: " + ex.Message);
              MessageBox.Show(ex.Message);
          }
  
      }
  </code></pre>
  
  <p>private  void DataReceivedHandler(object sender,SerialDataReceivedEventArgs e)
          {</p>
  
  <pre><code>        try
          {
  
              if (e.EventType != SerialData.Chars) return; 
              SerialPort COMPort = (SerialPort)sender;
  
              int bytes = COMPort.BytesToRead;
  
              //create a byte array to hold the awaiting data
  
              byte[] comBuffer = new byte[bytes];
  
              //read the data and store it
  
              COMPort.Read(comBuffer, 0, bytes);
  
  
  
              // System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
  
              str = ByteArrayToHexString(comBuffer);
  
              holdfirstvalue += str;
              //str = str +" "+ str;
              //MessageBox.Show("after concat "+str);
  
  
              if (str.Contains("FF") || str.Contains("F F") || str.Contains("F"))
              {
  
  
               SetText(holdfirstvalue.ToString());// ONE TAG CODE SENT TO BE SET IN LIST
                  str = "";
                  holdfirstvalue = "";
              }
  
          }
  
          catch (Exception ex)
          {
             // LoglistBox.Items.Add("--Port Opened Failed--Error: " + ex.InnerException);
              MessageBox.Show(ex.Message+" "+ex.InnerException);
          } 
  
      }
  </code></pre>