예제 #1
0
        /// <summary>
        /// Pack message using temporaty packedBytes, returns new byte array of final result
        /// </summary>
        /// <param name="packedBytes"></param>
        /// <returns></returns>
        protected byte[] Pack(byte[] packedBytes)
        {
            int index = 0;

            // if there is ISOMessage Header try pack it
            if (m_isoHeaderPackager != null && m_isoHeader != null)
            {
                //start packing the message after the header position
                index = m_isoHeader.Length();
            }
            // pack the isoMessage - is without message header
            m_isoMesssagePackager.Pack(m_isoMessageFields, packedBytes, ref index);

            // if there is ISOMessage Header try pack it
            if (m_isoHeaderPackager != null && m_isoHeader != null)
            {
                // set total message legnth in header
                m_isoHeader.SetMessageLength(index);

                // pack the isoHeader of the isoMessage
                int headerIndex = 0;
                m_isoHeaderPackager.Pack(m_isoHeader, packedBytes, ref headerIndex);
            }

            return(packedBytes.AsSpan(0, index).ToArray());
        }
예제 #2
0
        /// <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);
        }