包头:       ‘$’(1 byte)
包号:       区别前后的命令序列,取值范围为0x01-0xfe,每条命令加1
包号补码:   包号取反加1
长度:       数据包的长度(从包头到结束字的长度),暂固定为16字节。
长度补码:   长度取反加1
命令字:      上位机使用0xA0-0xfe;下位机使用0x50-0xfe(暂时不用为以后保留)
数据段:     将要传输的数据内容。如果部分命令没有具体数据,上位机以0xAB做为数据;下位机以0x55 做为数据.小数统一乘以1000后再发送,MSB在前。比如:0x12345678,依次发送12  34  56 78.
CRC:        使用CRC16校验和,以包头开始,直到数据段结束
结束字:     ~(1 byte)public class SendData
        {
            public const byte DataHead = 0x24;
            public byte headNum;
            public byte comHaedNum;
            public byte length;
            public byte comLength;
            public byte commandWord;
            public byte[] data = new byte[7];
            public byte[] crc = new byte[2];
            public const byte DataEnd = 0x7e;            public byte[] ToArray()
            {                using(MemoryStream ms = new MemoryStream()) 
                {
                    using(BinaryWriter bw = new BinaryWriter(ms)) 
                    {
                        bw.Write(DataHead);
                        bw.Write(headNum);
                        bw.Write(comHaedNum);
                        bw.Write(length);
                        bw.Write(comLength);
                        bw.Write(commandWord);
                        bw.Write(data);
                        bw.Write(crc);
                        bw.Write(DataEnd);
                    } 
                }
                ///////////////返回值
            }
        }各位大侠我这样做可以么?我实际数据段的大小是8个字节,怎么把它变成7个?我的返回值怎么写呢?class数据

解决方案 »

  1.   

    public byte[] data = new byte[7];
    你定义的就是7个啊。
      

  2.   

      public byte[] ToArray()
                {               
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (BinaryWriter bw = new BinaryWriter(ms))
                        {
                            bw.Write(DataHead);
                            bw.Write(headNum);
                            bw.Write(comHaedNum);
                            bw.Write(length);
                            bw.Write(comLength);
                            bw.Write(commandWord);
                            bw.Write(data);
                            bw.Write(crc);
                            bw.Write(DataEnd);
                        }
                        return ms.ToArray();
                    }
                    ///////////////返回值
                    
                }