예제 #1
0
        private void OnChannelFounded(ReceivedCommand arguments)
        {
            ChannelSearchCompleted = arguments.ReadBinBoolArg();
            if (ChannelSearchCompleted)
            {
                return;
            }
            var channel = new Channels {
                Id = arguments.ReadBinUInt16Arg(), Channel = Channels.Count + 1, Gain = 1
            };

            Channels.Add(channel);
        }
예제 #2
0
        // Callback function To receive the binary float series from the Arduino
        void OnReceiveBinaryFloatSeries(ReceivedCommand arguments)
        {
            var count         = arguments.ReadBinUInt16Arg();
            var receivedValue = arguments.ReadBinFloatArg();

            _receivedBytesCount += CountBytesInCommand(arguments, false);

            if (count != _receivedItemsCount)
            {
                Console.WriteLine("Values not matching: received {0} expected {1}", count, _receivedItemsCount);
            }

            if (_receivedItemsCount % (SeriesLength / 10) == 0)
            {
                Console.WriteLine("Received value: {0}", receivedValue);
            }
            if (_receivedItemsCount == 0)
            {
                // Received first value, start stopwatch
                _beginTime = Millis;
            }
            else if (count == SeriesLength - 1)
            {
                // Received all values, stop stopwatch
                _endTime = Millis;
                var deltaTime = (_endTime - _beginTime);
                Console.WriteLine("{0} milliseconds per {1} items = is {2} ms/item, {3} Hz",
                                  deltaTime,
                                  SeriesLength,
                                  (float)deltaTime / (float)SeriesLength,
                                  (float)1000 * SeriesLength / (float)deltaTime
                                  );
                Console.WriteLine("{0} milliseconds per {1} bytes = is {2} ms/byte,  {3} bytes/sec, {4} bps",
                                  deltaTime,
                                  _receivedBytesCount,
                                  (float)deltaTime / (float)_receivedBytesCount,
                                  (float)1000 * _receivedBytesCount / (float)deltaTime,
                                  (float)8 * 1000 * _receivedBytesCount / (float)deltaTime
                                  );
                _receiveBinaryFloatSeriesFinished = true;
            }
            _receivedItemsCount++;
        }
예제 #3
0
        /// <summary>
        /// Callback function To receive data series from the Arduino
        /// </summary>
        /// <param name="arguments"></param>
        private void OnReceiveData(ReceivedCommand arguments)
        {
            var currentChannel = arguments.ReadBinUInt16Arg();

            if (_currentChannel != currentChannel)
            {
                if (_traceBuffer.Any())
                {
                    var trace = new SeismicTrace(_traceBuffer.ToArray());
                    trace.Header.Station      = _currentChannel.ToString();
                    trace.Header.ChannelType  = ChannelType.Z;
                    trace.Header.StartTime    = _timeTriggered;
                    trace.Header.SamplingRate = 3750;
                    _traces.Add(trace);
                    _traceBuffer.Clear();
                }
                _currentChannel = currentChannel;
                if (currentChannel != 0)
                {
                    _form.CaptionWaitFor("Transfering Data from " + currentChannel);
                }
            }

            // Read data packet (consist of 8 samples)
            for (int i = 0; i < 8; i++)
            {
                var receiveValue = (float)arguments.ReadBinInt32Arg();
                _traceBuffer.Add(receiveValue);
                //Debug.WriteLine(receiveValue);
            }

            if (_traces.Count != _form.NumberOfChannels)
            {
                return;
            }
            _form.CloseWaitForm();
        }