Beispiel #1
0
        private void SignalUpdated(IReadonlySignal signal)
        {
            ModbusDescription rv;

            mSignals.TryGetValue(signal.Specification.Id, out rv);

            if (rv == null)
            {
                return;
            }

            var data = rv.GetAsModbus();

            for (var i = 0; i < data.Length; i++)
            {
                if (rv.Type == SignalType.Bool)
                {
                    if (data[i] > 0)
                    {
                        mOutputData[rv.Index - 512 + i] |= rv.Mask;
                    }
                    else
                    {
                        mOutputData[rv.Index - 512 + i] &= (ushort)(~rv.Mask);
                    }
                }
                else
                {
                    mOutputData[rv.Index - 512 + i] = data[i];
                }
            }
        }
 public bool Update(IReadonlySignal signal, float value)
 {
     lock (mProcessingLock)
     {
         Console.WriteLine("++ Update SpecificationID Value");
         return(mRemoteClient.Update(signal.Specification.Id, value));
     }
 }
Beispiel #3
0
 private void DatabaseSignalUpdate(IReadonlySignal signal)
 {
     // TODO: uncomment for use mDatabase
     //Console.WriteLine("DBUPDATE: [" + signal.Specification.Range + "] DF [" + signal.Specification.DefaultValue.ToString() + "] V [" + signal.ValueAsInt.ToString() + "]");
     mDatabase.Update(new ConfigRecord(signal.Specification)
     {
         Value = signal.Value, SaveAt = DateTime.Now
     });
 }
Beispiel #4
0
        private static void OnComplete(IReadonlySignal signal)
        {
            // сделано для того, чтобы по обычному нажатию на сигнал не запускался насос :)
            SoundAlarm.OnComplete -= OnComplete;

            // Если не зажата педаль и не сработал корд - включаемся
            if (Pedals.IsPressed || !mCord.IsNormal)
            {
                return;
            }

            mRelay.On();
            mStartAt = DateTime.Now;

            mState.Update((uint)EquipmentState.Active);
        }
Beispiel #5
0
        public void SendSignal(IReadonlySignal s, String pref = "upd")
        {
            if (!isclient)
            {
                return;
            }
            String snd = s.Specification.Id + "|" + pref + "|";

            if (s.QtSpecification.maxvalcal > 0)
            {
                float pr = s.Value;
                if (pr > 0.0f)
                {
                    switch (s.QtSpecification.accuracy) //  умножаем на 100% и делим потом на 100%
                    {
                    case 3:
                        pr = pr * 0.12f;
                        break;

                    case 2:;
                        break;

                    default: pr *= 10.0f;
                        break;
                    }
                    pr   = pr / (float)s.QtSpecification.maxvalcal;
                    snd += ((int)pr).ToString();
                }
                else
                {
                    snd += "0";
                }
            }
            else
            {
                snd += s.QtSpecification.maxvalcal.ToString();
            }

            switch (s.QtSpecification.accuracy)
            {
            case -2:
                if (s.IsSet)
                {
                    snd += "|1\r\n";
                }
                else
                {
                    snd += "|0\r\n";
                }
                break;

            default:
                snd += "|" + formatFloat(s.Value, s.QtSpecification.accuracy) + "\r\n";
                break;
            }

            lock (lck)
            {
                toclient.Add(snd);
            }
            if (!usekvant)
            {
                ev.Set();
            }
        }
Beispiel #6
0
 public static void oilStationState(IReadonlySignal s)
 {
     foilstationstate = checkValueAsBool(s.Value);
 }
Beispiel #7
0
 private void FeedbackOnChange(IReadonlySignal signal)
 {
     //Checkout(this);
     mTask.Start();
 }