예제 #1
0
        // Обработка полученных сигналов от MTS Service
        private void SubOnNewDiff(SubscriptionStateEventArgs e)
        {
            SignalsState diff = e.Diff.Signals;

            if (diff == null)
            {
                return;
            }

            foreach (var(Key, Value) in diff)
            {
                // Key   - номер сигнала
                // Value - полученное значение сигнала
                switch (Key)
                {
                case 4038: LoadInput(1, Value); break;            // Сигнал на загрузку первого загрузочного бункер

                case 4039: LoadInput(2, Value); break;            // Сигнал на загрузку второго загрузочного бункер

                case 4040: UnloadInput(1, Value); break;          // Сигнал на разгрузку первого загрузочного бункер

                case 4041: UnloadInput(2, Value); break;          // Сигнал на разгрузку второго загрузочного бункер

                case 4014: LoadSilos(1, Value); break;            // Сигнал на загрузку первого силоса

                case 4015: LoadSilos(2, Value); break;            // Сигнал на загрузку второго силоса

                case 4016: LoadSilos(3, Value); break;            // Сигнал на загрузку третьего силоса

                case 4017: LoadSilos(4, Value); break;            // Сигнал на загрузку четвертого силоса

                case 4018: LoadSilos(5, Value); break;            // Сигнал на загрузку пятого силоса

                case 4019: LoadSilos(6, Value); break;            // Сигнал на загрузку шестого силоса

                case 4020: LoadSilos(7, Value); break;            // Сигнал на загрузку седьмого силоса

                case 4021: LoadSilos(8, Value); break;            // Сигнал на загрузку восьмого силоса

                case 4042: SetMaterial(1, Value); break;          // Сигнал на выбор материала для первого загрузочного бункера

                case 4043: SetMaterial(2, Value); break;          // Сигнал на выбор материала для второго загрузочного бункера
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Обработка сигнала при получении его нового значения
        /// </summary>
        /// <param name="e">Экземпляр класса MtsConnect.SubscriptionStateEventArgs</param>
        private void SubOnNewDiff(SubscriptionStateEventArgs e)
        {
            string       msg;
            SignalsState diff = e.Diff.Signals;

            if (diff == null)
            {
                return;
            }

            foreach (var(key, value) in diff)
            {
                string val;
                if (key == 777)
                {
                    val = String.Format("{0:f0}", value);
                }
                else
                {
                    val = String.Format("{0:f4}", value);
                }

                // Вести локально список сигналов и их значений. Отправлять клиенту только номер одного сигнала и его значения,
                // если значение изменилось

                // Проверяем, есть ли полученный сигнал в списке
                if (sensorsList.ContainsKey(key))
                {
                    // Этот сигнал уже есть
                    for (int i = 0; i < sensorsList.Count; ++i)
                    {
                        KeyValuePair <ushort, double> signal = sensorsList.ElementAt(i);
                        // Проверяем его значение
                        if (signal.Key == key && signal.Value != value)
                        {
                            // Если значение изменилось, обновляем его и отсылаем клиенту {Сигнал: Значение}
                            sensorsList[key] = value;
                            string v = value.ToString();
                            val = val.Replace(',', '.');
                            msg = "{\"Sensors\":[" + "{\"id\":" + key + "," + "\"value\":" + val + "}" + "]}";

                            foreach (var client in clients)
                            {
                                client.SendAsync("receive", msg);
                            }
                        }
                    }
                }
                else
                {
                    // Такого сигнала ещё нет
                    sensorsList.Add(key, value);
                    string v = value.ToString();
                    val = val.Replace(',', '.');
                    msg = "{\"Sensors\":[" + "{\"id\":" + key + "," + "\"value\":" + val + "}" + "]}";

                    foreach (var client in clients)
                    {
                        client.SendAsync("receive", msg);
                    }
                }

                // sensors.SetValue(key, val.ToString());
                // Console.WriteLine("New signal from MTS: {0} = {1}", key, val);
                // Message = sensors.ToString();
                // foreach (var client in clients)
                // {
                // client.SendAsync("receive", Message);
                // }
            }
        }