Exemple #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="value"></param>
 /// <returns></returns>
 public HisDataBuffer AppendValue(DateTime time, IntPoint3Data value, byte quality)
 {
     ValueCount++;
     CheckAndResize(Position + 21);
     this.WriteLong(Position, time.ToBinary());
     this.WriteInt(Position, value.X);
     this.WriteInt(Position, value.Y);
     this.WriteInt(Position, value.Z);
     this.WriteByte(Position, quality);
     return(this);
 }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        private void StepPointThreadPro()
        {
            ThreadHelper.AssignToCPU(CPUAssignHelper.Helper.CPUArray2);
            List <Tagbase> vv  = mTagIdCach.ContainsKey("Sim:steppoint") ? mTagIdCach["Sim:steppoint"] : null;
            List <int>     vvr = mManualRecordTagCach.ContainsKey("Sim:steppoint") ? mManualRecordTagCach["Sim:steppoint"] : null;

            while (!mIsClosed)
            {
                mSteppointEvent.WaitOne();
                mSteppointEvent.Reset();

                if (mStepPointNeedReload)
                {
                    vv  = mTagIdCach.ContainsKey("Sim:steppoint") ? mTagIdCach["Sim:steppoint"] : null;
                    vvr = mManualRecordTagCach.ContainsKey("Sim:steppoint") ? mManualRecordTagCach["Sim:steppoint"] : null;
                    mStepPointNeedReload = false;
                }

                var vpp = new IntPoint3Data(mNumber, mNumber, mNumber);
                if (vv != null)
                {
                    mTagService.SetTagValue(vv, ref vpp, 0);
                    mTagService.SubmiteNotifyChanged();
                }

                if (vvr != null && vvr.Count > 0)
                {
                    TagValue tv = new TagValue()
                    {
                        Quality = 0, Time = DateTime.UtcNow, Value = new IntPoint3Data(mNumber, mNumber, mNumber)
                    };
                    foreach (var vvv in vvr)
                    {
                        mTagHisValueService.SetTagHisValue(vvv, tv);
                    }
                }

                var ts = (DateTime.Now - mLastProcessTime).TotalMilliseconds;
                lock (mLockObj)
                {
                    if (ts > mMaxProcessTimeSpan)
                    {
                        mMaxProcessTimeSpan = ts;
                    }
                }

                Interlocked.Increment(ref mFinishCount);
            }
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="clientid"></param>
        /// <param name="block"></param>
        private void ProcessSetRealData(string clientid, ByteBuffer block)
        {
            var service = ServiceLocator.Locator.Resolve <IRealTagConsumer>();
            int count   = block.ReadInt();

            for (int i = 0; i < count; i++)
            {
                var    id    = block.ReadInt();
                byte   typ   = block.ReadByte();
                object value = null;
                switch (typ)
                {
                case (byte)TagType.Bool:
                    value = block.ReadByte();
                    break;

                case (byte)TagType.Byte:
                    value = block.ReadByte();
                    break;

                case (byte)TagType.Short:
                    value = block.ReadShort();
                    break;

                case (byte)TagType.UShort:
                    value = (ushort)block.ReadShort();
                    break;

                case (byte)TagType.Int:
                    value = block.ReadInt();
                    break;

                case (byte)TagType.UInt:
                    value = (uint)block.ReadInt();
                    break;

                case (byte)TagType.Long:
                    value = block.ReadLong();
                    break;

                case (byte)TagType.ULong:
                    value = (ulong)block.ReadLong();
                    break;

                case (byte)TagType.Float:
                    value = block.ReadFloat();
                    break;

                case (byte)TagType.Double:
                    value = block.ReadDouble();
                    break;

                case (byte)TagType.String:
                    value = block.ReadString();
                    break;

                case (byte)TagType.DateTime:
                    var tick = block.ReadLong();
                    value = new DateTime(tick);
                    break;

                case (byte)TagType.IntPoint:
                    value = new IntPointData(block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.UIntPoint:
                    value = new UIntPointData(block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.IntPoint3:
                    value = new IntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.UIntPoint3:
                    value = new UIntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.LongPoint:
                    value = new LongPointData(block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.ULongPoint:
                    value = new ULongPointData(block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.LongPoint3:
                    value = new LongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.ULongPoint3:
                    value = new ULongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong());
                    break;
                }
                service.SetTagValueForConsumer(id, value);
            }
            Parent.AsyncCallback(clientid, ToByteBuffer(ApiFunConst.RealDataSetFun, (byte)1));
        }
Exemple #4
0
        private void ProcessSingleBufferData(ByteBuffer block)
        {
            if (block == null)
            {
                return;
            }
            var count = block.ReadInt();

            for (int i = 0; i < count; i++)
            {
                var vid = block.ReadInt();
                if (vid < 0)
                {
                    Debug.Print("Invaild value!");
                }
                var    typ   = block.ReadByte();
                object value = null;
                switch (typ)
                {
                case (byte)TagType.Bool:
                    value = block.ReadByte();
                    break;

                case (byte)TagType.Byte:
                    value = block.ReadByte();
                    break;

                case (byte)TagType.Short:
                    value = block.ReadShort();
                    break;

                case (byte)TagType.UShort:
                    value = (ushort)block.ReadShort();
                    break;

                case (byte)TagType.Int:
                    value = block.ReadInt();
                    break;

                case (byte)TagType.UInt:
                    value = Convert.ToUInt32(block.ReadInt());
                    break;

                case (byte)TagType.Long:
                    value = block.ReadLong();
                    break;

                case (byte)TagType.ULong:
                    value = (ulong)block.ReadLong();
                    break;

                case (byte)TagType.Float:
                    value = block.ReadFloat();
                    break;

                case (byte)TagType.Double:
                    value = block.ReadDouble();
                    break;

                case (byte)TagType.String:
                    value = ReadString(block);
                    break;

                case (byte)TagType.DateTime:
                    var tick = block.ReadLong();
                    value = new DateTime(tick);
                    break;

                case (byte)TagType.IntPoint:
                    value = new IntPointData(block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.UIntPoint:
                    value = new UIntPointData(block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.IntPoint3:
                    value = new IntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.UIntPoint3:
                    value = new UIntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt());
                    break;

                case (byte)TagType.LongPoint:
                    value = new LongPointData(block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.ULongPoint:
                    value = new ULongPointData(block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.LongPoint3:
                    value = new LongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong());
                    break;

                case (byte)TagType.ULongPoint3:
                    value = new ULongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong());
                    break;
                }
                var time = new DateTime(block.ReadLong());
                var qua  = block.ReadByte();
                mServier.SetTagValue(vid, ref value, time, qua);
            }
            block.UnlockAndReturn();
        }