build packet header, (header + payload)

    技术2024-07-30  59

     public class Header    {        public static byte command = 0x03;        public static byte[] uName = new byte[] { 0x20, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x01, 0x00 };        public static byte[] password = new byte[] { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00 };        public static byte desc;        public static byte param = 0x00;        public static byte[] seq = new byte[2];

            // desc = 0x01; // change relay        // desc = 0x04; // query output

            public static byte[] getChangeRelayHeader(byte[] _seq)        {            desc = 0x01; // change relay status

                _seq[0] += Convert.ToByte(1);

                seq[0] = _seq[0];            seq[1] = _seq[1];

                List<byte> byteList = new List<byte>();            byteList.Add(command);            byteList.AddRange(uName);            byteList.AddRange(password);            byteList.Add(desc);            byteList.Add(param);            byteList.AddRange(seq);

                return byteList.ToArray();        }

            public static byte[] getQueryRelayHeader(byte[] _seq)        {            desc = 0x04; // query relay output status

                _seq[0] += Convert.ToByte(1);

                seq[0] = _seq[0];            seq[1] = _seq[1];

                List<byte> byteList = new List<byte>();            byteList.Add(command);            byteList.AddRange(uName);            byteList.AddRange(password);            byteList.Add(desc);            byteList.Add(param);            byteList.AddRange(seq);

                return byteList.ToArray();        }    }

    }

     

    // concat header and payload then send /

     byte[] headerBytes = Header.getChangeRelayHeader(seq);

     byte[] payloadByte = Payload.getControlPayload(_channel, onOff);   // channel, status                 IEnumerable<byte> bytesSent = headerBytes.Concat(payloadByte);   // concat header and payload  byte[] bs = bytesSent.ToArray();

    socket.Send(bs, 0, 49, SocketFlags.None);

    /

     

        //byte[] header = {   0x03,       // command

        //                                0x20, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,   //user U 55        len = 23    //                                0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x01, 0x00,                                             //                                0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50,  // passwd P 50       len = 19    //                                0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00,                                    //                                0x01,            // desc  0x01    //                                0x00,            // param     //                                0x00, 0x00      // seq     //                            };

    最新回复(0)