public static bool ModeE1UpdateBIN(string[] serialdata, byte[] oldbin, out byte[] newbin, out bool datavalid) { int num = -1; int num1 = -1; int frameChecksum = -1; int number = -1; byte[] frameData = null; datavalid = false; newbin = null; int num2 = Tools.SearchSerialArray(serialdata, OBD.mode36E1_header); if (num2 == -1) { newbin = oldbin; return(false); } if (BinFile.GetFrameAddr(num2, serialdata, out num, out num1)) { num2 = num2 + 5; frameData = BinFile.GetFrameData(num2, num, serialdata); num2 = num2 + num; frameChecksum = BinFile.GetFrameChecksum(num2, serialdata); number = Tools.ByteToNumber(BinFile.GetCheckSum(0, frameData)); } if (frameChecksum == -1 | number == -1 | num == -1 | num1 == -1) { newbin = oldbin; return(true); } if (frameChecksum != number) { newbin = oldbin; return(true); } datavalid = true; newbin = BinFile.UpdateBIN(oldbin, frameData, num, num1); return(true); }