private void Worker_ChangedState(object sender, ChangedStateEventArgs e)
        {
            SerialPortWorkerState workerState = e.WorkerState;

            Helper.NLogger.Debug($"Sender: {sender}, has sent state {workerState}");

            SerialPortWorker worker = sender as SerialPortWorker;

            if (worker != null)
            {
                SPClass workerClass = worker.SP_CLASS_TYPE;
                switch (workerState)
                {
                case SerialPortWorkerState.STARTED:
                    break;

                case SerialPortWorkerState.PAUSED:
                    break;

                case SerialPortWorkerState.STOPPED:
                    RemoveWorkerFromCollection(workerClass);
                    break;

                default:
                    break;
                }
            }
        }
        private void SendMessageToWorker(SPClass serialPortClassWhichMessageHasBeenSentTo, string message)
        {
            if (serialPortWorkers.TryGetValue(serialPortClassWhichMessageHasBeenSentTo, out SerialPortWorker worker))
            {
                SerialPortWorkerState currentWorkerState = worker.CurrentState;

                Helper.NLogger.Debug($"Próba wysłania wiadomości: {message} do workera: {worker} ({worker})");
                Helper.NLogger.Debug($"Worker jest w trybie: {currentWorkerState}");

                if (currentWorkerState == SerialPortWorkerState.STARTED)
                {
                    Helper.NLogger.Trace("Usuwanie nadmiaru spacji...");
                    message = Regex.Replace(message, @"\s+", " ");
                    Helper.NLogger.Trace("Do workera zostanie wysłana wiadomosć do przetworzenia.");
                    worker.WorkOnReceivedMessage(message);
                }
                else if (currentWorkerState == SerialPortWorkerState.STOPPED)
                {
                    Helper.NLogger.Trace("Worker zostanie usunięty (bez wysyłania wiadmości!).");
                    RemoveWorkerFromCollection(serialPortClassWhichMessageHasBeenSentTo);
                }
                else     //SerialPortWorkerState.PAUSED
                {
                }
            }
            else
            {
                Helper.NLogger.Warn($"Wokrer o klasie: {serialPortClassWhichMessageHasBeenSentTo} nie istnieje. Wiadomość: >>{message}<< nie może zostać wysłana");
            }
        }
 private void ChangeStateThisInMonitoring(SerialPortWorkerState workerState)
 {
     CurrentState = workerState;
     ChangedState?.Invoke(this, new ChangedStateEventArgs(CurrentState));
     Helper.NLogger.Debug($"Zmieniono stan na: {CurrentState}");
 }
Пример #4
0
 public ChangedStateEventArgs(SerialPortWorkerState workerState)
 {
     WorkerState = workerState;
 }