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); }
// 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++; }
/// <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(); }