示例#1
0
        private static string CurrentSn(byte[] ByteSn, ref string OldSn, CrcList mCrcList)
        {
            byte lo = 0, hi = 0;

            Crc(ByteSn, mCrcList, ref lo, ref hi);
            switch (mCrcList)
            {
            case CrcList.NewSn600:
                if (ByteSn.Length >= 20)
                {
                    ByteSn[18] = lo;
                    ByteSn[19] = hi;
                    OldSn      = "";
                    for (int i = 0; i < 20; i++)
                    {
                        OldSn = OldSn + string.Format("{0:X2}", ByteSn[i]);
                    }
                }
                break;

            case CrcList.OldSn600:
                if (ByteSn.Length >= 18)
                {
                    ByteSn[16] = lo;
                    OldSn      = "";
                    for (int i = 0; i < 18; i++)
                    {
                        OldSn = OldSn + string.Format("{0:X2}", ByteSn[i]);
                    }
                }
                break;
            }
            return(OldSn);
        }
示例#2
0
        /// <summary>
        /// 计算美的指令校验
        /// </summary>
        /// <param name="mByte">传入美的指令,加入前缀(oldSn的mByte[0]应为AA,newSn的mByte[0]应为A0)</param>
        /// <param name="mCrcList">计算SN类型</param>
        /// <param name="CrcLo">校验的低字节</param>
        /// <param name="CrcHi">校验的高字节,部分指令没有</param>
        /// <returns>返回计算是否成功</returns>
        public static bool Crc(byte[] mByte, CrcList mCrcList, ref byte CrcLo, ref byte CrcHi)
        {
            bool isOk = false;

            CrcLo = 0;
            CrcHi = 0;
            int sum   = 0;
            int start = 0;

            switch (mCrcList)
            {
            case CrcList.OldSn600:
                if (mByte[0] == 0xAA)
                {
                    start = 1;
                }
                for (int i = start; i <= 14 + start; i++)
                {
                    sum = sum + mByte[i];
                }
                CrcLo = (byte)((((sum & 0xFF) ^ 0xFF) + 1) & 0xFF);
                break;

            case CrcList.NewSn600:
                for (int i = 0; i < mByte.Length - 2; i++)
                {
                    sum = sum + mByte[i];
                }
                CrcLo = (byte)((((sum & 0xFFFF) ^ 0xFFFF) + 1) & 0xFF);
                CrcHi = (byte)((((sum & 0xFFFF) ^ 0xFFFF) + 1) >> 8);
                break;

            case CrcList.TianHua1200:
                for (int i = 1; i <= 5; i++)
                {
                    sum = sum + mByte[i];
                }
                CrcLo = (byte)((((sum & 0xFF) ^ 0xFF) + 1) & 0xFF);
                break;

            case CrcList.ShuMa1023:
                for (int i = 0; i <= 4; i++)
                {
                    sum = sum + mByte[i];
                }
                CrcLo = (byte)((((sum & 0xFF) ^ 0xFF) + 1) & 0xFF);
                break;

            case CrcList.PQ:
                if (mByte[0] == 0xAA)
                {
                    start = 1;
                }
                for (int i = start; i <= 6 + start; i++)
                {
                    sum = sum + mByte[i];
                }
                CrcLo = (byte)((((sum & 0xFF) ^ 0xFF) + 1) & 0xFF);
                break;
            }
            return(isOk);
        }
示例#3
0
        public static string GetSn600(CrcList machine, StepName step, IndoorList door)
        {
            string sn = "";

            switch (machine)
            {
            case CrcList.OldSn600:
                switch (step)
                {
                case StepName.Hot:
                    switch (door)
                    {
                    case IndoorList.One:
                        sn = "AA0100000502F00300001E017D7D0F01DC55";
                        break;

                    case IndoorList.Two:
                        sn = "AA0200000502F00300001E017D7D0F01DB55";
                        break;

                    case IndoorList.Three:
                        sn = "AA0300000502F00300001E017D7D0F01DA55";
                        break;

                    case IndoorList.Four:
                        sn = "AA0400000502F00300001E017D7D0F01D955";
                        break;
                    }
                    break;

                case StepName.Cold:
                    switch (door)
                    {
                    case IndoorList.One:
                        sn = "AA0100000501F002000011017D7D0F01EB55";
                        break;

                    case IndoorList.Two:
                        sn = "AA0200000501F002000011017D7D0F01EA55";
                        break;

                    case IndoorList.Three:
                        sn = "AA0300000501F002000011017D7D0F01E955";
                        break;

                    case IndoorList.Four:
                        sn = "AA0400000501F002000011017D7D0F01E855";
                        break;
                    }
                    break;

                case StepName.Stop:
                    switch (door)
                    {
                    case IndoorList.One:
                        sn = "AA0100000500F00000001E007D7D0F01E255";
                        break;

                    case IndoorList.Two:
                        sn = "AA0200000500F00000001E007D7D0F01E155";
                        break;

                    case IndoorList.Three:
                        sn = "AA0300000500F00000001E007D7D0F01E055";
                        break;

                    case IndoorList.Four:
                        sn = "AA0400000500F00000001E007D7D0F01DF55";
                        break;
                    }
                    break;
                }
                break;
            }


            return(sn);
        }
示例#4
0
        /// <summary>
        /// 计算美的指令校验
        /// </summary>
        /// <param name="mByte">传入美的指令,加入前缀(oldSn的mByte[0]应为AA,newSn的mByte[0]应为A0)</param>
        /// <param name="mCrcList">计算SN类型</param>
        /// <param name="CrcLo">校验的低字节</param>
        /// <param name="CrcHi">校验的高字节,部分指令没有</param>
        /// <returns>返回计算是否成功</returns>
        public static bool Crc(byte[] mByte, CrcList mCrcList, ref byte CrcLo)
        {
            byte b = 0;

            return(Crc(mByte, mCrcList, ref CrcLo, ref b));
        }