Exemple #1
0
 public void GetOnePeriod(Double[] waveformBuffer, WaveformStyle style, Double amplitude, Double offset)
 {
     for (int i = 0; i < m_pointPerPeriod; i++)
     {
         waveformBuffer[i] = GetOnePoint(style, i, amplitude, offset);
     }
 }
Exemple #2
0
    public double GetOnePoint(WaveformStyle style, int index, Double amplitude, Double offset)
    {
        //double amplitude = (highLevel - lowLevel) / 2;
        //double offset = (highLevel + lowLevel) / 2;
        double data = 0;

        System.Diagnostics.Debug.Assert(index >= 0 && index <= m_pointPerPeriod);
        switch (style)
        {
        case WaveformStyle.sine:
            data = amplitude * Math.Sin(index * 2.0 * Math.PI / m_pointPerPeriod) + offset;
            break;

        case WaveformStyle.triangle:
            if (index < (m_pointPerPeriod / 4.0))
            {
                data = amplitude * (index / (m_pointPerPeriod / 4.0)) + offset;
            }
            else if (index < 3 * (m_pointPerPeriod / 4.0))
            {
                data = amplitude * ((2.0 * (m_pointPerPeriod / 4.0) - index) / (m_pointPerPeriod / 4.0)) + offset;
            }
            else
            {
                data = amplitude * ((index - m_pointPerPeriod) / (m_pointPerPeriod / 4.0)) + offset;
            }
            break;

        case WaveformStyle.square:
            if ((index >= 0) && (index < (m_pointPerPeriod / 2)))
            {
                data = amplitude * 1 + offset;
            }
            else
            {
                data = amplitude * (-1) + offset;
            }
            break;

        default:
            break;
        }
        return(data);
    }
Exemple #3
0
        private void checkBox_AoDataOut_MouseClick(object sender, MouseEventArgs e)
        {
            int      index             = Array.IndexOf(m_waveSelectCheckBox, sender);
            CheckBox currentcheckedBox = (CheckBox)sender;

            if (currentcheckedBox.Checked)
            {
                button1.Enabled = false;
                timer_outputData.Start();
                if (comboBox1.Text == "Assigned output period")
                {
                    output_num = Convert.ToInt32(textBox3.Text) - 1;
                }
                if (index < 3)
                {
                    checked_numA = true;
                    // make all the checkBoxes is unchecked
                    for (int i = 0; i < 3; i++)
                    {
                        m_waveSelectCheckBox[i].Checked         = false;
                        m_waveSelectCheckBox[i].BackgroundImage = imageList.Images[i];
                    }
                    // make the checkBox clicked is checked
                    m_waveSelectCheckBox[index].BackgroundImage = imageList.Images[index + 3];
                    // read the user input value
                    double.TryParse(textBox_amplitude2.Text, out m_amplitude2);
                    //double.TryParse(textBox_lowLevelA.Text, out m_lowLevelA);
                    double.TryParse(textBox2.Text, out m_offset2);
                    double temp = m_amplitude2;
                    if (temp <= m_offset2)
                    {
                        m_isCheckedA       = true;
                        m_wavePointsIndexA = 0;
                        m_formStyleA       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleA, (int)i, m_amplitude2, m_offset2));
                        }
                    }
                    else if (temp + m_amplitude2 > 5)
                    {
                        m_amplitude2            = 2.5;
                        textBox_amplitude2.Text = System.Convert.ToString(m_amplitude2);
                        m_offset2          = 2.5;
                        textBox2.Text      = System.Convert.ToString(m_offset2);
                        m_isCheckedA       = true;
                        m_wavePointsIndexA = 0;
                        m_formStyleA       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleA, (int)i, m_amplitude2, m_offset2));
                        }
                    }
                    else
                    {
                        m_offset2          = temp;
                        textBox2.Text      = System.Convert.ToString(temp);
                        m_isCheckedA       = true;
                        m_wavePointsIndexA = 0;
                        m_formStyleA       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleA, (int)i, m_amplitude2, m_offset2));
                        }
                    }
                }
                else
                {
                    checked_numB = true;
                    for (int j = 3; j < 6; j++)
                    {
                        m_waveSelectCheckBox[j].Checked         = false;
                        m_waveSelectCheckBox[j].BackgroundImage = imageList.Images[j - 3];
                    }
                    m_waveSelectCheckBox[index].BackgroundImage = imageList.Images[index];
                    double.TryParse(textBox_amplitude4.Text, out m_amplitude4);
                    //double.TryParse(textBox_lowLevelB.Text, out m_lowLevelB);
                    double.TryParse(textBox4.Text, out m_offset4);
                    double temp2 = m_amplitude4;
                    if (temp2 <= m_offset4)
                    {
                        m_isCheckedB       = true;
                        m_wavePointsIndexB = 0;
                        m_formStyleB       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleB, (int)i, m_amplitude4, m_offset4));
                        }
                    }
                    else if (temp2 + m_amplitude4 > 5)
                    {
                        m_amplitude4            = 2.5;
                        textBox_amplitude4.Text = System.Convert.ToString(m_amplitude4);
                        m_offset4          = 2.5;
                        textBox4.Text      = System.Convert.ToString(m_offset4);
                        m_isCheckedB       = true;
                        m_wavePointsIndexB = 0;
                        m_formStyleB       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleB, (int)i, m_amplitude4, m_offset4));
                        }
                    }
                    else
                    {
                        m_offset4          = temp2;
                        textBox4.Text      = System.Convert.ToString(temp2);
                        m_isCheckedB       = true;
                        m_wavePointsIndexB = 0;
                        m_formStyleB       = (WaveformStyle)(index % 3);
                        m_dataOnePeriod.Clear();
                        for (uint i = 0; i < m_PointCountPerWave; i++)
                        {
                            m_dataOnePeriod.Add(m_waveformGenerator.GetOnePoint(m_formStyleB, (int)i, m_amplitude4, m_offset4));
                        }
                    }
                }
                currentcheckedBox.Checked = true;
                double[] values = (double[])m_dataOnePeriod.ToArray(typeof(double));
                chart2.Series[index / 3].Points.Clear();
                for (uint i = 0; i < m_PointCountPerWave; i++)
                {
                    chart2.Series[index / 3].Points.AddXY(i * (100 / trackBar_Scroll.Value / m_PointCountPerWave), values[i]);
                }
            }
            else
            {
                chart2.Series[index / 3].Points.Clear();
                if (index < 3)
                {
                    checked_numA = false;
                    m_waveSelectCheckBox[index].BackgroundImage = imageList.Images[index];
                    m_isCheckedA = false;
                }
                else
                {
                    checked_numB = false;
                    m_waveSelectCheckBox[index].BackgroundImage = imageList.Images[index - 3];
                    m_isCheckedB = false;
                }
                if (!(checked_numA | checked_numB))
                {
                    button1.Enabled = true;
                    timer_outputData.Stop();
                }
            }

            /*double[] values = (double[])m_dataOnePeriod.ToArray(typeof(double));
             * foreach (var series in chart2.Series)
             * {
             *  series.Points.Clear();
             * }
             * chart2.Series[index / 3].Points.Clear();
             * for (uint i = 0; i < m_PointCountPerWave; i++)
             *  chart2.Series[index/3].Points.AddXY(i*trackBar_Scroll.Value,values[i]);*/
        }