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");
            }
        }
Exemplo n.º 3
0
        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);
        }