Exemple #1
0
        private byte[] GetResponseData(byte[] data, byte cmd)
        {
            if (data == null || data.Length < 3)
            {
                return(null);
            }
            var na = GetNaPacket();

            if (na[0] != data[0] || na[1] != data[1] || na[2] != data[2] || na[3] != data[3] || cmd != data[4])
            {
                return(null);
            }

            var crc   = new Crc16Modbus();
            var crc16 = crc.Calculate(data, 0, data.Length - 2);

            if (crc16.CrcData.Length != 2)
            {
                return(null);
            }
            if (crc16.CrcData[0] != data[data.Length - 2] || crc16.CrcData[1] != data[data.Length - 1])
            {
                return(null);
            }

            return(data.Take(data.Length - 2).Skip(5).ToArray());
        }
Exemple #2
0
        private byte[] CreatePacket(byte cmd, byte[] data = null)
        {
            var result = new List <byte>();

            result.AddRange(GetNaPacket());
            result.Add(cmd);
            if (data != null)
            {
                result.AddRange(data);
            }
            var crc = new Crc16Modbus();

            result.AddRange(crc.Calculate(result.ToArray(), 0, result.Count).CrcData);

            return(result.ToArray());
        }
Exemple #3
0
        static Polynomials()
        {
            CRC8          = new Crc8Usual();
            CRC8_CDMA2000 = new Crc8CDMA2000();
            CRC8_DARC     = new Crc8DARC();
            CRC8_DVBS2    = new Crc8DVBS2();
            CRC8_EBU      = new Crc8EBU();
            CRC8_ICODE    = new Crc8ICODE();
            CRC8_ITU      = new Crc8ITU();
            CRC8_MAXIM    = new Crc8MAXIM();
            CRC8_ROHC     = new Crc8ROHC();
            CRC8_WCDMA    = new Crc8WCDMA();

            CRC16_CCITT     = new Crc16CCITT();
            CRC16_ARC       = new Crc16ARC();
            CRC16_AUG_CCITT = new Crc16AugCCITT();
            CRC16_BUYPASS   = new Crc16BUYPASS();
            CRC16_CDMA2000  = new Crc16CDMA2000();
            CRC16_DDS110    = new Crc16DDS110();
            CRC16_DECT_R    = new Crc16DECT_R();
            CRC16_DECT_X    = new Crc16DECT_X();
            CRC16_DNP       = new Crc16DNP();
            CRC16_EN13757   = new Crc16EN13757();
            CRC16_GENIBUS   = new Crc16GENIBUS();
            CRC16_MAXIM     = new Crc16Maxim();
            CRC16_MCRF4XX   = new Crc16MCRF4XX();
            CRC16_RIELLO    = new Crc16RIELLO();
            CRC16_T10DIF    = new Crc16T10DIF();
            CRC16_TELEDISK  = new Crc16Teledisk();
            CRC16_TMS37157  = new Crc16TMS37157();
            CRC16_USB       = new Crc16USB();
            CRC16_A         = new Crc16A();
            CRC16_KERMIT    = new Crc16KERMIT();
            CRC16_MODBUS    = new Crc16Modbus();
            CRC16_X25       = new Crc16X25();
            CRC16_XMODEM    = new Crc16Xmodem();
        }
Exemple #4
0
        private byte[] MakePackage(byte cmd1, byte cmd2, byte index, byte[] data = null)
        {
            var result = new List <byte>();

            result.AddRange(GetNaPacket());
            result.Add(cmd1);
            if (cmd2 != 0xff)
            {
                result.Add(cmd2);
            }
            if (index != 0xff)
            {
                result.Add(index);
            }
            if (data != null)
            {
                result.AddRange(data);
            }
            var crc = new Crc16Modbus();

            result.AddRange(crc.Calculate(result.ToArray(), 0, result.Count).CrcData);

            return(result.ToArray());
        }