Example #1
0
    public MotorolaSRECfile(string filename)
    {
        // if (filename.ToLower().EndsWith(".s19") != true) FileErrorMessages.Add("Файл имеет расширение отличное от s19");
        if (filename.ToLower().EndsWith(".s19") | filename.ToLower().EndsWith(".s28") | filename.ToLower().EndsWith(".s37") |
            filename.ToLower().EndsWith(".srec") | filename.ToLower().EndsWith(".sx"))
        {
        }
        else
        {
            FileErrorMessages.Add(" Файл имеет расширение отличное от srec (s19, s28, s37, sx)");
        }
        try
        {
            StreamReader sr         = new StreamReader(filename);
            bool         eof        = false;
            int          lineNumber = 0;
            while (!eof)
            {
                lineNumber++;
                SRECline line = new SRECline(sr.ReadLine(), lineNumber);
                //if (ErrorMessage == "") ErrorMessage = line.ErrorMessages;
                FileErrorMessages.AddRange(line.LineErrorMessages);
                if (line.CriticalErrors == true)
                {
                    CriticalError = true;
                }
                LinesOfFile.Add(line.crntLine);

                switch (line.recordtype)
                {
                case SRECline.RecordType.DataRecord16:
                case SRECline.RecordType.DataRecord24:
                case SRECline.RecordType.DataRecord32:
                    //data.AddRange(line.data);
                    AddressLineSorted.Add(line.address, line.data);
                    int ij = 0;
                    foreach (byte bt in line.data)
                    {
                        AddressByteSorted.Add((long)(line.address + ij), line.data[ij]);
                        Addresses.Add((long)(line.address + ij));
                        Bytes.Add(line.data[ij]);
                        if (minAddress > (long)(line.address + ij))
                        {
                            minAddress = (long)(line.address + ij);
                        }
                        if (maxAddress < (long)(line.address + ij))
                        {
                            maxAddress = (long)(line.address + ij);
                        }
                        ij++;
                    }

                    break;


                case SRECline.RecordType.CountRecord16:
                case SRECline.RecordType.CountRecord24:
                    //recordCount = line.address;

                    break;


                case SRECline.RecordType.StartAddressRecord32:
                case SRECline.RecordType.StartAddressRecord24:
                case SRECline.RecordType.StartAddressRecord16:
                    eof = true;
                    break;
                }
                if (sr.EndOfStream)
                {
                    eof = true;
                }
            }

            sr.Close();
            sr.Dispose();
        }
        catch (Exception ex)
        {
            ErrorMessage  = ex.Message;
            CriticalError = true;
        }
    }
Example #2
0
 public string[] GetLinesOfFile()
 {
     return(LinesOfFile.ToArray());
 }