RFID.Disconnect() It doesn't work for me!

D Dennis Rene Chavez Hernriquez 2 years 9 months ago
17 0 0

I have the following routines and the reading works correctly, but if I need to leave the reading and close the form where it is being read, the form remains blocked and blocks the handheld completely, I'm Using similar to the example CS_RFID3Sample6    What is wrong ?

string hostname = "127.0.0.1";
uint port = 5084;
public bool connect(string ip, uint port)
        {
            rfid3 = new RFIDReader(ip, port, 0);
            try
            {
                triggernfo.TagReportTrigger = 1;
                triggernfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
                triggernfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
                triggernfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
                triggernfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;
                triggernfo.StopTrigger.Handheld.Timeout = 0; // Default handheld timeout value
                vestado.BackColor = Color.Green;
                vestado.Text = "Conectado";
                m_IsConnected=true;
                if (!rfid3.IsConnected)
                {
                    rfid3.Connect();
                    configureReader();
                }
                StartReading();
            }
            catch (OperationFailureException operationException)
            {
                m_IsConnected = false;
                vestado.BackColor = Color.Red;
                MessageBox.Show(operationException.StatusDescription);
                return false;
            }
            catch (Exception ex)
            {
                m_IsConnected = false;
                vestado.BackColor = Color.Red;
                MessageBox.Show("RFID Connect failed: " + ex.Message);
                return false;
            }
            return true;
        }

private void configureReader()
        {
            rfid3.Events.AttachTagDataWithReadEvent = false;
            rfid3.Events.ReadNotify += new Events.ReadNotifyHandler(Events_ReadNotify);
            rfid3.Events.StatusNotify += new Events.StatusNotifyHandler(Events_StatusNotify);
            rfid3.Events.NotifyInventoryStartEvent = true;
            rfid3.Events.NotifyInventoryStopEvent = true;
            rfid3.Events.NotifyHandheldTriggerEvent=true;
            rfid3.Events.NotifyGPIEvent = true;
            rfid3.Events.NotifyAntennaEvent = true;
            rfid3.Events.NotifyReaderDisconnectEvent = true;
        }

   private void menuItem3_Click(object sender, EventArgs e)
            {
                CloseForm();
                 this.Close();
            }

  private void CloseForm()
             {
                 try
                 {
                     if (m_IsConnected)
                     {
                         rfid3.Events.ReadNotify -= Events_ReadNotify;
                         rfid3.Events.StatusNotify -= Events_StatusNotify;
                         StopReading(OperationToPerform.IDLE);
                         rfid3.Disconnect();
                     }
                     rfid3.Dispose();
                     this.Dispose();
                 }
                 catch (Exception ex)
                 {
                     notifyUser(ex.Message, "Close");
                 }
             }

             private void StopReading(OperationToPerform nextOperation)
             {
                 try
                 {
                     if (rfid3.Actions.TagAccess.OperationSequence.Length > 0)
                     {
                         rfid3.Actions.TagAccess.OperationSequence.StopSequence();
                     }
                     else
                     {
                         rfid3.Actions.Inventory.Stop();
                     }
                     rfid3.Actions.PurgeTags();
                 }
                 catch (InvalidOperationException ioe)
                 {
                     notifyUser("InvalidOperationException" + ioe.Message, "Stop Operation");
                 }
                 catch (OperationFailureException ofe)
                 {
                     notifyUser("OperationFailureException:" + ofe.StatusDescription, "Stop Read");
                 }
                 catch (InvalidUsageException iue)
                 {
                     notifyUser("InvalidUsageException:" + iue.Info, "Stop Read");
                 }
                 catch (Exception ex)
                 {
                     notifyUser("Exception:" + ex.Message, "Stop Read");
                 }
             }

CONTACT
Can’t find what you’re looking for?