需求描述:雷达扫描车道,每5分钟会有一次统计数据发送过来.我需要在发送的这段字符串中根据统计数据协议解析出对应的参数或者说字段的值.我之前做B/S的 以前没有接触过c/s16进制的解析工作。所以第一次发帖求助一下,之前都是靠自己百度,看书解决问题的。麻烦各位了。
例如这样一段雷达发送过来的统计数据:
[code=csharp]04.98.00.34.00.00.3A.3B[/code]
这是数据协议,如何使用c#解析呢,好像还涉及到位移的问题?图片如下
其中需要注意的是解析到Feature Part ID 的时候,如果值等于1,那么参数就是第一张表,如果是0那么就是第2张表的参数.
这个东西说实话,我现在还没看太懂。但是我知道应该很多人对于这种数据协议比较敏感。研四刚毕业,希望大家帮我看看。如果可以给出源码能够正常解析,我将感激不尽。我并不是伸手党,只是卡在这里了。
用c#的位结构写2个struct,取出来会很方便
能不能按照我那个协议 写一点代码出来我看看?谢谢了
@何小宝: 代码我是没有时间写了,你也可以用位的MASK的方式把数值取出来,参考stackoverflow:
http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c/8480#8480
16进制解析和是不是用C/S没关系的,只需要对每个字节或者每个位进行判断,取数即可
上面的Feature Part ID为0,是说代码先判断这个位是否为0,然后if else分为两块,一块按照第一个图的内容进行解析,如存在Av Speed,如果为1,则表示按照第二个图的进行解析,如存在Occupancy