Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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;
        }