Example #1
0
        public static bool ModeE2UploadBIN(string[] serialdata, byte[] bin, out byte[] messageframe, out int currentaddr)
        {
            bool flag;
            int  num  = -1;
            int  num1 = -1;

            currentaddr  = -1;
            messageframe = null;
            int num2 = Tools.SearchSerialArray(serialdata, OBD.mode36E2_header);

            if (num2 == -1)
            {
                return(false);
            }
            if (BinFile.GetFrameAddr(num2, serialdata, out num, out num1))
            {
                byte[] numArray = BinFile.MakeFrameData(num, num1, bin);
                if (numArray != null)
                {
                    messageframe = Tools.ConvertStringArray(OBD.sendmode36E2_data, out flag);
                    messageframe = Tools.AppendByteArray(messageframe, Tools.NumberToByte(num, 2));
                    messageframe = Tools.AppendByteArray(messageframe, Tools.NumberToByte(num1, 3));
                    messageframe = Tools.AppendByteArray(messageframe, numArray);
                    messageframe = Tools.AppendByteArray(messageframe, BinFile.GetCheckSum(0, numArray));
                    currentaddr  = num1;
                }
            }
            return(true);
        }
Example #2
0
        public static byte[] GetMode3436Frame(byte[] uploadblock, string mode)
        {
            byte[] numArray = null;
            bool   flag     = false;
            int    length   = (int)uploadblock.Length;

            length = length & 65535;
            if (mode != "34")
            {
                if (mode != "36")
                {
                    return(null);
                }
                numArray = Tools.ConvertStringArray(OBD.sendmode36_request, out flag);
            }
            else
            {
                numArray = Tools.ConvertStringArray(OBD.sendmode34_request, out flag);
            }
            numArray = Tools.AppendByteArray(numArray, Tools.NumberToByte(length, 2));
            numArray = Tools.AppendByteArray(numArray, Tools.NumberToByte(OBD.uploadkernaladdr, 3));
            if (mode == "36")
            {
                numArray = Tools.AppendByteArray(numArray, uploadblock);
                byte[] checkSum = BinFile.GetCheckSum(4, numArray);
                numArray = Tools.AppendByteArray(numArray, checkSum);
            }
            return(numArray);
        }
Example #3
0
        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);
        }