示例#1
0
        public static byte[] ReadDo(int addr, int doNum)
        {
            var src = new byte[8];

            src[0] = (byte)addr;
            src[1] = 0x01;
            src[2] = 0x00;
            src[3] = 0x00;
            src[4] = 0x00;
            src[5] = (byte)doNum;
            var crc = CalcRTU.CalculateCrc(src, 6);

            src[6] = (byte)(crc & 0xff);
            src[7] = (byte)(crc >> 8);
            return(src);
        }
示例#2
0
        public static byte[] WriteDo(int addr, int io, bool openClose)
        {
            var src = new byte[8];

            src[0] = (byte)addr;
            src[1] = 0x05;
            src[2] = 0x00;
            src[3] = (byte)io;
            src[4] = (byte)((openClose) ? 0xff : 0x00);
            src[5] = 0x00;
            var crc = CalcRTU.CalculateCrc(src, 6);

            src[6] = (byte)(crc & 0xff);
            src[7] = (byte)(crc >> 8);
            return(src);
        }
示例#3
0
        private byte[] AnalysisRcv(byte[] src, int len)
        {
            if (len < 6)
            {
                return(null);
            }
            if (src[0] != Convert.ToInt16(_addr))
            {
                return(null);
            }

            switch (src[1])
            {
            case 0x01:
                if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00)
                {
                    byte[] dst = new byte[src[2]];
                    for (int i = 0; i < src[2]; i++)
                    {
                        dst[i] = src[3 + i];
                    }
                    return(dst);
                }
                break;

            case 0x02:
                if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00)
                {
                    var dst = new byte[src[2]];
                    for (var i = 0; i < src[2]; i++)
                    {
                        dst[i] = src[3 + i];
                    }
                    return(dst);
                }
                break;

            case 0x04:
                if (CalcRTU.CalculateCrc(src, src[2] + 5) == 0x00)
                {
                    var dst = new byte[src[2]];
                    for (var i = 0; i < src[2]; i++)
                    {
                        dst[i] = src[3 + i];
                    }
                    return(dst);
                }
                break;

            case 0x05:
                if (CalcRTU.CalculateCrc(src, 8) == 0x00)
                {
                    var dst = new byte[1];
                    dst[0] = src[4];
                    return(dst);
                }
                break;

            case 0x0f:
                if (CalcRTU.CalculateCrc(src, 8) == 0x00)
                {
                    var dst = new byte[1];
                    dst[0] = 1;
                    return(dst);
                }
                break;
            }
            return(null);
        }