public override byte[] Run(IInTaskManager taskManager) { var protocolTx = new ProtocolReadFuseTx(serialPortSettings.HeaderTX); var protocolRx = new ProtocolReadFuseRx(serialPortSettings.HeaderRX); var bufferRx = new IOBufferReadFuseRx(); using (var sp = new SerialPortManager(portName, (int)serialPortSettings.BaudRate, serialPortSettings.Parity, serialPortSettings.StopBits, 50, SerialPort.InfiniteTimeout)) { Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); for (;;) { Transmit(sp, protocolTx, taskManager.SynchronizationContext); RestartReceiv(); stopWatch.Restart(); while (stopWatch.Elapsed < TimeSpan.FromMilliseconds(100)) { taskManager.IfCancellation(); if (IfReceived(sp, protocolRx, bufferRx, taskManager.SynchronizationContext)) { stopWatch.Stop(); return(new byte[] { protocolRx.ExtendedFuses, protocolRx.HightFuses, protocolRx.LowFuses }); } } } } }
public override IOBuffer Pack() { var buffer = new IOBufferReadFuseRx(); buffer[0] = Header; buffer[1] = Confirmation; buffer[2] = (byte)Regim; buffer[3] = (byte)(ExtendedFuses & 0x7F); buffer[4] = (byte)(HightFuses & 0x7F); buffer[5] = (byte)(LowFuses & 0x7F); buffer[6] = (byte)((ExtendedFuses >> 7) & 0x01); buffer[6] |= (byte)((HightFuses >> 6) & 0x02); buffer[6] |= (byte)((LowFuses >> 5) & 0x04); checkSumManager.Calculate(buffer); return(buffer); }