/// <summary> /// Read RFID tag data using RSM /// </summary> /// <param name="tagID">The EPC Tag ID of the tag to be operated upon. (size-encoded binary)</param> /// <param name="rfidBank">Desired Tag Bank</param> /// <param name="offset">Word offset into tag buffer </param> /// <param name="length">Words of data to read from tag buffer. 0 means entire bank</param> /// <param name="password">Optional access password</param> /// <param name="rfidData">Buffer for read, write, and lock (size-encoded binary)</param> /// <returns>Status of the command</returns> private int ReadTag(string tagID, RfidBank rfidBank, int offset, int length, string password, out string rfidData) { int rfidCommandStatus = -1; if (String.IsNullOrEmpty(tagID) || length < 0) { throw new ArgumentException(INCORRECT_ARGUMENT); } rfidData = string.Empty; string attributesXml = RFID_READ_XML_TEMPLATE; attributesXml = attributesXml.Replace("TAGID", GetHexDataArrayWithHexLengthPrefix(tagID)); attributesXml = attributesXml.Replace("BANK", ((int)rfidBank).ToString()); attributesXml = attributesXml.Replace("OFFSET", offset.ToString()); attributesXml = attributesXml.Replace("LENGTH", length.ToString()); attributesXml = attributesXml.Replace("COMMAND", ((int)RfidCommand.Read).ToString()); SetAttributes(attributesXml); rfidCommandStatus = GetRfidCommandStatus(); if (rfidCommandStatus == STATUS_SUCCESS) { rfidData = GetRfidData(); } return(rfidCommandStatus); }
/// <summary> /// Write RFID tag data using RSM /// </summary> /// <param name="tagID">EPC code of desired tag</param> /// <param name="rfidBank">Desired memory bank of tag</param> /// <param name="rfidData">Data to write</param> /// <param name="offset">Word offset into the memory bank</param> /// <param name="password">Optional access password</param> /// <returns>Status of the last RFID operation</returns> private int WriteTag(string tagID, RfidBank rfidBank, string rfidData, int offset, string password) { if (String.IsNullOrEmpty(tagID) || String.IsNullOrEmpty(rfidData)) { throw new ArgumentException(INCORRECT_ARGUMENT); } string attributesXml = RFID_WRITE_XML_TEMPLATE; attributesXml = attributesXml.Replace("TAGID", GetHexDataArrayWithHexLengthPrefix(tagID)); attributesXml = attributesXml.Replace("BANK", ((int)rfidBank).ToString()); attributesXml = attributesXml.Replace("DATA", GetHexDataArrayWithHexLengthPrefix(rfidData)); attributesXml = attributesXml.Replace("OFFSET", offset.ToString()); attributesXml = attributesXml.Replace("COMMAND", ((int)RfidCommand.Write).ToString()); SetAttributes(attributesXml); return(GetRfidCommandStatus()); }