Hello,
if got some problems with your samplecode devmanual page 5 - 29.
I am using RFD8500 APIV3Lib Androidstudio (lastest). My inventory is working quite fine.
ReaderCapabilities.isTagLocationingSupported() = true is my indicator that the RFD should support taglocationing.
Some Code
>>>>>> Connection is working fine ... for inventory <<<<<
Readers readers = new Readers();
ArrayList<ReaderDevice> availableRFIDReaderList =
readers.GetAvailableRFIDReaderList();
ReaderDevice readerDevice = availableRFIDReaderList.get(0);
myReader = readerDevice.getRFIDReader();
try {
myReader.connect();
Antennas.AntennaRfConfig antennaRfConfig = myReader.Config.Antennas.getAntennaRfConfig(1);
antennaRfConfig.setrfModeTableIndex(4);
antennaRfConfig.setTari(300);
antennaRfConfig.setTransmitPowerIndex(300);
myReader.Config.Antennas.setAntennaRfConfig(1,antennaRfConfig);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
eventHandler = new EventHandler();
try {
myReader.Events.addEventsListener(eventHandler);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
myReader.Events.setInventoryStartEvent(true);
myReader.Events.setInventoryStopEvent(true);
myReader.Events.setTagReadEvent(true);
myReader.Events.setReaderDisconnectEvent(true);
myReader.Events.setAntennaEvent(true);
myReader.Events.setAccessStartEvent(true);
myReader.Events.setAccessStopEvent(true);
myReader.Events.setAttachTagDataWithReadEvent(true);
myReader.Events.setGPIEvent(true);
TriggerInfo triggerInfo = new TriggerInfo();
triggerInfo.StartTrigger.setTriggerType(START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD);
triggerInfo.StartTrigger.Handheld.setHandheldTriggerEvent(HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED);
triggerInfo.StopTrigger.setTriggerType(STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT);
triggerInfo.StopTrigger.Handheld.setHandheldTriggerEvent(HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED);
triggerInfo.StopTrigger.Handheld.setHandheldTriggerTimeout(0);
try {
TagStorageSettings tagStorageSettings = null;
tagStorageSettings = myReader.Config.getTagStorageSettings();
tagStorageSettings.setTagFields(TAG_FIELD.ALL_TAG_FIELDS);
myReader.Config.setTagStorageSettings(tagStorageSettings);
myReader.Config.setDPOState(DYNAMIC_POWER_OPTIMIZATION.DISABLE);
myReader.Config.setBatchMode( BATCH_MODE.DISABLE );
myReader.Config.setStartTrigger(triggerInfo.StartTrigger);
myReader.Config.setStopTrigger(triggerInfo.StopTrigger);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
try {
myReader.Config.saveConfig();
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
try {
myReader.Actions.Inventory.perform(null, null, null);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
>>>>> I am listing all tags found inside a listview. OnItemClick i do something like this (your sample code) <<<<<
try {
myReader.Actions.Inventory.stop();
myReader.Actions.TagLocationing.Perform(Locate, null, null);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// e.printStackTrace();
}
try {
myReader.Actions.TagLocationing.Stop();
myReader.Actions.Inventory.perform(null, null, null);
} catch (InvalidUsageException e) {
e.printStackTrace();
} catch (OperationFailureException e) {
e.printStackTrace();
}
>>>>> But the event isnt triggered, what i am missing? <<<<
class EventHandler implements RfidEventsListener {
// Read Event Notification
public void eventReadNotify(RfidReadEvents e){
TagData[] myTags = myReader.Actions.getReadTags(100);
if (myTags != null)
{
for (int index = 0; index < myTags.length; index++)
{
Log.d("Tag:", myTags[index].getTagID().toString());
if(!Locate.equals("")) {
Short Reichw = myTags[index].LocationInfo.getRelativeDistance();
String Reichweite = String.valueOf(Reichw);
Log.d("TagR:", myTags[index].getTagID().toString() + " " + Reichweite);
Locate = "";
}else {
if (myTags[index].isContainsLocationInfo()) {
int tag = index;
System.out.println("Tag locationing distance " +
myTags[tag].LocationInfo.getRelativeDistance());
}
String TID = myTags[index].getTagID().toString();
String EPC = "";
}
}
}
}
BR J. Korff
HI Jan,
I think you have forgot eventHandler.eventReadNotify(rfidReadEvents)
You can like this
try {
ZebraEventHandler eventHandler = new ZebraEventHandler(readerDevice, context, callbackContext, tagID);
readerDevice.getRFIDReader().Events.addEventsListener(eventHandler);
RfidReadEvents rfidReadEvents = new RfidReadEvents(readerDevice.getRFIDReader().Actions.Inventory);
readerDevice.getRFIDReader().Events.setInventoryStartEvent(true);
readerDevice.getRFIDReader().Events.setInventoryStopEvent(true);
// boolean purgeTags = readerDevice.getRFIDReader().Actions.purgeTags();
readerDevice.getRFIDReader().Actions.Inventory.perform();
readerDevice.getRFIDReader().Actions.Inventory.stop();
eventHandler.eventReadNotify(rfidReadEvents);
// Events.ReadEventData readEventData = rfidReadEvents.getReadEventData();
// assetLocation.setText(tagString);
readerDevice.getRFIDReader().Events.removeEventsListener(eventHandler);
} catch (InvalidUsageException e) {
Toast.makeText(context, e.getVendorMessage() + " : " + e.getMessage(), Toast.LENGTH_LONG).show();
} catch (OperationFailureException e) {
Toast.makeText(context, e.getVendorMessage() + " : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
Regards,
Gurpreet
Points: 0
You voted ‘up’
Log in to post comments