public void ParseRecordTest(string record, int byteCount, int address, IntelHexRecordType recordType, byte[] data, byte checksum) { var intelHexRecord = RecordParser.ParseRecord(record); Assert.AreEqual(byteCount, intelHexRecord.ByteCount); Assert.AreEqual(address, intelHexRecord.Address); Assert.AreEqual(recordType, intelHexRecord.Type); Assert.AreEqual(data, intelHexRecord.Data); Assert.AreEqual(checksum, intelHexRecord.Checksum); }
private static IntelHexRecord GetRecord(IntelHexRecordType recordType) { switch (recordType) { case IntelHexRecordType.Data: return(new DataRecord()); case IntelHexRecordType.ExtendedLinearAddress: return(new OffsetRecord()); case IntelHexRecordType.StartLinearAddress: return(new StartAddressRecord()); case IntelHexRecordType.EndOfFile: return(new EndOfFileRecord()); default: throw new NotImplementedException($"Recordtype {recordType.ToString()} is not implemented"); } }
private void WriteHexRecord(IntelHexRecordType recordType, ushort address, IList <byte> data) { var addresBytes = BitConverter.GetBytes(address); var hexRecordData = new List <byte> { (byte)data.Count, addresBytes[1], addresBytes[0], (byte)recordType }; hexRecordData.AddRange(data); var checksum = CalculateChecksum(hexRecordData); hexRecordData.Add(checksum); var hexRecord = $":{ToHexString(hexRecordData)}"; streamWriter.WriteLine(hexRecord); }