コード例 #1
0
        static public object GetBinaryTypeValue(IAnalyze analyze, BinaryTypeEnumeration binaryType)
        {
            object value = null;

            switch (binaryType)
            {
            case BinaryTypeEnumeration.Primitive:
                var temp = (PrimitiveTypeEnumeration)analyze.Reader.ReadByte();
                value = temp;

                if (temp == PrimitiveTypeEnumeration.String)
                {
                    throw new Exception();
                }
                break;

            case BinaryTypeEnumeration.SystemClass:
                //可能有问题
                value = new LengthPrefixedString(analyze);
                break;

            case BinaryTypeEnumeration.Class:
                value = new ClassTypeInfo(analyze);
                break;

            case BinaryTypeEnumeration.PrimitiveArray:
                value = (PrimitiveTypeEnumeration)analyze.Reader.ReadByte();
                break;
            }

            return(value);
        }
コード例 #2
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            //EOF
            //感觉是无意义的数据
            while (analyze.Reader.BaseStream.Position < analyze.Reader.BaseStream.Length)
            {
                if (analyze.Reader.BaseStream.Position == 1)
                {
                    break;
                }
                else
                {
                    return(null);
                }
            }

            var record = new SerializationHeaderRecord();

            record.RootId       = analyze.Reader.ReadInt32();
            record.HeaderId     = analyze.Reader.ReadInt32();
            record.MajorVersion = analyze.Reader.ReadInt32();
            record.MinorVersion = analyze.Reader.ReadInt32();

            return(record);
        }
コード例 #3
0
        public ValueWithCode(IAnalyze analyze) : base(analyze)
        {
            PrimitiveTypeEnum = (PrimitiveTypeEnumeration)analyze.Reader.ReadByte();
            Assert.IsPrimitiveTypeEnum(PrimitiveTypeEnum);

            Value = Common.GetPrimitiveTypeValue(analyze, PrimitiveTypeEnum);
        }
コード例 #4
0
ファイル: HeartContext.cs プロジェクト: mpguard/BtHeart
        public HeartContext()
        {
            worker.DoWork += worker_DoWork;
            worker.WorkerSupportsCancellation = true;

            Pump = new Com();
            //Pump = new RandomPump();
            //Pump = new FilePump();
            //Pump.Received += Pump_Received;

            Analyze = new ComDataAnalyze(Pump);
            Analyze.Analyzed += Analyze_Analyzed;

            Rate = new DifferenceHeartRate(this);
            Rate.RateAnalyzed += Rate_RateAnalyzed;

            AvgFilter = new AvgFilterProcess();
            //FirFilter = new MyFirFilterProcess();
            //FirFilter = new LowFirFilterProcess();
            FirFilter = new BandPassFirFilterProcess();
            BandStopFilter = new BandStopFirFilterProcess();
            MedianFilter = new MedianFilterProcess();

            Processes = new List<IProcess>()
            {
                AvgFilter,
                FirFilter,
                //BandStopFilter,
                MedianFilter,
            };
        }
コード例 #5
0
        public ClassTypeInfo(IAnalyze analyze) : base(analyze)
        {
            TypeName = new LengthPrefixedString(analyze);
            Assert.IsMemberName(TypeName.Value);

            LibraryId = analyze.Reader.ReadInt32();
        }
コード例 #6
0
 public ArrayInfo(IAnalyze analyze) : base(analyze)
 {
     ObjectId = analyze.Reader.ReadInt32();
     Assert.IsObjectId(ObjectId);
     Length = analyze.Reader.ReadInt32();
     Assert.IsPositiveIntegerIncludeZero(Length);
 }
コード例 #7
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new ArraySingleObject();

            record.ArrayInfo = new ArrayInfo(analyze);

            return(record);
        }
コード例 #8
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new MemberReference();

            record.IdRef = analyze.Reader.ReadInt32();
            Assert.IsIdRef(record.IdRef);

            return(record);
        }
