Nordic ID MHL offers commands for restricting tag populations in inventory to tags that have only certain bit pattern(s) in their memory at specified bank and bit addresses.
MHL
MHL is a service running on Nordic ID Windows based mobile
computers that provides hardware control services to applications.
The purpose of the service is to support Nordic ID Morphic and
Nordic ID Merlin mobile computer programming.
https://support.nordicid.com/MHL
Username: mhl
Password: mhl
MHL BENEFITS
- MHL handles any updates to drivers or hardware and thus newer
and older units can easily be mixed as the application never even
knows there is a difference
- Offers a possibility to run the same application on different
Nordic ID devices without an impact to the application
- Easier for programmers as there is a limited amount of commands
and all functions operate the same or at least very similar
- Own support website that offers additional information and
sample code
The EPC gen 2 standard makes it possible to limit the tag
population and select only tags having certain bit patterns in
their memory. The standard allows the select command to be applied
to the following three memory banks: EPC/UII, TID and user
memory.
The use of a password memory is not allowed. Maximum length of
the bit pattern is 255 bits. Nordic ID Morphic allows the use of a
maximum 128 bits.
EXAMPLE: A MORE COMPLEX SELECTION BASED ON A BIT PATTERN.
In this example it is assumed that all the tags are coded by
some EPC numbering system and that only certain tags having their
filter value set to 5 are of interest (three bits:'101'). The
filter location is in the EPC code's bit address 8; therefore the
bit address in the bank is 40 (there are 32 + 8 header bits).
// We'll need a one byte mask
byte []Mask = new byte[1];
// The mask used: filter value 5
Mask[0] = 5;
// Set up mask
MHLObj.SetBin(hRFID,"RFID.SelectMask",Mask);
// Set up the mask length (3 filter bits)
MHLObj.SetDword(hRFID,"RFID.SelectLength",3);
// The bit address is 40 in the EPC memory
MHLObj.SetDword(hRFID," RFID.SelectAddress",40);
// Do select based on EPC memory contents (bank 1)
MHLObj.SetDword(hRFID," RFID.SelectBank",1);
// Make sure inventory selec is not inverted
MHLObj.SetBool(hRFID,"RFID.SelectInvert",false);
// Do inventory
MHLObj.Execute(hRFID,"RFID.InventorySelect");
// ...get results
Similarly, the next example shows that only SSCC-96 tags can be
selected. The SSCC-96 code starts with a byte 0x31, bit address is
32 and length is 8 bits.
Mask[0] = 0x31;
MHLObj.SetDword(hRFID,"RFID.SelectLength",8);
MHLObj.SetDword(hRFID," RFID.SelectAddress",32);