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