コード例 #9
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new ObjectNullMultiple();

            record.NullCount = analyze.Reader.ReadInt32();
            Assert.IsPositiveIntegerIncludeZero(record.NullCount);

            return(record);
        }
コード例 #10
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new MemberPrimitiveTyped();

            record.PrimitiveTypeEnum = (PrimitiveTypeEnumeration)analyze.Reader.ReadByte();
            Assert.IsPrimitiveTypeEnum(record.PrimitiveTypeEnum);

            record.Value = Common.GetPrimitiveTypeValue(analyze, record.PrimitiveTypeEnum);

            return(record);
        }
コード例 #11
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new BinaryLibrary();

            record.LibraryId = analyze.Reader.ReadInt32();
            Assert.IsLibraryId(record.LibraryId);

            record.LibraryName = new LengthPrefixedString(analyze);

            return(record);
        }
コード例 #12
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new BinaryObjectString();

            record.ObjectId = analyze.Reader.ReadInt32();
            Assert.IsObjectId(record.ObjectId);

            record.Value = new LengthPrefixedString(analyze);

            return(record);
        }
コード例 #13
0
        public ArrayOfValueWithCode(IAnalyze analyze) : base(analyze)
        {
            Length = analyze.Reader.ReadInt32();
            Assert.IsPositiveIntegerIncludeZero(Length);

            ListOfValueWithCode = new ValueWithCode[Length];
            for (int i = 0; i < Length; i++)
            {
                ListOfValueWithCode[i] = new ValueWithCode(analyze);
            }
        }
コード例 #14
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            if (analyze.LastRecordType == RecordTypeEnumeration.ClassWithId)
            {
                return(null);
            }

            var record = new SystemClassWithMembers();

            record.ClassInfo = new ClassInfo(analyze);

            return(record);
        }
コード例 #15
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            if (analyze.LastRecordType == RecordTypeEnumeration.ClassWithId)
            {
                return(null);
            }

            var record = new ClassWithMembers();

            record.ClassInfo = new ClassInfo(analyze);
            record.LibraryId = analyze.Reader.ReadInt32();

            return(record);
        }
コード例 #16
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new ArraySinglePrimitive();

            record.ArrayInfo         = new ArrayInfo(analyze);
            record.PrimitiveTypeEnum = (PrimitiveTypeEnumeration)analyze.Reader.ReadByte();
            Assert.IsPrimitiveTypeEnum(record.PrimitiveTypeEnum);

            if (record.PrimitiveTypeEnum == PrimitiveTypeEnumeration.Byte)
            {
                record.Value = analyze.Reader.ReadBytes(record.ArrayInfo.Length);
            }

            return(record);
        }
コード例 #17
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new BinaryMethodReturn();

            record.MessageEnum = (MessageFlags)analyze.Reader.ReadInt32();
            Assert.IsMessageFlags(record.MessageEnum);

            record.ReturnValue = new ValueWithCode(analyze);
            record.CallContext = new StringValueWithCode(analyze);

            if (record.MessageEnum == MessageFlags.ArgsInline)
            {
                record.Args = new ArrayOfValueWithCode(analyze);
            }

            return(record);
        }
コード例 #18
0
        public MemberTypeInfo(IAnalyze analyze, int memberCount) : base(analyze)
        {
            BinaryTypeEnums = new BinaryTypeEnumeration[memberCount];
            AdditionalInfos = new object[memberCount];
            for (int i = 0; i < memberCount; i++)
            {
                var type = (BinaryTypeEnumeration)analyze.Reader.ReadByte();
                Assert.IsBinaryTypeEnum(type);

                BinaryTypeEnums[i] = type;
            }

            for (int i = 0; i < memberCount; i++)
            {
                object value = Common.GetBinaryTypeValue(analyze, BinaryTypeEnums[i]);
                AdditionalInfos[i] = value;
            }
        }
