Exemple #1
0
        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);
            }
        }
Exemple #2
0
 public HistoryData(short id, QUALITIES qualitie, Storage value, DateTime timeStamp)
 {
     ID        = id;
     Quality   = qualitie;
     Value     = value;
     TimeStamp = timeStamp;//数据产生的时间戳
 }
Exemple #3
0
 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);
     }
 }
Exemple #5
0
 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));
         }
     }
 }
Exemple #6
0
        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));
        }
Exemple #7
0
 public ItemData(T value, long timeStamp, QUALITIES quality)
 {
     Value     = value;
     TimeStamp = timeStamp;
     Quality   = quality;
 }
Exemple #8
0
 public bool SetQuality(QUALITIES quality, int index = 0)
 {
     _qualitiy = quality;
     return(true);
 }
Exemple #9
0
 public bool SetQuality(QUALITIES quality, int index = 0)
 {
     _value[index].Quality = quality;
     return(true);
 }