4 Replies Latest reply on Aug 10, 2018 8:07 AM by Marshall Ellis

    RFD8500 Triggered Inventory with Single Read Requirement

    Marshall Ellis

      Hello all:

       

      This might be a more of an RFID technology question as opposed to RFD Android SDK question.

      I have always struggled with the sessions of the gen2 tags (0,1,2,3) as to where they should be utilized. Most of the websites that I have reviewed pertaining to the different sessions look like some type of nightmarish sudoku puzzle!?!?!?

       

      My app is a simple pull the trigger, read all tags ONCE in the read field, release the trigger, stop reading.

       

      Everything is working fine with the TC51/RFD8500 and the trigger but the tags are being reported multiple times. I believe this is in the session reporting but could not find an example of what I should set this to so that the tag is only reported once???

       

      Thanks in advance!

       

      Marshall Ellis

        • Re: RFD8500 Triggered Inventory with Single Read Requirement
          Gurpreet Gandhi

          Hi Marshall,

           

          I need  small help regarding the Asynchronous reading of the tags in android.

          Can you share your contact details ?

           

          Regards,

          Gurpreet Gandhi

          gurpreetgandhi3@gmail.com

              • Re: RFD8500 Triggered Inventory with Single Read Requirement
                Gurpreet Gandhi

                HI Marshall,

                 

                Many thanks for your response.

                 

                I'm trying to build a tailored Android application for Zebra 8500 using RFIDAPI3Library(zebra_rfidapi_sdk_2.0.0.2) provided by Zebra.

                 

                what I'm trying to achieve was to catch asynchronous responses from the Device, i.e whenever the HANDHELD trigger is PRESSED/RELEASED the data captured by  Device can be read, similar kind of issue is happening for fetching the Battery as well.

                 

                What I tried was :

                RFIDReader rfidReaderDevice = readerDevice.getRFIDReader();
                if (rfidReaderDevice != null) {
                    Toast.makeText(MainActivity.this, "Async Subscribe:: Start Trigger:" +
                            rfidReaderDevice.Config.getStartTrigger() , Toast.LENGTH_SHORT).show();
                    rfidReaderDevice.Events.setBatchModeEvent(true);
                    rfidReaderDevice.Events.setReaderDisconnectEvent(true);
                    rfidReaderDevice.Events.setInventoryStartEvent(true);
                    rfidReaderDevice.Events.setInventoryStopEvent(true);
                    rfidReaderDevice.Events.setTagReadEvent(true);
                    rfidReaderDevice.Events.setHandheldEvent(true);
                    rfidReaderDevice.Events.setBatteryEvent(true);
                    rfidReaderDevice.Events.setPowerEvent(true);
                    rfidReaderDevice.Events.setOperationEndSummaryEvent(true);



                    RfidEventsListener eventsListener = new RfidEventsListener() {
                        @Override
                        public void eventReadNotify(RfidReadEvents rfidReadEvents) {
                            String tags = rfidReadEvents.getReadEventData().tagData.getTagID();
                            statusField.setText("Method Call : eventReadNotify" );
                           // Toast.makeText(MainActivity.this, "Method Call : eventReadNotify + " + tags, Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void eventStatusNotify(RfidStatusEvents rfidStatusEvents) {
                            Events.HandheldTriggerEventData statusEventData = rfidStatusEvents.StatusEventData.HandheldTriggerEventData;
                          //  Toast.makeText(MainActivity.this, "Method Call : Status Notify Data +  statusEventData.getHandheldEvent()", Toast.LENGTH_SHORT).show();
                            statusField.setText("Method Call : Status Notify Data" );

                        }
                    };
                    rfidReaderDevice.Events.addEventsListener(eventsListener);

                 

                It Seems framework is never calling eventReadNotify/eventStatusNotify for any HANDHELD Events.

                 

                Can you please help me with what I'm missing, or what Events should be set true to catch the HANDHELD Events?

                 

                Many Thanks,

                Gurpreet Gandhi

                  • Re: RFD8500 Triggered Inventory with Single Read Requirement
                    Marshall Ellis

                    Gurpreet:

                     

                    Perhaps you are missing the event handler connection of their event handler class?

                     

                    //ADD EVENT HANDLERS

                    EventHandler eh = new EventHandler();

                    zebra_reader.Events.addEventsListener(eh);

                     

                     

                     

                    class EventHandler implements RfidEventsListener{

                        public void eventReadNotify(RfidReadEvents e){

                     

                            DCCClientActivity.activity.runOnUiThread(new Runnable() {

                                @Override

                                public void run() {

                                    int c = 0;

                                    String tagid = "";

                                    TagData[] tags = null;

                     

                                    try{

                                        tags =  zebra_reader.Actions.getReadTags(100);

                                        if (tags != null){

                                            for (c = 0; c < tags.length; c++){

                                                if (add_H_prefix){

                                                    tagid = "H" + tags[c].getTagID();

                                                }

                                                else{

                                                    tagid = tags[c].getTagID();

                                                }

                                                if (!taglist.contains(tagid)){

                                                    //Log.d("DCCMsg", "FIRST Add:" + tagid);

                                                    taglist.add(tagid);

                                                    result = process_tag(tagid);

                                                }

                                            }

                                        }

                                    }

                                    catch (Exception ex){

                                        Log.d("DCCMsg EventHandler", ex.getMessage());

                                    }

                                }

                            });

                        }

                     

                     

                     

                     

                    Marshall Ellis

                    Lead Developer

                    972-489-2043

                    <http://www.datacollectioncenter.com/>

                     

                    Technical Support

                    Email: support@datacollectioncenter.com<mailto:support@datacollectioncenter.com>

                    Phone: 940-206-1721