public override IOBuffer Pack() { var buffer = new IOBufferIsEmptyPageTx(); buffer[0] = Header; buffer[1] = Confirmation; buffer[2] = (byte)Regim; buffer[3] = (byte)(PageNumber & 0x7F); buffer[4] = (byte)((PageNumber >> 7) & 0x7F); buffer[5] = (byte)((PageNumber >> 14) & 0x7F); buffer[6] = (byte)((PageNumber >> 21) & 0x07); checkSumManager.Calculate(buffer); return(buffer); }
public override bool Run(IInTaskManager taskManager) { Mode mode = (memoryType == MemoryType.FLASH) ? Mode.IsEmptyFlashPage : Mode.IsEmptyEepromPage; var protocolTx = new ProtocolIsEmptyPageTx(serialPortSettings.HeaderTX, mode); var protocolRx = new ProtocolIsEmptyPageRx(serialPortSettings.HeaderRX, mode); var bufferTx = new IOBufferIsEmptyPageTx(); using (var sp = new SerialPortManager(portName, (int)serialPortSettings.BaudRate, serialPortSettings.Parity, serialPortSettings.StopBits, 50, SerialPort.InfiniteTimeout)) { for (;;) { taskManager.IfCancellation(); if (IfReceived(sp, protocolTx, bufferTx, taskManager.SynchronizationContext)) { protocolRx.PageNumber = protocolTx.PageNumber; protocolRx.IsEmpty = memory.GetPage(protocolTx.PageNumber).IsEmpty; Transmit(sp, protocolRx, taskManager.SynchronizationContext); RestartReceiv(); } } } }