Is it possible to write and read the ASCII character in the RFID UHF tag?

I am developing an application for the Motorola MC9190 handheld RFID reader.

I need to read and write information as human readable in the UHF RFID tag. So I decided to write the information in ASCII characters.

In some research, I found that you can write an ASCII character in the RFID tag memory, but it supports fewer characters. I do not mind until there are less than 10 characters.

links:

https://support.tracerplus.com/index.php?/Knowledgebase/Article/View/199/15/encoding-rfid-tags-with-ascii-values-vs-hexadecimal-values-whats-the-difference

http://blog.atlasrfidstore.com/types-of-memory-in-gen-2-uhf-rfid-tags

Now I'm a little confused about how to write and read an ASCII character directly in the reader.

This is the code for writing in hexadecimal characters.

private void writeButton_Click(object sender, EventArgs e) { string dataToWrite="ABCDEF9876"; Symbol.RFID3.TagAccess.WriteAccessParams m_WriteParams; m_WriteParams.AccessPassword = 0; m_WriteParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER; m_WriteParams.ByteOffset = 0; m_WriteParams.WriteDataLength = 6; byte[] writeData = new byte[m_WriteParams.WriteDataLength]; for (int index = 0; index < m_WriteParams.WriteDataLength; index += 2) { writeData[index] = byte.Parse(dataToWrite.Substring(index * 2, 2), System.Globalization.NumberStyles.HexNumber); writeData[index + 1] = byte.Parse(dataToWrite.Substring((index + 1) * 2, 2), System.Globalization.NumberStyles.HexNumber); } m_WriteParams.WriteData = writeData; string m_SelectedTagID = "0123456789ABCDEF"; //for example RunWriteOperation(m_SelectedTagID,m_WriteParams); } void RunWriteOperation(string m_SelectedTagID,Symbol.RFID3.TagAccess.WriteAccessParams m_WriteParams) { if (m_SelectedTagID != String.Empty) { m_ReaderAPI.Actions.TagAccess.WriteWait(m_SelectedTagID,m_WriteParams, null); } } 

If I want to write in ASCII, it should be encoded as the ASCII bytes that I assume. So, instead of a for loop, if I replace the following code, will it write successfully?

 string dataToWrite="HELLOWORLD"; byte[] writeData = ASCIIEncoding.ASCII.GetBytes(dataToWrite); 

Since I do not have a reader with me, I could not check now.

If it succeeds when reading a tag, how can I configure the reader to decode as an ASCII character and display it, or do I need to programmatically convert it?

Since I'm new to RFID technology, I'm not sure I did the research correctly. Please correct me if I am wrong.

+5
source share
1 answer
 void hex2dec(unsigned adchex,unsigned value) { unsigned value[4]; for(i=0;i<4;i++) { value[i]=adchex%10; // value[i]=adchex%10+0x30; //for ASCII presentation adchex=adchex/10; } } 

You can also see this SDK here: http://www.tsl.uk.com/2013/07/tsls-ios-uhf-ascii-2-0-sdk-v0-8-1-now-available/

TSLAsciiCommands.framework - a set of easy-to-use Objective-C classes encapsulating the TSH UHF ASCII 2.0 protocol, provided as a universal static structure that can be used with both iOS devices and the iOS simulator - TSL ASCII 2.0 SDK documentation - available as a docset for integration into Xcode and HTML - Quick Start Xcode Project Examples


If you use the TSLAsciiCommands structure, you can do something like this.

 -(void)initAndShowConnectedReader { if( _commander.isConnected ) { // Display the serial number of the successfully connected unit [self.selectReaderButton setTitle:_currentAccessory.serialNumber forState:UIControlStateNormal]; // Ensure the reader is in a known (default) state // No information is returned by the reset command TSLFactoryDefaultsCommand * resetCommand = [TSLFactoryDefaultsCommand synchronousCommand]; [_commander executeCommand:resetCommand]; // Notify user device has been reset if( resetCommand.isSuccessful ) { self.resultsTextView.text = [self.resultsTextView.text stringByAppendingString:@"Reader reset to Factory Defaults\n"]; } else { self.resultsTextView.text = [self.resultsTextView.text stringByAppendingString:@"!!! Unable to reset reader to Factory Defaults !!!\n"]; } // Update the version information for the connected reader [_commander executeCommand:self.versionInformationCommand]; if( [self.class comparableVersionValue:self.versionInformationCommand.asciiProtocol] < [self.class comparableVersionValue:MINIMUM_ASCII_PROTOCOL_VERSION_FOR_LICENCE_KEY_COMMAND] ) { [self updateResults:[NSString stringWithFormat:@"Reader does not support licence keys\nRequires ASCII protocol: %@\nReader ASCII protocol: %@\n", MINIMUM_ASCII_PROTOCOL_VERSION_FOR_LICENCE_KEY_COMMAND, self.versionInformationCommand.asciiProtocol ]]; } [self validateReader]; } else { [self.selectReaderButton setTitle:@"Tap to select reader..." forState:UIControlStateNormal]; [self updateUIState]; } } 

or

 // Write data to general tag memory string tagDataStr = "HELLO WORLD!"; byte[] tagData = ASCIIEncoding.ASCII.GetBytes(tagDataStr); byte memBank = 0; // Different memory banks serve different purposes. See MC9190 specifications. int addr = 0; byte words = (byte)(tagData.Length / 2); // Words = length of msg / 2 if (UHFWriteTagData(theHandle, readerType, memBank,addr, tagData, (byte)tagData.Length, out errValue) == 0) { // Handle Error } // Read data from tag memory byte[] readTagData = new byte[512]; int bytesRead; if (UHFReadTagData(theHandle, readerType, memBank, addr, words, readTagData, readTagData.Length, out bytesRead, out errValue) == 0) { // Handle Error } // Display Results string results = "Input tag ID: " + tagIDStr + Environment.NewLine + "Read tag ID: " + ASCIIEncoding.ASCII.GetString(readTagID).Replace('\0','-') + Environment.NewLine + "Input tag data: " + tagDataStr + Environment.NewLine + "Read tag data: " + ASCIIEncoding.ASCII.GetString(readTagData).Replace('\0', '-').Substring(0,bytesRead) + Environment.NewLine; MessageBox.Show(results); 
0
source

All Articles