RFID Arena


RFID software development - understanding inventory with select parameters

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 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.


Username: mhl
Password: mhl


  • 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.

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

// Set up the mask length (3 filter bits)

// 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

// Do inventory

// ...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.SelectAddress",32);

Post a comment

Keep in touch

Send me more info!
Send me a Newsletter!
Send me a Magazine!
Contact info