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)); } }
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 }); }
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); }
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(); } }
public static void oilStationState(IReadonlySignal s) { foilstationstate = checkValueAsBool(s.Value); }
private void FeedbackOnChange(IReadonlySignal signal) { //Checkout(this); mTask.Start(); }