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); }
/// <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); }
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); }
/// <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)); }