Example #1
0
            public void fetchFrom(OsciFIFO src, int from, int len)
            {
                ///int displen = 640;
                int displen = len;

                if ((dataMax == null) || (dataMax.Length != displen))
                {
                    dataMax = new double[displen];
                    dataMin = new double[displen];
                }
                isRange = src.retrieve(ref dataMax, ref dataMin, displen, from, len);
            }
Example #2
0
        public void initOscilloscope(Oscilloscope _oscilloscope, int _channels, int _FIFOdepth)
        {
            inputs = new FIFO[_channels];
            for (int i = 0; i < _channels; i++)
            {
                inputs[i] = new FIFO(_FIFOdepth);
            }
            lines        = new OscilloscopeLine[_channels];
            osciFIFO     = new OsciFIFO[_channels];
            inputsActive = new Boolean[_channels];
            yScale       = new YScale[_channels];
            for (int i = 0; i < _channels; i++)
            {
                lines[i] = new OscilloscopeLine(oscilloscopeScreen);
                switch (i % 4)
                {
                case 0: lines[i].color = Color.Red; break;

                case 1: lines[1].color = Color.Green; break;

                case 2: lines[2].color = Color.Cyan; break;

                case 3: lines[3].color = Color.Magenta; break;
                }
                osciFIFO[i] = new OsciFIFO(_oscilloscope.owner.sampleRate / 2);
                yScale[i]   = YScale.Div100m;
            }
            FIFOdepth       = _FIFOdepth;
            oscilloscope    = _oscilloscope;
            timer.Interval  = 100;       // ms
            timer.Tick     += Timer_Tick;
            channels        = _channels; // Triggers start
            selectedChannel = 0;

            timeScale = TimeScale.Div1ms;
            OsciHorzScale.SelectedIndex = (int)timeScale;


            triggerMode             = TriggerMode.Auto;
            OsciTriggerAuto.Checked = true;
            triggerFromChannel      = 0;
            triggerLevel            = 0;
            trigSlope = TrigSlope.Rising;

            for (int i = 0; i < channels; i++)
            {
                lines[i].yScale = getYScale(i);
            }

            xOffset = 0;
            oscilloscopeScreen.initOscilloscopeScreen(this, channels, lines);
            UpdateChannelScales();

            OsciChannelSelectA.Checked = true;
            selectChannel(selectedChannel);
            OsciVertScale.SelectedIndex = (int)yScale[selectedChannel];

            OsciChannelOnA.Checked = lines[0].show;
            OsciChannelOnB.Checked = lines[1].show;
            OsciChannelOnC.Checked = lines[2].show;
            OsciChannelOnD.Checked = lines[3].show;

            XYDisplay.Checked = false;
            xydisplay         = false;

            EnGrid.Checked = true;
            drawGrid       = true;

            timer.Enabled = true;
        }