Overview
This Tutorial provides a walk-through of the steps to perform 32 Pre-Filter configuration using MAUI RFID SDK
Create the Project
- Start by creating a new project in Visual Studio. For help, see the Create Project.
- Refer Hello RFID to prepare basic setup to work with RFID Reader and then follow this guide
Details
Pre-filters are the same as the Select command of C1G2 specification. Once applied, pre-filters are applied prior to Inventory and Access operations.
Please refer to the Prefilter Configuration guide for detailed information related to prefilter before proceeding with this tutorial.
Setting it up
In the sample code given below we are to setting 8 prefilters. Similarly users can set up to 32 prefilters.
try
{
PreFilters.PreFilter[] preFilterArray = new PreFilters.PreFilter[8];
// 0
PreFilters filters0 = new PreFilters();
PreFilters.PreFilter filter0 = new PreFilters.PreFilter(filters0)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter0.SetTagPattern("00000");
filter0.StateAwareAction.Target = TARGET.TargetSl;
filter0.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionAsrtSl;
preFilterArray[0] = filter0;
// 1
PreFilters filters1 = new PreFilters();
PreFilters.PreFilter filter1 = new PreFilters.PreFilter(filters1)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter1.SetTagPattern("111111");
filter1.StateAwareAction.Target = TARGET.TargetInventoriedStateS2;
filter1.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionInvANotInvB;
preFilterArray[1] = filter1;
// 2
PreFilters filters2 = new PreFilters();
PreFilters.PreFilter filter2 = new PreFilters.PreFilter(filters2)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter2.SetTagPattern("22222");
filter2.StateAwareAction.Target = TARGET.TargetInventoriedStateS1;
filter2.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionInvA;
preFilterArray[2] = filter2;
// 3
PreFilters filters3 = new PreFilters();
PreFilters.PreFilter filter3 = new PreFilters.PreFilter(filters3)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter3.SetTagPattern("33333");
filter3.StateAwareAction.Target = TARGET.TargetInventoriedStateS0;
filter3.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionInvBNotInvA;
preFilterArray[3] = filter3;
// 4
PreFilters filters4 = new PreFilters();
PreFilters.PreFilter filter4 = new PreFilters.PreFilter(filters4)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter4.SetTagPattern("44444");
filter4.StateAwareAction.Target = TARGET.TargetInventoriedStateS1;
filter4.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionInvB;
preFilterArray[4] = filter4;
// 5
PreFilters filters5 = new PreFilters();
PreFilters.PreFilter filter5 = new PreFilters.PreFilter(filters5)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter5.SetTagPattern("55555");
filter5.StateAwareAction.Target = TARGET.TargetSl;
filter5.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionAsrtSl;
preFilterArray[5] = filter5;
// 6
PreFilters filters6 = new PreFilters();
PreFilters.PreFilter filter6 = new PreFilters.PreFilter(filters6)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter6.SetTagPattern("66666");
filter6.StateAwareAction.Target = TARGET.TargetInventoriedStateS3;
filter6.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionInvB;
preFilterArray[6] = filter6;
// 7
PreFilters filters7 = new PreFilters();
PreFilters.PreFilter filter7 = new PreFilters.PreFilter(filters7)
{
AntennaID = 1,
MemoryBank = MEMORY_BANK.MemoryBankEpc,
FilterAction = FILTER_ACTION.FilterActionStateAware,
TagPatternBitCount = 4,
BitOffset = 32,
TruncateAction = TRUNCATE_ACTION.TruncateActionDoNotTruncate
};
filter7.SetTagPattern("77777");
filter7.StateAwareAction.Target = TARGET.TargetSl;
filter7.StateAwareAction.StateAwareAction = STATE_AWARE_ACTION.StateAwareActionAsrtSl;
preFilterArray[7] = filter7;
rfidReader.Actions.PreFilters.Add(preFilterArray, null);
Status = "Sample prefilters applied.";
}
catch (InvalidUsageException ex)
{
Status = "Invalid usage while applying sample prefilters.";
}
catch (OperationFailureException ofex)
{
Status = ofex.VendorMessage;
}
Delete all prefilters
// Delete all pre-filters
try {
reader.Actions.PreFilters.DeleteAll();
} catch (InvalidUsageException e) {
Console.WriteLine("Invalid usage while deleting pre-filters.");
} catch (OperationFailureException e) {
Status = e.VendorMessage;
}