예제 #1
0
        static void Main(string[] args)
        {
            MccBoard board = new MccBoard(0);
            board.DOut(DigitalPortType.FirstPortA, 100);
            board.DOut(DigitalPortType.FirstPortB, 0);
            int[] hist = new int[201];
            Console.Write("N=");

            int cnt = Convert.ToInt32(Console.ReadLine());
            double max = double.NegativeInfinity;
            double min = double.PositiveInfinity;
            double sum = 0D;
            double sum2 = 0D;
            long StartingTime;
            long EndingTime;
            double ElapsedSeconds;
            int bin;
            for (int c = 0; c < cnt; c++)
            {
                StartingTime = Stopwatch.GetTimestamp();

            //                for (int i = 0; i < 10; i++) ;

                EndingTime = Stopwatch.GetTimestamp();

                ElapsedSeconds = ((double)(EndingTime - StartingTime)) / Stopwatch.Frequency;
                max = Math.Max(max, ElapsedSeconds);
                min = Math.Min(min, ElapsedSeconds);
                sum += ElapsedSeconds;
                sum2 += ElapsedSeconds * ElapsedSeconds;
                bin = Convert.ToInt32(ElapsedSeconds * 1000000);
                if (bin < 200)
                    hist[bin]++;
                else
                    hist[200]++;
            }
            double mean = sum / cnt;
            Console.WriteLine("ETMean=" + (mean * 1000000D).ToString("0.000"));
            double sd = Math.Sqrt(sum2 / cnt - mean * mean);
            Console.WriteLine("ETSD=" + (sd * 1000000D).ToString("0.000000"));
            Console.WriteLine("ETMax=" + (max * 1000000D).ToString("0.000"));
            Console.WriteLine("ETMin=" + (min * 1000000D).ToString("0.000"));
            Console.ReadKey();
            for (int i = 0; i < hist.Length; i++)
                Console.WriteLine(i.ToString("000") + ": " + hist[i].ToString("00000000"));
            Console.ReadKey();
        }
예제 #2
0
        public override IObservable <short> Process(IObservable <short> source)
        {
            return(Observable.Defer(() =>
            {
                ErrorInfo configError;
                var portType = PortType;
                var bitNumber = BitNumber;
                var board = new MccBoard(BoardNumber);
                if (bitNumber.HasValue)
                {
                    configError = board.DConfigBit(portType, bitNumber.Value, DigitalPortDirection.DigitalOut);
                }
                else
                {
                    configError = board.DConfigPort(portType, DigitalPortDirection.DigitalOut);
                }
                ThrowExceptionForErrorInfo(configError);

                if (bitNumber.HasValue)
                {
                    return source.Do(input =>
                    {
                        var bitValue = input != 0 ? DigitalLogicState.High : DigitalLogicState.Low;
                        var error = board.DBitOut(portType, bitNumber.Value, bitValue);
                        ThrowExceptionForErrorInfo(error);
                    });
                }
                else
                {
                    return source.Do(dataValue =>
                    {
                        var error = board.DOut(portType, dataValue);
                        ThrowExceptionForErrorInfo(error);
                    });
                }
            }));
        }