Exemplo n.º 1
0
        public byte[] GetMemoryData(uint address, uint size, int dataElementSize = 1)
        {
            //return new byte[size];

            // from debugstub:
            //// sends a stack value
            //// Serial Params:
            ////  1: x32 - address
            ////  2: x32 - size of data to send

            if (!IsConnected)
            {
                return(null);
            }
            else if (size == 0)
            {
                // no point in retrieving 0 bytes, better not request at all. also, debugstub "crashes" then
                throw new NotSupportedException("Requested memory data of size = 0");
            }
            else if (size > 512)
            {
                // for now refuse to retrieve large amounts of data:
                throw new NotSupportedException("Too large amount of data requested");
            }
            var xData = new byte[8];

            mDataSize = (int)size;
            Array.Copy(BitConverter.GetBytes(address), 0, xData, 0, 4);
            Array.Copy(BitConverter.GetBytes(size), 0, xData, 4, 4);
            SendCmd(Vs2Ds.SendMemory, xData);
            var xResult = MemoryDatas.First();

            MemoryDatas.RemoveAt(0);
            if (xResult.Length != size)
            {
                throw new Exception("Retrieved a different size than requested!");
            }
            return(xResult);
        }
 protected void PacketMemoryData(byte[] aPacket)
 {
     MemoryDatas.Add(aPacket.ToArray());
     WaitForMessage();
 }