/// <summary>
        ///
        /// </summary>
        /// <param name="isoHeader"></param>
        /// <param name="packedBytes"></param>
        /// <param name="index"></param>
        public override void Pack(ISOHeader isoHeader, byte[] packedBytes, ref int index)
        {
            ISOHeaderVisa visaHeader = (ISOHeaderVisa)isoHeader;

            ISOUtils.Hex2Bytes(isoHeader.Length().ToString("X2"), packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h02_HeaderFlagAndFormat, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h03_TextFormat, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h04_TotalMessageLength, packedBytes, ref index);

            ISOUtils.Ascii2Bcd(visaHeader.h05_DestinationStationId, packedBytes, ref index, ISOFieldPadding.LEFT);

            ISOUtils.Ascii2Bcd(visaHeader.h06_SourceStationId, packedBytes, ref index, ISOFieldPadding.LEFT);

            ISOUtils.Hex2Bytes(visaHeader.h07_RoundTripControlInformation, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h08_BaseIFlag, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h09_MessageStatusFlag, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h10_BatchNumber, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h11_Reserved, packedBytes, ref index);

            ISOUtils.Hex2Bytes(visaHeader.h12_UserInformation, packedBytes, ref index);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="isoHeader"></param>
        /// <param name="packedBytes"></param>
        /// <param name="index"></param>
        public override void UnPack(ISOHeader isoHeader, byte[] packedBytes, ref int index)
        {
            // Unpack should check for existense of Header Field 13 always

            ISOHeaderVisa visaHeader = (ISOHeaderVisa)isoHeader;

            if (Logger.IsEnabled(LogLevel.Information))
            {
                Logger.LogInformation("Unpacking VISA Header");
            }

            string lenHex = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);

            visaHeader.m_length = ISOUtils.Hex2Bytes(lenHex)[0];

            visaHeader.h02_HeaderFlagAndFormat = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);

            visaHeader.h03_TextFormat = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);


            visaHeader.h04_TotalMessageLength = ISOUtils.Bytes2Hex(packedBytes, ref index, 2);


            visaHeader.h05_DestinationStationId = ISOUtils.Bcd2Ascii(packedBytes, ref index, ISOFieldPadding.LEFT, 6);

            visaHeader.h06_SourceStationId = ISOUtils.Bcd2Ascii(packedBytes, ref index, ISOFieldPadding.LEFT, 6);


            visaHeader.h07_RoundTripControlInformation = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);

            visaHeader.h08_BaseIFlag = ISOUtils.Bytes2Hex(packedBytes, ref index, 2);

            visaHeader.h09_MessageStatusFlag = ISOUtils.Bytes2Hex(packedBytes, ref index, 3);

            visaHeader.h10_BatchNumber = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);

            visaHeader.h11_Reserved = ISOUtils.Bytes2Hex(packedBytes, ref index, 3);

            visaHeader.h12_UserInformation = ISOUtils.Bytes2Hex(packedBytes, ref index, 1);
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="headerPackagerName"></param>
        /// <param name="logger"></param>
        /// <returns></returns>
        public static (ISOHeader Header, ISOHeaderPackager Packager) GetMessageHeaderAndPackager(string headerPackagerName, ILogger logger)
        {
            ISOHeader         header;
            ISOHeaderPackager packager;

            switch (headerPackagerName)
            {
            case "ISOHeaderTITPPackager":
                packager = new ISOHeaderTITPPackager(logger);
                header   = new ISOHeaderTITP(logger);
                break;

            case "ISOHeaderVisaPackager":
                packager = new ISOHeaderVisaPackager(logger);
                header   = new ISOHeaderVisa(logger);
                break;

            default:
                throw new ArgumentException($"Invalid header packager name: {headerPackagerName}");
            }
            return(header, packager);
        }