private void button1_Click(object sender, EventArgs e) { try { if (stopped) { if (driver == null) { driver = new DTControl(1000, new int[] { 0, 1 }, new DTControl.Logger(MessageLog), new DTControl.DoneSignalHandler(SignalsDone)); } driver.AnalogStart(); button1.Text = "STOP"; stopped = false; } else { driver.AnalogStop(); //button1.Text = "Get"; stopped = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void GetBuffer(ref double[] buf) { m_buffer = new double[SampleSize]; m_monitorBuffer = new double[SampleSize]; filteredSignals = new double[BufferSize]; byte[] bufferedSignal = new byte[SampleSize * sizeof(double)]; List <double> wholeBuffer = new List <double>(SampleSize); bool switchChanged = false; if (stopped) { return; } // separate the signal from the switch data for (int i = 0; i < buf.Length; i += 2) { m_buffer[i / 2] = buf[i]; m_monitorBuffer[i / 2] = buf[i + 1]; } if (m_monitorBuffer[0] > 3.3) { for (int signalIndex = 0; signalIndex < m_buffer.Length; signalIndex += BufferSize) { double[] buffer = new double[BufferSize]; // copy 100 values unless the buffer size is less than 100 (i.e. the last buffer only has 1 value) Array.Copy(m_buffer, signalIndex, buffer, 0, ((m_buffer.Length - signalIndex) < BufferSize) ? m_buffer.Length - signalIndex : BufferSize); ProcessSignals(buffer, out filteredSignals, out average, out variance, out min, out max); foreach (double signal in filteredSignals) { wholeBuffer.Add(signal); } Log("Signals Processed."); } if (!stopped) { if (processSignals == false) { switchChanged = true; } if (switchChanged) { response.Write(switchChanged); response.Write("CONT"); } else { response.Write(switchChanged); } //write signals to file foreach (double signal in m_buffer) { signalWriter.WriteLine(signal); } // Input Signals DoubleToBuffer(m_buffer, bufferedSignal); response.Write(bufferedSignal.Length); response.Write(bufferedSignal); // Filtered Signals DoubleToBuffer(wholeBuffer, bufferedSignal); response.Write(bufferedSignal.Length); response.Write(bufferedSignal); response.Write(average); response.Write(variance); response.Write(min); response.Write(max); string msg = request.ReadString(); response.Write("+ACK"); Log("Buffer sent"); if (msg == "STOP") { m_device.PutDoutValue(3); m_device.AnalogStop(); m_device.ClearQueue(); stopped = true; return; } } } else { if (processSignals == true || firstTime) { switchChanged = true; firstTime = false; } if (switchChanged) { response.Write(switchChanged); response.Write("PAUSE"); } else { response.Write(switchChanged); } } processSignals = (m_monitorBuffer[0] > 3.3) ? true : false; }