private void Feedback(IHandler handler) { Console.WriteLine("FEEDBACK"); Receiver = (sender, args) => { Console.WriteLine("Receiver --- Handler name: " + handler.Name); SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine($"Indata({handler.Name}): " + indata + "<-end"); bool complete = handler.Responce(indata); if (complete) { PortConnect.RemoveReceiver(Receiver); Console.WriteLine("Убрал receiver: " + Receiver.GetHashCode()); Command(); } }; }
private void Command() { bool move = enumerator.MoveNext(); if (this.handlers.Count == 0) { move = false; } if (move) { IHandler handler = (IHandler)enumerator.Current; if (handler.Skip()) { Command(); } if (handler.Action()) { Command(); } Receiver = null; Feedback(handler); PortConnect.AddReceiver(Receiver); Console.WriteLine("Добавил recceiver: " + Receiver.GetHashCode()); if (handler.Request() != null) { foreach (string r in handler.Request()) { PortConnect.Write(r); } } } else { Console.WriteLine("ProcessNewCard_Конец_Опреации"); } }