コード例 #19
0
        public ClassInfo(IAnalyze analyze) : base(analyze)
        {
            ObjectId = analyze.Reader.ReadInt32();
            //暂时这么处理,ObjectId暂时应该不会大于该值
            Assert.IsObjectId(ObjectId);

            Name = new LengthPrefixedString(analyze);
            Assert.IsMemberName(Name.Value);

            MemberCount = analyze.Reader.ReadInt32();
            Assert.IsPositiveIntegerIncludeZero(MemberCount);

            MemberNames = new LengthPrefixedString[MemberCount];
            for (int i = 0; i < MemberCount; i++)
            {
                MemberNames[i] = new LengthPrefixedString(analyze);
                Assert.IsMemberName(MemberNames[i].Value);
            }
        }
コード例 #20
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new BinaryArray();

            record.ObjectId = analyze.Reader.ReadInt32();
            Assert.IsObjectId(record.ObjectId);

            record.BinaryArrayTypeEnum = (BinaryArrayTypeEnumeration)analyze.Reader.ReadByte();
            Assert.IsBinaryArrayTypeEnum(record.BinaryArrayTypeEnum);

            record.Rank = analyze.Reader.ReadInt32();
            Assert.IsPositiveIntegerIncludeZero(record.Rank);

            record.Lengths = new Int32[record.Rank];
            for (int i = 0; i < record.Rank; i++)
            {
                record.Lengths[i] = analyze.Reader.ReadInt32();
                Assert.IsPositiveIntegerIncludeZero(record.Lengths[i]);
            }
            record.LowerBounds = new Int32[record.Rank];
            for (int i = 0; i < record.Rank; i++)
            {
                if (record.BinaryArrayTypeEnum == BinaryArrayTypeEnumeration.SingleOffset ||
                    record.BinaryArrayTypeEnum == BinaryArrayTypeEnumeration.JaggedOffset ||
                    record.BinaryArrayTypeEnum == BinaryArrayTypeEnumeration.RectangularOffset)
                {
                    record.LowerBounds[i] = analyze.Reader.ReadInt32();
                }
                else
                {
                    record.LowerBounds[i] = 0;
                }
            }

            record.TypeEnum = (BinaryTypeEnumeration)analyze.Reader.ReadByte();
            Assert.IsBinaryTypeEnum(record.TypeEnum);

            record.AdditionalTypeInfo = Common.GetBinaryTypeValue(analyze, record.TypeEnum);

            return(record);
        }
コード例 #21
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            //ClassWithId不可能连续出现两次以上
            if (analyze.LastRecordType == RecordTypeEnumeration.ClassWithId)
            {
                return(null);
            }
            //
            if (analyze.LastRecordType == RecordTypeEnumeration.ClassWithMembersAndTypes)
            {
                return(null);
            }
            //
            if (analyze.LastRecordType == RecordTypeEnumeration.BinaryObjectString)
            {
                return(null);
            }


            var record = new ClassWithId();

            record.ObjectId = analyze.Reader.ReadInt32();
            Assert.IsObjectId(record.ObjectId);

            record.MetadataId = analyze.Reader.ReadInt32();
            record.TempId     = analyze.Reader.ReadInt32();

            //ClassWithId后面老是会跟个4字节的干扰数据,这里检查下
            var pos   = analyze.Reader.BaseStream.Position;
            var value = analyze.Reader.ReadInt32();

            if (value > 0xFF)
            {
                analyze.Reader.BaseStream.Position = pos;
            }

            return(record);
        }
コード例 #22
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new ObjectNull();

            return(record);
        }
コード例 #23
0
 public BaseDeserializeObject(IAnalyze analyze)
 {
 }
コード例 #24
0
        void analyzeStrategy_AnalyzeEnd(object sender, IAnalyze.EventArgsAnalyzeEnd e)
        {
            if (this.group != null && this.group.AlarmCount > 0)
            {
                //保存报警组
                this.alarmWriter.WriteGroup(this.group);

                OnAnalyzeEnd(new AlarmEventArgs(this.group, null));

                this.group = null;
            }
        }
