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); } }
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); }
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]);*/ }