Пример #1
0
        /// <summary>
        /// Чтение данных по указанному адресу с заполнением недостающих данных
        /// </summary>
        /// <returns></returns>
        public Byte[] ReadBufferFill(UInt32 addr, int size, Byte fill)
        {
            Byte[] data = null;

            while (size > 0)
            {
                // Поиск расположения данных в 64к регионах
                IntelHexRegion region = SearchRegion(addr);
                Byte[]         block;
                int            readSize;

                // Регион не существует для текущего адреса
                if (region != null)
                {
                    // Чтение данных
                    block    = region.ReadFill(addr, size, fill);
                    readSize = block.Length;
                }
                else
                {
                    readSize = (size > IntelHexRegion.REGION_SIZE) ? IntelHexRegion.REGION_SIZE : size;
                    block    = Mem.Set(readSize, fill);
                }

                // Добавление данных к существующему буферу
                data = Mem.Concat(data, block);

                addr += (UInt32)readSize;
                size -= readSize;
            } // end while (перебор всего размера)

            return(data);
        }