コード例 #25
0
        void analyzeStrategy_AnalyzeBegin(object sender, IAnalyze.EventArgsAnalyzeBegin e)
        {
            //创建报警组
            group = new GroupInfo(e.GroupID, this.areaName, this.deviceName, this.Horizon, this.Vertical, e.AnalyzeCount);

            OnAnalyzeBegin(new AlarmEventArgs(this.group, null));
        }
コード例 #26
0
        IRecordObject IRecordTypeHandler.Handle(IAnalyze analyze)
        {
            var record = new MessageEnd();

            return(record);
        }
コード例 #27
0
        static public object GetPrimitiveTypeValue(IAnalyze analyze, PrimitiveTypeEnumeration primitiveType)
        {
            object value = null;

            switch (primitiveType)
            {
            case PrimitiveTypeEnumeration.Boolean:
                value = analyze.Reader.ReadBoolean();
                break;

            case PrimitiveTypeEnumeration.Byte:
                value = analyze.Reader.ReadByte();
                break;

            case PrimitiveTypeEnumeration.Char:
                value = analyze.Reader.ReadChar();
                break;

            case PrimitiveTypeEnumeration.Decimal:
                value = analyze.Reader.ReadDecimal();
                break;

            case PrimitiveTypeEnumeration.Double:
                value = analyze.Reader.ReadDouble();
                break;

            case PrimitiveTypeEnumeration.Int16:
                value = analyze.Reader.ReadInt16();
                break;

            case PrimitiveTypeEnumeration.Int32:
                value = analyze.Reader.ReadInt32();
                break;

            case PrimitiveTypeEnumeration.Int64:
                value = analyze.Reader.ReadInt64();
                break;

            case PrimitiveTypeEnumeration.SByte:
                value = analyze.Reader.ReadSByte();
                break;

            case PrimitiveTypeEnumeration.Single:
                value = analyze.Reader.ReadSingle();
                break;

            case PrimitiveTypeEnumeration.TimeSpan:
                value = new TimeSpan(analyze.Reader.ReadInt64());
                break;

            case PrimitiveTypeEnumeration.DateTime:
                value = DateTime.FromBinary(analyze.Reader.ReadInt64());
                break;

            case PrimitiveTypeEnumeration.UInt16:
                value = analyze.Reader.ReadUInt16();
                break;

            case PrimitiveTypeEnumeration.UInt32:
                value = analyze.Reader.ReadUInt32();
                break;

            case PrimitiveTypeEnumeration.UInt64:
                value = analyze.Reader.ReadUInt64();
                break;

            case PrimitiveTypeEnumeration.String:
                value = analyze.Reader.ReadString();
                break;
            }

            return(value);
        }
コード例 #28
0
 public LengthPrefixedString(IAnalyze analyze) : base(analyze)
 {
     Value = analyze.Reader.ReadString();
 }
コード例 #29
0
 public StringValueWithCode(IAnalyze analyze) : base(analyze)
 {
     StringValue = new LengthPrefixedString(analyze);
 }
コード例 #30
0
        void analyzeStrategy_AnalyzeAlarm(object sender, IAnalyze.EventArgsAnalyzeAlarm e)
        {
            if (this.group != null)
            {
                AlarmInfo alarm = new AlarmInfo(this.group.GroupTime, e.FrameIndex, e.AlarmTime, e.AlarmRegion, e.AlarmRegionType);

                //保存报警
                if (this.alarmWriter.WriteAlarm(this.group, alarm, e.AlarmFrame))
                {
                    //添加报警
                    if (this.group!= null) this.group.Add(alarm);
                    OnAnalyzeAlarm(new AlarmEventArgs(this.group, alarm), e.AlarmFrame);
                }
                e.AlarmFrame.Dispose();
            }
        }