cancel
Showing results for 
Search instead for 
Did you mean: 

ST25DV02K-W1/W2 - using of Feig "FEDM for NET" library and its PresentPassword command.

Karol Merski
Associate II

I am writing the c# application using Feig "FEDM for NET" library to communicate with ST25DV02K-W1/W2. I want to use PresentPassword and WritePassword command. ST25DV02K-W1/W2 is recognized by the library as 'TH_ISO15693_STM' tag. The 'TH_ISO15693_STM' class does not have a Present/Write password command available. There are implemented in TH_ISO15693_STM_ST25DVxxK class.

 The problem is that memory is not recognized as 'TH_ISO15693_STM_ST25DVxxK' 

 and I can not cast 'TH_ISO15693_STM' to 'TH_ISO15693_STM_ST25DVxxK' class. 

 Does anyone have had this problem too? How can I resolve it?

I try using the Transparent command but was not successful.

1 ACCEPTED SOLUTION

Accepted Solutions
Damien G.
ST Employee

Hello Karol,

the FEIG SDK recognizes the ST25DV-I2C but not the ST25DV-PWM (ST25DV02K-W1/W2).

Hence your best bet is to use the transparent commands API.

Check out the sendProtocol() API.

Java and .Net APIs are pretty close so you can get inspiration from this example :

String response = mReaderHandle.ICmd.sendProtocol((byte) 0xBF, requestData);

where:

  • mReaderHandle is an instance of FEDM.Core.ReaderModule
  • 0xBF is used for Iso15693 protocol
  • requestData is a String that follows the 0xBF API format. You can find a description in the FEIG LR1002 user manual for instance (H20411-1e-ID-B) or by asking FEIG's customer support at identification-support@feig.de

You will find more examples in the Java source code for the ST25PC-NFC application in the model.readers.feig.FEIG_OBID_Generic_TransceiveImplementation class.

Regards,

Damien

View solution in original post

2 REPLIES 2
Damien G.
ST Employee

Hello Karol,

the FEIG SDK recognizes the ST25DV-I2C but not the ST25DV-PWM (ST25DV02K-W1/W2).

Hence your best bet is to use the transparent commands API.

Check out the sendProtocol() API.

Java and .Net APIs are pretty close so you can get inspiration from this example :

String response = mReaderHandle.ICmd.sendProtocol((byte) 0xBF, requestData);

where:

  • mReaderHandle is an instance of FEDM.Core.ReaderModule
  • 0xBF is used for Iso15693 protocol
  • requestData is a String that follows the 0xBF API format. You can find a description in the FEIG LR1002 user manual for instance (H20411-1e-ID-B) or by asking FEIG's customer support at identification-support@feig.de

You will find more examples in the Java source code for the ST25PC-NFC application in the model.readers.feig.FEIG_OBID_Generic_TransceiveImplementation class.

Regards,

Damien

Karol Merski
Associate II

Damien, thank You for your hints.

I did some tests with ReadMultipleBlock sent by sendProtocol function. It works. I attached the simple working code in c#. Maybe it will be useful to someone.

...
byte command = 0x23; 
byte mode = 0x01; // see Reader documentation
byte[] uuid = new byte[] { 0xE0, 0x02, 0x38, 0x00, 0x07, 0xA1, 0x31, 0xBB };
byte address = 0x01;
byte numberOfData = 0x01;
 
byte[] reqSelectData = new byte[] {command, mode, uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], address, numberOfData };
 
byte cmdByte = 0xB0;
string requestData = FeHexConvert.ByteArrayToHexString(reqSelectData); // result: "2301E002380007A131BB0101" string
string responseData = "";
 
// MyTag.BaseTag - it is mine class to store the Tag
int status = MyTag.BaseTag.GetTagHandlerImpl().GetReader().SendProtocol(cmdByte, requestData, out responseData);
 
Console.WriteLine("Response status: " + status);
Console.WriteLine("Response data: " + responseData);
...