public MotorolaSRECfile_long(string filename) { if (filename.ToLower().EndsWith(".s19") | filename.ToLower().EndsWith(".srec")) { } else { FileErrorMessages.Add(" Файл имеет расширение отличное от .s19(.srec)"); } 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; } switch (line.recordtype) { case SRECline.RecordType.DataRecordS19: case SRECline.RecordType.DataRecordSREC: AddressLineSorted.Add((long)(line.address), line.data); AddressLine.Add((long)(line.address), line.data); int ij = 0; foreach (byte bt in line.data) { AddressByteSorted.Add((long)(line.address + ij), line.data[ij]); ij++; } break; case SRECline.RecordType.EndOfFileS19: case SRECline.RecordType.EndOfFileSREC: eof = true; break; } if (sr.EndOfStream) { eof = true; } } if (AddressByteSorted.Count != 0) { foreach (KeyValuePair <long, byte> dabs in AddressByteSorted) { Addresses.Add(dabs.Key); Bytes.Add(dabs.Value); } for (int i = 0; i < AddressByteSorted.Count; i++) { if (Addresses[i] < minAddress) { minAddress = Addresses[i]; } } for (int i = 0; i < AddressByteSorted.Count; i++) { if (Addresses[i] > maxAddress) { maxAddress = Addresses[i]; } } } else { FileErrorMessages.Add(" Файл не имеет адресов."); minAddress = maxAddress = long.MinValue; } sr.Close(); sr.Dispose(); } catch (Exception ex) { ErrorMessage = ex.Message; CriticalError = true; } }
public IntelHEXfile_long(string filename) { if (filename.ToLower().EndsWith(".hex") != true) { FileErrorMessages.Add(" Файл имеет расширение отличное от hex"); } try { StreamReader sr = new StreamReader(filename); bool eof = false; int lineNumber = 0; while (!eof) { lineNumber++; HEXline line = new HEXline(sr.ReadLine(), lineNumber); //if (ErrorMessage == "") ErrorMessage = line.ErrorMessages; FileErrorMessages.AddRange(line.LineErrorMessages); if (line.CriticalErrors == true) { CriticalError = true; } switch (line.recordtype) { case HEXline.RecordType.ExtendedLinearAddress: ex_lin_address = (long)line.data[0]; ex_lin_address = (long)ex_lin_address << 8; ex_lin_address = (long)(ex_lin_address + (long)line.data[1]); ex_lin_address = (long)ex_lin_address << 16; break; case HEXline.RecordType.DataRecord: //data.AddRange(line.data); AddressLineSorted.Add((long)(line.address + ex_lin_address), line.data); AddressLine.Add((long)(line.address + ex_lin_address), line.data); int ij = 0; foreach (byte bt in line.data) { AddressByteSorted.Add((long)(line.address + ex_lin_address + ij), line.data[ij]); ij++; } break; case HEXline.RecordType.EndOfFile: eof = true; break; } if (sr.EndOfStream) { eof = true; } } if (AddressByteSorted.Count != 0) { foreach (KeyValuePair <long, byte> dabs in AddressByteSorted) { Addresses.Add(dabs.Key); Bytes.Add(dabs.Value); } for (int i = 0; i < AddressByteSorted.Count; i++) { if (Addresses[i] < minAddress) { minAddress = Addresses[i]; } } for (int i = 0; i < AddressByteSorted.Count; i++) { if (Addresses[i] > maxAddress) { maxAddress = Addresses[i]; } } } else { FileErrorMessages.Add(" Файл не имеет адресов."); minAddress = maxAddress = long.MinValue; } sr.Close(); sr.Dispose(); } catch (Exception ex) { ErrorMessage = ex.Message; CriticalError = true; } } //constructor IntelHEXfile_long(string filename)