public static FMPT_Header_and_Data FMTP_Msg_Parser(byte[] FMTP_Msh)
        {
            FMPT_Header_and_Data Data_Out = new FMPT_Header_and_Data();

            // Determine FMTP version
            Data_Out.version = FMTP_Msh[0].ToString();

            // Determine message size
            Bit_Ops BO = new Bit_Ops();

            BO.DWord[Bit_Ops.Bits0_7_Of_DWord]  = FMTP_Msh[3];
            BO.DWord[Bit_Ops.Bits8_15_Of_DWord] = FMTP_Msh[2];
            int Result = BO.DWord[Bit_Ops.Bits0_15_Of_DWord];

            Data_Out.msg_length = Result.ToString();
            if (Result == 0)
            {
                Data_Out.Valid_FMTP_Data = false;
            }

            // Determine message type
            switch ((int)FMTP_Msh[4])
            {
            case 1:
                Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Operational;
                break;

            case 2:
                Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Operator;
                break;

            case 3:
                Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Identification;
                break;

            case 4:
                Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.System;
                break;

            case 5:
                Data_Out.Valid_FMTP_Data = false;
                break;
            }

            if (Data_Out.Valid_FMTP_Data)
            {
                Data_Out.msg_content = Data_Out.msg_content + System.Text.Encoding.ASCII.GetString(FMTP_Msh, 5, Result - 5);
            }

            return(Data_Out);
        }
        public static FMPT_Header_and_Data FMTP_Msg_Parser(byte[] FMTP_Msh)
        {
            FMPT_Header_and_Data Data_Out = new FMPT_Header_and_Data();

            // Determine FMTP version
            Data_Out.version = FMTP_Msh[0].ToString();

            // Determine message size
            Bit_Ops BO = new Bit_Ops();
            BO.DWord[Bit_Ops.Bits0_7_Of_DWord] = FMTP_Msh[3];
            BO.DWord[Bit_Ops.Bits8_15_Of_DWord] = FMTP_Msh[2];
            int Result = BO.DWord[Bit_Ops.Bits0_15_Of_DWord];
            Data_Out.msg_length = Result.ToString();
            if (Result == 0)
                Data_Out.Valid_FMTP_Data = false;

            // Determine message type
            switch ((int)FMTP_Msh[4])
            {
                case 1:
                    Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Operational;
                    break;
                case 2:
                    Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Operator;
                    break;
                case 3:
                    Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.Identification;
                    break;
                case 4:
                    Data_Out.msg_type = FMPT_Header_and_Data.Message_Type.System;
                    break;
                case 5:
                    Data_Out.Valid_FMTP_Data = false;
                    break;
            }

            if (Data_Out.Valid_FMTP_Data)
                Data_Out.msg_content = Data_Out.msg_content + System.Text.Encoding.ASCII.GetString(FMTP_Msh, 5, Result - 5);

            return Data_Out;
        }