解决方案 »

  1.   

    自己解析被..假设 他协议中有,温度:15 湿度22:PM2.5:800你肯定能读取到了 
    比如  
    byte [] b ={FF FF FF FF CA CB CC CD 02 FF 08 00 00 8F E4 };
    int 温度=b[15];
    int 湿度=b[18];
      

  2.   

    数据都是字节数体现的,包是以CA  CB CC CD四个字节开头,以EA EB EC ED 四个字节结尾,中间是内容
      

  3.   

    Ident表示是什么内容,两个字节,比如温度什么的。Length具体内容的长度,Datapayload就是具体的内容,比如温度多少度。
      

  4.   

    读取数据,就是把每一个属性都(从二进制流)反序列化到你的内部结构中。因此你需要先定义一个 .net 自定义类,来表示数据结构。如果设计不出来这个数据结构,好好看懂这个文档中的数据结构!得到这个数据结构,可能你实际需要的是进行扩展,例如对于 Ident 根据前两个字节的内容,你给转换为枚举值。后者你将自定义的 Ident 类型设计了扩展子类(从Ident继承)之后,将你的数据结构进行一次语义转换,将原来的 Ident 属性重新赋值为其子类对象。第二种方式肯定功能更强、更易扩展许多父类没有的内容。至于两种方式用哪一种,随你的便。主要是要知道需要在第一遍解析之后,再进行一次语义计算操作,这就行了。
      

  5.   

    说点低级的知识。读取字节数据,通常需要写BinaryReader br = .......;
                var bt = br.ReadBytes(4);
                Array.Reverse(bt);
                var data1 = BitConverter.ToInt32(bt, 0);
                var bt = br.ReadBytes(8);
                Array.Reverse(bt);
                var data2 = BitConverter.ToDouble(bt, 0);
                var data3 = br.ReadInt32();
                var data4 = br.ReadBytes(data3);
                var data5 = Encoding.Utf8.GetString(data4);等等语句。
      

  6.   

    谢谢各位的解答,字节处理这块 之前没有接触过,像上面那个图 算是比较容易看懂的 经过大家一提点,知道了那么下面这个协议呢?该怎么理解?
    上面那个是基于串口RS485通讯的 下面这个是Wan 网络通讯格式 不过这个说明和之前那个表格不一样。不好意思 麻烦大家了 
      

  7.   

    偶尔拼凑点“数据”,你可以胡乱写读取代码、凑合用就行了。但是如果你开发一个产品,你的经理会先设计一个 .net 的数据结构,然后让你把这二进制的 Stream 反序列化到内存数据对象中。因为正规地产生内存对象,可以用在各种各样的随后开发的分析处理程序中。因此关键是,先设计并搞懂一个 .net 内存数据结构,与你的原始低级的字节流表示方式相对应。如果没有数据框架概念,则写不好。
      

  8.   


    人家都告诉你结构中的每一个属性占多少字节、是什么目标类型了。不是说你“觉得可以读取了”你就真的会读取了。你要是心目中有一个 .net 的自定义数据结构可以完整地装下(反序列化)这个原始数据,才真正能保证懂了。
      

  9.   

    不是和第一个差不多么,一字节八位只不过这个说明了每个字节前四位,和后四位是干嘛用的那按照1楼那样 我该如何存储 - - 不好意思 其实我就是卡在不知道怎么用C# 来存储这些协议数据哎用byte数组存储啊然后对返回的数据进行处理,找到协议的开头和结尾,再对数据进行解码
      

  10.   


    按照你这个方式 解析出来的不就是byte数组里面对应的数字了- -!
      

  11.   


    按照你这个方式 解析出来的不就是byte数组里面对应的数字了- -!
    byte数组里存的本来也就是数字啊
    你的不是雷达吗,雷达不是应该返回液位高度和平均温度,单点温度这些数据吗
    这些数据可能是以2个字节表示,也可能以4个字节表示
    比如int 液位=b[15]*256+b[16]这种方式存储的
    你要先看明白协议,里面从第几位开始到第几位是个什么数据,然后就可以对应的解析出来了
      

  12.   

    通常是建立一个结构体,前面消息头可以先固定下来,后面具体解析部分先用可变长byte[]接收然后根据消息头,你发给解析工厂去转成对应结构体当然这玩意也可以先用HDL写个结构出来,在找个软件把HDL描述自动翻译成c#代码。也可以直接问甲方要个h头定义,在用swig或者InteropSignatureToolkit转译成C#代码