public bool SetQuality(string key, QUALITIES quality) { string type; if (Find(key, out type)) { if (type == ModbusType.Coil) { return(coilMapping[key].SetQuality(quality) ? true : false); } else if (type == ModbusType.InputStatus) { return(inputStatusMapping[key].SetQuality(quality) ? true : false); } if (type == ModbusType.InputRegister) { return(inPutRegisterMapping[key].SetQuality(quality) ? true :false); } else if (type == ModbusType.HoldRegister) { return(holdRegisterMapping[key].SetQuality(quality) ? true : false); } else { _log.ErrorLog("ModbusMapping Get Point Error: Key value not match point Type,Key : {0} , type : {1}", key, type); return(false); } } else { _log.ErrorLog("ModbusMapping Get Point Error: Point not exsit ,Key : {0} ", key); return(false); } }
public HistoryData(short id, QUALITIES qualitie, Storage value, DateTime timeStamp) { ID = id; Quality = qualitie; Value = value; TimeStamp = timeStamp;//数据产生的时间戳 }
public ValueChangingEventArgs(QUALITIES quality, T oldValue, T newValue, DateTime oldTime, DateTime newTime) { this.Quality = quality; this.OldValue = oldValue; this.NewValue = newValue; this.OldTimeStamp = oldTime; this.NewTimeStamp = newTime; }
public bool SetQuality(string key, QUALITIES quality) { if (Find(key)) { return(mapping[key].SetQuality(quality)); } else { return(false); } }
public void Update(Storage newvalue, DateTime timeStamp, QUALITIES quality) { if (_timeStamp > timeStamp) { return; //如果时间戳更旧或值未改变 } if (ValueChanging != null) { ValueChanging(this, new ValueChangingEventArgs <Storage>(quality, _value, newvalue, _timeStamp, timeStamp)); } _timeStamp = timeStamp; _quality = quality; if (quality == QUALITIES.QUALITY_GOOD) { _value = newvalue; if (ValueChanged != null) { ValueChanged(this, new ValueChangedEventArgs(_value)); } } }
private void FireDataChange(int dwTransid, int hGroup, int hrMasterquality, int hrMastererror, int dwCount, IntPtr phClientItems, IntPtr pvValues, IntPtr pwQualities, IntPtr pftTimeStamps, IntPtr ppErrors) { HistoryData[] clents = new HistoryData[dwCount]; for (int i = 0; i < dwCount; i++) { ITag item = GetItemByID(Marshal.ReadInt16(phClientItems)); if (item == null) { continue; } if (HRESULTS.Succeeded(Marshal.ReadInt32(ppErrors))) { Storage value = Storage.Empty; VarEnum vt = (VarEnum)Marshal.ReadInt32(pvValues); switch (item.Address.VarType) { case DataType.BOOL: value.Boolean = Marshal.ReadByte(pvValues + 8) > 0; break; case DataType.BYTE: value.Byte = Marshal.ReadByte(pvValues + 8); break; case DataType.WORD: value.Word = (ushort)Marshal.ReadInt16(pvValues + 8); break; case DataType.SHORT: value.Int16 = Marshal.ReadInt16(pvValues + 8); break; case DataType.DWORD: value.DWord = (uint)Marshal.ReadInt32(pvValues + 8); break; case DataType.INT: value.Int32 = Marshal.ReadInt32(pvValues + 8); break; case DataType.FLOAT: if (vt == VarEnum.VT_UI2) { ushort us = (ushort)Marshal.ReadInt16(pvValues + 8); value.Single = Convert.ToSingle(us); } else { float[] x = new float[1]; Marshal.Copy(pvValues + 8, x, 0, 1); value.Single = x[0]; } break; case DataType.SYS: case DataType.STR: string str = Marshal.PtrToStringUni(Marshal.ReadIntPtr(pvValues + 8)); StringTag tag = item as StringTag; if (tag != null) { tag.String = str; } break; default: value.Boolean = Marshal.ReadByte(pvValues + 8) > 0; break; } DateTime time = DateTime.FromFileTime(Marshal.ReadInt64(pftTimeStamps)); QUALITIES quality = (QUALITIES)Marshal.ReadInt16(pwQualities); clents[i].ID = item.ID; clents[i].Quality = quality; clents[i].Value = value; clents[i].TimeStamp = time; item.Update(value, time, quality); } ppErrors += 4; phClientItems += 4; pvValues += 16; pwQualities += 2; pftTimeStamps += 8; } DataChange(this, new DataChangeEventArgs(1, clents)); }
public ItemData(T value, long timeStamp, QUALITIES quality) { Value = value; TimeStamp = timeStamp; Quality = quality; }
public bool SetQuality(QUALITIES quality, int index = 0) { _qualitiy = quality; return(true); }
public bool SetQuality(QUALITIES quality, int index = 0) { _value[index].Quality = quality; return(true); }