MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文.

我们先来看看IFPL报文长啥样.

ZCZC

-TITLE IFPL

-FILTIM 010909

-IFPLID 201332005

-SOURCE AIRNET:ZUCK

-ARCID CSN6435

-ADEP ZBAA

-ADES ZUUU

-EOBD 20130301

-EOBT 0850

-SSRCODE A1270

NNNN

其中ZCZC是报文的开头标记,NNNN是报文的结束标记,没有实际意义

反序列化

  1. 下面我们根据报文创建我们的对象,忽略报头和报尾
    class IFPL
{
public string TITLE { get; set; }
public string FILTIM { get; set; }
public string IFPLID { get; set; }
public string SOURCE { get; set; }
public string ARCID { get; set; }
public string ADEP { get; set; }
public string ADES { get; set; }
public string EOBD { get; set; }
public string EOBT { get; set; }
public string SSRCODE { get; set; }
}
  1. 下面我们安装下MH/T4029.3报文解析工具,程序包控制台输入命令:

    Install-Package Extensioner.MHT40293 -Version 1.0.0
  2. 反序列化报文
            var message = @"ZCZC
-TITLE IFPL
-FILTIM 010909
-IFPLID 201332005
-SOURCE AIRNET:ZUCK
-ARCID CSN6435
-ADEP ZBAA
-ADES ZUUU
-EOBD 20130301
-EOBT 0850
-SSRCODE A1270
NNNN"; var model = MessageConvert.DeserializeObject<IFPL>(message); Console.ReadKey();

反序列化后的对象如下图:



是不是很简单?

序列化

反过来我们有时候需要把对象转换为MH/T4029.3报文,怎么办呢?也很简单!类库已经帮我们封装好了方法,我们直接调用即可.

我们把上面的model序列化然后打印一下

            var value = MessageConvert.SerializeObject(model);

            Console.WriteLine(value);

序列化后的报文入下图:



So easy!

完整代码如下:

点击查看代码
using Extensioner.MHT40293;
using System; namespace MHT40293.IFPLTest
{
class Program
{
static void Main(string[] args)
{
var message = @"ZCZC
-TITLE IFPL
-FILTIM 010909
-IFPLID 201332005
-SOURCE AIRNET:ZUCK
-ARCID CSN6435
-ADEP ZBAA
-ADES ZUUU
-EOBD 20130301
-EOBT 0850
-SSRCODE A1270
NNNN"; var model = MessageConvert.DeserializeObject<IFPL>(message); var value = MessageConvert.SerializeObject(model); Console.WriteLine(value); Console.ReadKey();
}
} class IFPL
{
public string TITLE { get; set; }
public string FILTIM { get; set; }
public string IFPLID { get; set; }
public string SOURCE { get; set; }
public string ARCID { get; set; }
public string ADEP { get; set; }
public string ADES { get; set; }
public string EOBD { get; set; }
public string EOBT { get; set; }
public string SSRCODE { get; set; }
} }

MH/T4029.3 IFPL报文解析的更多相关文章

  1. 报文解析及CRC类

    /// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...

  2. ISO8583报文解析

    在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...

  3. 基于DPI(深度报文解析)的应用识别

    一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...

  4. C#ModBus Tcp 报文解析

    上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开 ...

  5. GOOSE报文解析

    GOOSE报文解析 变电站 使用 MMS报文 http://www.360doc.com/content/16/1014/20/36538220_598459873.shtml

  6. xml报文解析和组装

    package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...

  7. Motorola和Intel格式报文解析的区别

      结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...

  8. HTTP 协议报文解析

    说明转载自https://blog.csdn.net/chf1142152101/article/details/74162755 本篇主要是为了记录HTTP中报文的格式,以便针对报文进行解析.首先会 ...

  9. SOAP XML报文解析

    import java.util.HashMap;import java.util.List;import java.util.Map; import org.dom4j.Document;impor ...

随机推荐

  1. [hdu6349]三原色图

    考虑分别求出RG和GB的最小生成树,然后剩下的边中肯定选择较小的边加入这两颗生成树 1 #include<bits/stdc++.h> 2 using namespace std; 3 # ...

  2. [luogu5204]Train Tracking 2

    考虑一个位置的上界,即$bi=min(c_{i-k+1},c_{i-k+2},--,ci)$,那么每一个位置有两种方式:1.达到上界:2.未达到上界那么可以将权值相同的ci和bi提出来,由于权值不同的 ...

  3. Linux下Zabbix5.0 LTS添加自定义监控项

    自定义监控项 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建mysql自定义监控项为例,分享如何创建zabbix自定义监控项. ...

  4. go语言并发编程

    引言 说到go语言最厉害的是什么就不得不提到并发,并发是什么?,与并发相关的并行又是什么? 并发:同一时间段内执行多个任务 并行:同一时刻执行多个任务 进程.线程与协程 进程: 进程是具有一定独立功能 ...

  5. Codeforces 1408I - Bitwise Magic(找性质+集合幂级数)

    Codeforces 题面传送门 & 洛谷题面传送门 Yet another immortal D1+D2 I %%%%%% 首先直接统计肯定是非常不容易的,不过注意到这个 \(k\) 非常小 ...

  6. Atcoder Grand Contest 032 E - Modulo Pairing(乱搞+二分)

    Atcoder 题面传送门 & 洛谷题面传送门 神仙调整+乱搞题. 首先某些人(including me)一看到最大值最小就二分答案,事实上二分答案对这题正解没有任何启发. 首先将 \(a_i ...

  7. Yii自定义全局异常,接管系统异常

    Yii自定义全局异常,接管系统异常 一般自己的框架都会使用一些自己封装的全局异常,那么在系统发生异常突发情况时候,即可自主的做一些异常机制处理,例如发送短信.发送邮件通知系统维护人员或者以更加友好的方 ...

  8. git放弃修改,强制覆盖本地代码

    1.git fetch --all  //从远程拉取最新的代码 不merge 2.git reset --hard origin/develop  //使用指定分支的代码(此处develop)强制覆盖 ...

  9. Google服务器架构图解简析

    无疑是互联网时代最闪亮的明星.截止到今天为止,Google美国主站在Alexa排名已经连续3年第一,Alexa Top100中,各国的Google分站竟然霸占了超过20多个名额,不得不令人感叹Goog ...

  10. 二进制免编译My SQL

    一 下载 MySQL 安装包教程 https://blog.csdn.net/zhan107876/article/details/100701135 ll -h mysql-5.6.47-linux ...