示例#1
0
    public FileOpenMemorySorting(string filename)
    {
        fileName = filename;

        if (fileName.EndsWith(".s19") /* == true*/)
        {
            Console.WriteLine(" Файл имеет расширение .s19");
            MotorolaS19file s19File = new MotorolaS19file(fileName);
            errorMessages        = new MotorolaS19file(fileName).GetErrorMessages();
            AllMemoryAddressByte = new MotorolaS19file(fileName).GetAddressByteSorted();
            AllMemoryAddressLine = new MotorolaS19file(fileName).GetAddressLineSorted();
            AllMemoryAddressByteSorting();
            AllMemoryAddressLineSorting();
        }
        else if (fileName.EndsWith(".hex") /* == true*/)
        {
            Console.WriteLine(" Файл имеет расширение .hex");
            IntelHEXfile hexFile = new IntelHEXfile(fileName);
            errorMessages        = new IntelHEXfile(fileName).GetErrorMessages();
            AllMemoryAddressByte = new IntelHEXfile(fileName).GetAddressByteSorted();
            AllMemoryAddressLine = new IntelHEXfile(fileName).GetAddressLineSorted();
            AllMemoryAddressByteSorting();
            AllMemoryAddressLineSorting();
        }
        else
        {
            Console.WriteLine(" Файл имеет расширение отличное от .s19 или .hex");
            Console.ReadKey();
            return;
        }
    }            // FileOpenMemorySorting(string filename)
示例#2
0
    public static void Main(string[] arg)
    {
        Console.WriteLine(" IntelHEX_to_BIN - преобразует содержимое файла прошивки в бинарный файл.");
        if (arg.Length <= 1)
        {
            Console.WriteLine(" Не достаточно аргументов командной строки.");
            Console.WriteLine(" Первый аргумент (обязательный) - название файла прошивки.");
            Console.WriteLine(" Второй аргумент (обязательный) - две шестнадцатеричные цифры слитно - байт для заполнения недостающих адресов.");
            Console.WriteLine(" Остальные аргументы игнорируются.");
            Console.ReadKey(); return;
        }
        fileNameExt = arg[0];

        Console.WriteLine(" Загружен файл " + fileNameExt);



        if (fileNameExt.ToLower().EndsWith(".hex"))
        {
            fileName       = fileNameExt.Replace(".hex", ""); fileExt = ".hex";
            HEXfileContent = new IntelHEXfile(fileNameExt);
        }
        else
        if (fileNameExt.ToLower().EndsWith(".srec"))
        {
            fileName        = fileNameExt.Replace(".srec", ""); fileExt = ".srec";
            SRECfileContent = new MotorolaSRECfile(fileNameExt);
        }
        else
        if (fileNameExt.ToLower().EndsWith(".sx"))
        {
            fileName        = fileNameExt.Replace(".sx", ""); fileExt = ".sx";
            SRECfileContent = new MotorolaSRECfile(fileNameExt);
        }
        else
        if (fileNameExt.ToLower().EndsWith(".s19"))
        {
            fileName        = fileNameExt.Replace(".s19", ""); fileExt = ".s19";
            SRECfileContent = new MotorolaSRECfile(fileNameExt);
        }
        else
        if (fileNameExt.ToLower().EndsWith(".s28"))
        {
            fileName        = fileNameExt.Replace(".s28", ""); fileExt = ".s28";
            SRECfileContent = new MotorolaSRECfile(fileNameExt);
        }
        else
        if (fileNameExt.ToLower().EndsWith(".s37"))
        {
            fileName        = fileNameExt.Replace(".s37", ""); fileExt = ".s37";
            SRECfileContent = new MotorolaSRECfile(fileNameExt);
        }
        else
        {
            fileName       = fileNameExt; fileNameExt = fileNameExt + ".hex"; fileExt = ".hex";
            HEXfileContent = new IntelHEXfile(fileNameExt);
        }

        try{
            fillByte = byte.Parse(arg[1], System.Globalization.NumberStyles.HexNumber);
        }
        catch (Exception ex) {
            Console.WriteLine(" Второй аргумент командной строки содержит символ(ы) не из диапазона 0...9, A...F");
            return;
        }

        Console.WriteLine(" Байт для заполнения 0x{0:X2}", fillByte);

        Console.WriteLine(HEXfileContent);
        Console.WriteLine(SRECfileContent);

        if (HEXfileContent != null)
        {
            Console.WriteLine(" HEXfileContent равен null");
        }

        if (HEXfileContent == null)
        {
            Console.WriteLine(" HEXfileContent не равен null");
        }

        if (SRECfileContent.GetCount() == 0)
        {
            Console.WriteLine(" SRECfileContent.GetCount() равен 0");
        }

        if (SRECfileContent.GetCount() != 0)
        {
            Console.WriteLine(" SRECfileContent.GetCount() не равен 0");
        }

        //Console.WriteLine(" HEXfileContent равен null");

        for (int i = 0; i < SRECfileContent.GetLinesOfFile().Length; i++)
        {
            Console.WriteLine(" " + SRECfileContent.GetLinesOfFile()[i]);
        }
        for (int i = 0; i < SRECfileContent.GetErrorMessages().Length; i++)
        {
            Console.WriteLine(SRECfileContent.GetErrorMessages()[i]);
        }
        //for(int i=0; i< SRECfileContent.GetAddresses().Length; i++){
        //	Console.WriteLine(SRECfileContent.GetAddresses()[i]);
        //}
        Console.WriteLine(" Минимальный адрес 0x{0:X8}", SRECfileContent.GetMinAddress());
        Console.WriteLine(" Максимальный адрес 0x{0:X8}", SRECfileContent.GetMaxAddress());
        //Dumps.Dump_To_Console(SRECfileContent.GetAddressByteSorted(), 32);

        //Dumps.Dumps_To_Console(SRECfileContent.GetAddressLineSorted(), 32);

        long[] addresses = SRECfileContent.GetAddresses();
        byte[] bytes     = SRECfileContent.GetBytes();

        try {
            dataBinaryOut = new
                            BinaryWriter(new FileStream(String.Format("{0:X8}", SRECfileContent.GetMinAddress()) + "-" + String.Format("{0:X8}", SRECfileContent.GetMaxAddress()) + ".bin", FileMode.OpenOrCreate));
        }
        catch (IOException exc)   {
            Console.WriteLine(exc.Message + "\nНе удается открыть файл.");
            return;
        }
        for (int i = 0; i < addresses.Length; i++)
        {
            try  {
                dataBinaryOut.Write(bytes[i]);
            }
            catch (IOException exc)   {
                Console.WriteLine(exc.Message + "\nОшибка при записи.");
            }
        }        //for
        dataBinaryOut.Close();
    } // Main();