示例#1
0
 private void SendInitialBlockId(CANMessage canMessage)
 {
     /* prepare test frame for later use */
     Console.WriteLine("Prepare test frame.");
     CheckFrame      = canMessage.Clone();
     CheckFrame.Id   = BuildCANId(CANMaerklinCommand.BootloaderRsp, canMessage.Id & 0x00FFFF);
     CheckFrame.Data = new byte[] { canMessage.Data[0], canMessage.Data[1], canMessage.Data[2], canMessage.Data[3], 0x88 };
     CheckFrameNack  = CheckFrame.Clone();
     LastBinBlock    = TotalBlocksToSend;
     Thread.Sleep(100);
     SendNextBlockId((byte)(LastBinBlock + CurrentUpdateFiles[CurrentUpdateFileIndex].blockOffset));
 }
示例#2
0
        void SendNextBlockId(byte block)
        {
            LastSentFrame = new CANMessage(BuildCANId(CANMaerklinCommand.Bootloader, CS2AddressHash), new byte[] { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00 });
            Array.Copy(CurrentDeviceId.HexStringToByteArray(), 0, LastSentFrame.Data, 0, 4);
            LastSentFrame.Data[5] = block;
            serialCAN.SendCAN(LastSentFrame);

            CheckFrameBlockId      = CheckFrame.Clone();
            CheckFrameBlockId.Data = new byte[6];
            Array.Copy(CheckFrame.Data, 0, CheckFrameBlockId.Data, 0, min(CheckFrame.Data.Length, 6));
            CheckFrameBlockId.Data[4] = 0x44;
            CheckFrameBlockId.Data[5] = block;
        }