如何实现多种报文格式转换成通用格式(高分求解)

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:32:04
我现在碰到一个问题,
因为有很多厂家提供GPS服务(以后还会持续增加),所以GPS格式都不同,我想做一个通用的程序,把不同的GPS格式,转成我自己需要的固定的格式,请问有什么好的思路么?
补充一下:比如一个厂家是用xml格式传输的,一个厂家是用结构体传输的,一个厂家使用二进制传输的,有没有好的方法去解析他。

一个通用逻辑上应该是不可能的, 你可以设计一个你自己的报文解析模块(简称A), 你的应用程序只知道A, 而各种不同的解析方式你可以做成插件(简称B), A模块在初始化的时候根据需要或者配置加载各种B; 应用程序在调用 A 进行解析的时候, A 通过遍历所有的 B 来查找解析器!

typedef struct _UniformData
{
BYTE bType; // 预留的类型
BYTE* pGps; // 指向不同的结构;
LONG lGpsLen; // 不同结构的大小
LONG lReserved;

}UniformData, *PUniformData;

写一个父类吧, 解析写成一个virtual函数.
每当有一个新格式的GPS接进来, 就新建一个子类, 继承父类, 重写virtual函数.

难点在于别的厂家的GPS数据格式是否是公开的?一般来说都是不公开的,甚至多数是加密的。想分析是有很大难度的。