我是新人,可能问题会很无知,还请见谅;
数据包头0x4D 57 5A 53H  数据包尾0x0FH,中间是有效数据
如果用串口助手发送,哪些是需要的数据,ASC码怎面处理

解决方案 »

  1.   

    这样定义数据包头?万一数据中有一个0x0FH怎么办?可以这样定义数据包:
        TxxxHead = packed record
          Key       : DWORD;//or Word
          Size      : integer;//or SmallInt
          CRC32     : DWORD;  //这行可以不好
          //后面跟着数据即可
        end;
    这只是一种情况
      

  2.   

     指令符
    (1) 抄表/设置表号指令
    数据‘CCC’-(0x43 43 43H)
    (2) 中继器参数配置
    数据‘ZZZ’-(0x5A 5A 5AH)
    (3) 中继器数据采集
    数据‘BBB’-(0x42 42 42H) 数据包头、包尾
    通讯数据以数据包为单位。数据包以‘数据包头’开始,以‘数据包尾’结束。
    (1) 上行数据包头(中继器/手掌机发):数据‘SZWM’-(0x53 5A 57 4DH) 
    下行数据包头(表具发):数据‘MWZS’-(0x4D 57 5A 53H)
      

  3.   

    数据包头一般用于识别一帧(包)的开始,包尾的作用就各异了,如果是固定长度的包,可以是做校验位等。或者是用于标识一帧的结束。
    你这个包头定义,是不是能保证数据包中的数据不会出现“0x53 5A 57 4DH”或“0x4D 57 5A 53H”,如果数据中也出现一样的连续数据,那就麻烦了,如果没有其它保证,会误叛的。
    一般包头还包含些引导符,标识码而引导符一般用连续一样的数据字符,比如“AA AA AA AA AA”,数据中出现这样连续多位的概率就非常少了,甚至可以保证不出现,就不会误判一帧(包)了