Code:
public List<IDTagPosition> GetTagPosition(IDTag idTag)
        {
            CheckIfInitialized();

            List<IDTagPosition> positionList = new List<IDTagPosition>();

            try
            {
                iQTag tag = new iQTag(idTag.TagID);

                // Read marker data from tag, data starts at address 0x0090 (144) and has a length of 10 bytes
                TagReadDataResult result = m_Reader.ReadTagData(tag, 0x0090, 10);              
                byte[] markerData = result.GetData();

                // get old position
                int position = markerData[1] << 8;
                position += markerData[0];

                int timeElapsed = markerData[3] << 8;
                timeElapsed += markerData[2];

                int rssi = markerData[4];

                IDTagPosition oldPos = new IDTagPosition(position, timeElapsed, rssi);
                positionList.Add(oldPos);

                // get new position
                int position1 = markerData[6] << 8;
                position += markerData[5];

                int timeElapsed1 = markerData[8] << 8;
                timeElapsed += markerData[7];

                int rssi1 = markerData[9];

                IDTagPosition newPos = new IDTagPosition(position1, timeElapsed1, rssi1);
                positionList.Add(newPos);
            }
            catch (CommPortException cpe)
            {
                log.Error("GetTagPosition failed", cpe);
            }
            catch(iCardCommunicationsException icpe)
            {
                log.Error("GetTagPosition failed", icpe);
            }
            catch (iCardTimeoutException icte)
            {
                log.Error("GetTagPosition failed", icte);
            }
            catch (Exception ex)
            {
                log.Error("GetTagPosition failed", ex);
            }

            return positionList;
        }
Hi!

The above code is from some softare that read data from an rfid chip. Basically we need to keep track of the chip old and new position as the packet travels around in the factory. The software is about years old and we can't find any documentation or SK that explains how to get this info from the data stream, only the above code. As far as I understand, it reads 10 bytes of data from a specified address, but what happens next? Im not familiar with the << operator, but MSDN says it is used to shift bits somehow? Is it possible for anyone to maybe try and understandand explain the above code to me in an understandable matter, I would be very grateful. Maybe it is even possible to simplify it?

kind regards
Henrik