/// <summary> /// Populate the User memory editors with user data /// </summary> private void PopulateUserData() { try { ReadTagMemory readUserMemory = new ReadTagMemory(objReader, model); // Disable write buttons in ascii and hex representation grpbx btnWriteAscii.IsEnabled = false; btnWrite.IsEnabled = false; // Clear the cached previous ascii data editedAsciiNewString = string.Empty; originalAsciiNewString = string.Empty; lblErrorAddAsciiEdtr.Content = ""; lblErrorAddHexEdtr.Content = ""; if ((bool)rbFirstTagUserMemTb.IsChecked) { antenna = GetSelectedAntennaList()[0]; } objReader.ParamSet("/reader/tagop/antenna", antenna); TagFilter searchSelect = null; if ((bool)rbSelectedTagUserMemTb.IsChecked) { if (lblSelectFilter.Content.ToString().Contains("EPC ID")) { searchSelect = new TagData(currentEPC); } else { int dataLength = 0; byte[] SearchSelectData = ByteFormat.FromHex(txtData.Text); if (null != SearchSelectData) { dataLength = SearchSelectData.Length; } searchSelect = new Gen2.Select(false, selectMemBank, Convert.ToUInt16(startAddress * 16), Convert.ToUInt16(dataLength * 8), SearchSelectData); } } else { searchSelect = new TagData(currentEPC); } //Read USER bank data ushort[] userMemData = null; readUserMemory.ReadTagMemoryData(Gen2.Bank.USER, searchSelect, ref userMemData); byte[] userByteData = null; if (null != userMemData) { userByteData = ByteConv.ConvertFromUshortArray(userMemData); string asciiData = Utilities.HexStringToAsciiString(ByteFormat.ToHex(userByteData, "", "")); // Cache the original ascii string received from the module for further modifications originalAsciiNewString = asciiData; editedAsciiNewString = asciiData; string replacedAsciiData = ReplaceSpecialCharInAsciiData(asciiData.ToCharArray()); txtASCIIData.Text = replacedAsciiData; // Max characters available to edit in ascii editior txtblkSpMAXSizeCharsAvailable.Text = userByteData.Length.ToString(); AsciiDataChanged(); txtASCIIData.ScrollToVerticalOffset(0); // Max bytes available to edit in hex editior txtblkSpMAXSizeHexByteSp64BytesAvailable.Text = userByteData.Length.ToString(); txtASCIIData.IsEnabled = true; txtASCIIData.Foreground = Brushes.Black; txtASCIIData.MaxLength = userByteData.Length; UpdateHexUserMemoryRepresentation(userByteData); } lblErrorAddAsciiEdtr.Content = ""; lblErrorAddHexEdtr.Content = ""; } catch (Exception ex) { if (ex is FAULT_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC_Exception) { lblErrorAddAsciiEdtr.Content = "Error: Read Error"; lblErrorAddHexEdtr.Content = "Error: Read Error"; } else { lblErrorAddAsciiEdtr.Content = "Error: "+ex.Message; lblErrorAddHexEdtr.Content = "Error: " + ex.Message; } lblUserMemoryError.Content = ""; txtblkSpMAXSizeHexByteSp64BytesAvailable.Text = "00"; txtblkSpMAXSizeCharsAvailable.Text = "00"; txtblkRemainingCharsAvailableCount.Text = "00 characters remaining"; txtASCIIData.IsEnabled = false; RemoveGeneratedControl(); } finally { Mouse.SetCursor(Cursors.Arrow); } }
private void PopulateData() { try { Mouse.SetCursor(Cursors.Wait); // Create the object to read tag memory ReadTagMemory readTagMem = new ReadTagMemory(objReader, model); if ((bool)rbFirstTagIns.IsChecked) { antenna = GetSelectedAntennaList()[0]; } objReader.ParamSet("/reader/tagop/antenna", antenna); TagFilter searchSelect = null; if ((bool)rbSelectedTagIns.IsChecked) { if (lblSelectFilter.Content.ToString().Contains("EPC ID")) { searchSelect = new TagData(currentEPC); } else { int dataLength = 0; byte[] SearchSelectData = ByteFormat.FromHex(txtData.Text); if (null != SearchSelectData) { dataLength = SearchSelectData.Length; } searchSelect = new Gen2.Select(false, selectMemBank, Convert.ToUInt16(startAddress * 16), Convert.ToUInt16(dataLength * 8), SearchSelectData); } } else { searchSelect = new TagData(currentEPC); } #region ReadReservedMemory //Read Reserved memory bank data ushort[] reservedData = null; txtKillPassword.Text = ""; txtAcessPassword.Text = ""; txtReservedMemUnusedValue.Text = ""; // Hide additional memory textboxes lblAdditionalReservedMem.Visibility = System.Windows.Visibility.Collapsed; txtReservedMemUnusedValue.Visibility = System.Windows.Visibility.Collapsed; lblAdditionalReservedMemAdd.Visibility = System.Windows.Visibility.Collapsed; try { readTagMem.ReadTagMemoryData(Gen2.Bank.RESERVED, searchSelect, ref reservedData); // Parse the response to get access pwd, kill pwd and if additional memory exists ParseReservedMemData(reservedData); } catch (Exception ex) { // Hide additional memory textboxes lblAdditionalReservedMem.Visibility = System.Windows.Visibility.Collapsed; txtReservedMemUnusedValue.Visibility = System.Windows.Visibility.Collapsed; lblAdditionalReservedMemAdd.Visibility = System.Windows.Visibility.Collapsed; txtReservedMemUnusedValue.Text = ""; // If either of the memory is locked get in or else throw the exception. if ((ex is FAULT_PROTOCOL_BIT_DECODING_FAILED_Exception) || (ex is FAULT_GEN2_PROTOCOL_MEMORY_LOCKED_Exception)) { try { ReadReservedMemData(Gen2.Bank.RESERVED, searchSelect); } catch (Exception e) { txtKillPassword.Text = e.Message; txtAcessPassword.Text = e.Message; } } else if (ex is FAULT_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC_Exception) { txtKillPassword.Text = "Read Error"; txtAcessPassword.Text = "Read Error"; } else { txtKillPassword.Text = ex.Message; txtAcessPassword.Text = ex.Message; } } #endregion ReadReservedMemory #region ReadEPCMemory //Read EPC bank data ushort[] epcData = null; txtPC.Text = ""; txtCRC.Text = ""; txtEPCData.Text = ""; txtEPCValue.Text = ""; txtEPCUnused.Text = ""; txtEPCUnusedValue.Text = ""; txtadditionalMemValue.Text = ""; // Hide additional memory spUnused.Visibility = System.Windows.Visibility.Collapsed; spXPC.Visibility = System.Windows.Visibility.Collapsed; spXPC2.Visibility = System.Windows.Visibility.Collapsed; spAddMemory.Visibility = System.Windows.Visibility.Collapsed; try { readTagMem.ReadTagMemoryData(Gen2.Bank.EPC, searchSelect, ref epcData); ParseEPCMemData(epcData, searchSelect); } catch (Exception ex) { txtEPCData.Text = ex.Message; rbEPCAscii.IsEnabled = false; rbEPCBase36.IsEnabled = false; } #endregion ReadEPCMemory #region ReadTIDMemory //Read TID bank data ushort[] tidData = null; txtClsID.Text = ""; txtVendorID.Text = ""; txtVendorValue.Text = ""; txtModelID.Text = ""; txtModeldIDValue.Text = ""; txtUniqueIDValue.Text = ""; try { readTagMem.ReadTagMemoryData(Gen2.Bank.TID, searchSelect, ref tidData); ParseTIDMemData(tidData); } catch (Exception ex) { if (ex is FAULT_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC_Exception) { txtUniqueIDValue.Text = "Read Error"; } else { txtUniqueIDValue.Text = ex.Message; } } #endregion ReadTIDMemory #region ReadUserMemory //Read USER bank data ushort[] userMemData = null; txtUserDataValue.Text = ""; txtUserMemData.Text = ""; try { readTagMem.ReadTagMemoryData(Gen2.Bank.USER, searchSelect, ref userMemData); ParseUserMemData(userMemData); } catch (Exception ex) { if (ex is FAULT_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC_Exception) { txtUserMemData.Text = "Read Error"; } else { txtUserMemData.Text = ex.Message; } } #endregion ReadUserMemory } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { Mouse.SetCursor(Cursors.Arrow); } }