예제 #1
0
        private List <IDatablockModel> GetFakeDatablockModels()
        {
            var output = new List <IDatablockModel>();

            for (int i = 0; i < 10; i++)
            {
                var signalModels = new List <SignalModel>();

                for (int j = 0; j < 10; j++)
                {
                    var ctx = new SignalModelContext
                    {
                        Index       = j,
                        DbIndex     = i,
                        CpuIndex    = 0,
                        Name        = $"Signal {i}-{j}",
                        DbNumber    = 4000 + i,
                        DataTypeStr = "Real"
                    };

                    var signal = SignalFactory.Create(ctx);
                    signalModels.Add(signal);
                }


                IDatablockModel datablockModel = new DatablockModel {
                };
                output.Add(datablockModel);
            }

            return(output);
        }
예제 #2
0
        private SignalModelContext CreateSignalContextItem(DbFileLineItem lineItem)
        {
            if (!lineItem.IsDataType)
            {
                return(null);
            }

            string name = String.Empty;

            foreach (var structName in _structNames)
            {
                name += structName + '.';
            }
            name += lineItem.Name;

            SignalModelContext ctx = new SignalModelContext
            {
                Name        = name,
                Description = lineItem.Description,
                DataTypeStr = lineItem.DataTypeStr,
                ByteIndex   = _bitByteIndexControl.ByteCounter,
                BitNumber   = _bitByteIndexControl.BitCounter
            };

            return(ctx);
        }
        public static List <SignalModelContext> MapQuotesAndSignalsToSignalModelContext(List <Quote> quotes, List <Signal> signals)
        {
            List <SignalModelContext> signalsContext = new List <SignalModelContext>();

            for (int i = 0; i < signals.Count(); i++)
            {
                Quote matchingQuote = quotes.Where(z => z.Date == signals[i].Date).FirstOrDefault();

                SignalModelContext signalContext = _mapper.Map <SignalModelContext>(matchingQuote);
                signalContext.PartialSignals.Add(signals[i].Value);

                signalsContext.Add(signalContext);
            }

            return(signalsContext);
        }
예제 #4
0
        public List <SignalModelContext> DeepCloneUsingReflection()
        {
            List <SignalModelContext> clonedSignalContextCollection = new List <SignalModelContext>();

            Parallel.ForEach(_collectionOfSignalsToBeCloned, (signal) =>
            {
                SignalModelContext singleClonedSignalContext = ReflectionDeepCopy.CloneObject(signal) as SignalModelContext;

                lock (_padlock)
                {
                    clonedSignalContextCollection.Add(singleClonedSignalContext);
                }
            });

            clonedSignalContextCollection = clonedSignalContextCollection.OrderBy(z => z.Date).ToList();
            return(clonedSignalContextCollection);
        }
예제 #5
0
        private List <SignalModelContext> CloneCollectionUsingJsonOrBinarySerialization()
        {
            List <SignalModelContext> clonedSignalContextCollection = new List <SignalModelContext>();

            Parallel.ForEach(_collectionOfSignalsToBeCloned, (signal) =>
            {
                SignalModelContext singleClonedSignalContext = signal.Clone() as SignalModelContext;

                lock (_padlock)
                {
                    clonedSignalContextCollection.Add(singleClonedSignalContext);
                }
            });

            clonedSignalContextCollection = clonedSignalContextCollection.OrderBy(z => z.Date).ToList();
            return(clonedSignalContextCollection);
        }
        public static List <SignalModelContext> MapQuotesAndSignalsToSignalModelContext(List <Quote> quotes, List <List <Signal> > signals)
        {
            List <SignalModelContext> signalsContext = new List <SignalModelContext>();

            for (int i = 0; i < signals.Count(); i++)
            {
                for (int j = 0; j < signals[i].Count(); j++)
                {
                    Quote matchingQuote = quotes.Where(z => z.Date == signals[i][j].Date).FirstOrDefault();

                    if (matchingQuote == null)
                    {
                        continue;
                    }

                    SignalModelContext signalContext = signalsContext.Where(z => z.Date == matchingQuote.Date).FirstOrDefault();

                    if (signalContext == null)
                    {
                        signalContext = _mapper.Map <SignalModelContext>(matchingQuote);
                        signalContext.PartialSignals.Add(signals[i][j].Value);
                        signalsContext.Add(signalContext);
                    }
                    else
                    {
                        signalsContext.Where(z => z.Date == matchingQuote.Date).FirstOrDefault().PartialSignals.Add(signals[i][j].Value);
                    }
                }
            }

            List <string> signalsDates = signalsContext.Select(z => z.Date).ToList();
            List <Quote>  quotesWithoutAnyGeneratedSignal = quotes.Where(z => !signalsDates.Contains(z.Date)).ToList();

            foreach (var quote in quotesWithoutAnyGeneratedSignal)
            {
                SignalModelContext signalContext = _mapper.Map <SignalModelContext>(quote);
                signalsContext.Add(signalContext);
            }

            return(signalsContext);
        }
 public static DecoratorConcreteComponent MapQuotesAndSignalsToDecoratorObject(SignalModelContext quoteWSignals)
 {
     return(_mapper.Map <DecoratorConcreteComponent>(quoteWSignals));
 }
예제 #8
0
 public BuySignalState(double signalValue, SignalModelContext context)
 {
     this.Context     = context;
     this.SignalValue = signalValue;
 }
예제 #9
0
        public static SignalModel Create(SignalModelContext context)
        {
            string typeSpecifier = Constants.S7DataTypeSpecifiers[context.DataTypeStr];
            // DB450.DBD624
            string address = "DB" + context.DbNumber + ".DB" + Constants.S7DataTypeSpecifiers[context.DataTypeStr] + context.ByteIndex;

            if (typeSpecifier == "X")
            {
                address += '.';
                address += context.BitNumber;
            }

            if (!Constants.S7DataTypes.Contains(context.DataTypeStr))
            {
                throw new ArgumentException($"Invalid data type: {context.DataTypeStr} " +
                                            $"Unable to create signal {context.Name}. Datablock creation aborted.");
            }

            if (!AddressIsValid(address))
            {
                throw new ArgumentException($"Invalid address created: {address} " +
                                            $"Unable to create signal {context.Name}. Datablock creation aborted.");
            }

            context.Address = address;


            switch (context.DataTypeStr)
            {
            case "Bool":
                return(new BoolSignalModel(context));

            case "Byte":
                throw new NotImplementedException();

            case "Int":
                return(new Int16SignalModel(context));

            case "UInt":
                return(new Int16SignalModel(context));

            case "DInt":
                return(new Int32SignalModel(context));

            case "UDInt":
                return(new Int32SignalModel(context));

            case "Word":
                return(new Int16SignalModel(context));

            case "DWord":

                return(new Int32SignalModel(context));

            case "Real":
                return(new FloatSignalModel(context));

            default:
                throw new ArgumentException($"Invalid data type: {context.DataTypeStr} " +
                                            $"Unable to create signal {context.Name}. Datablock creation aborted.");
            }
        }