Crates.io | pico-streaming |
lib.rs | pico-streaming |
version | 0.3.1 |
source | src |
created_at | 2020-11-12 13:18:25.387978 |
updated_at | 2021-05-12 11:06:46.773433 |
description | Unofficial Rust bindings and wrappers for Pico Technology oscilloscope drivers |
homepage | |
repository | https://github.com/meatysolutions/pico-sdk |
max_upload_size | |
id | 311560 |
size | 27,238 |
Streams gap-less data from Pico Technology oscilloscope drivers.
This is a sub crate that you probably don't want to use directly. Try the top level
pico-sdk
crate which exposes everything from here.
Once streaming is started, a PicoStreamingDevice
returns StreamingEvent
s. The possible events
and Connected
, Disconnected
and Data
. The Data
event contains raw Vec<i16>
samples for
each enabled channel that can easily be scaled to the channel units (ie. Volts, Amps, etc).
// Get a streaming device from a PicoDevice
let stream_device = device.into_streaming_device();
// Enable and configure 2 channels
stream_device.enable_channel(PicoChannel::A, PicoRange::X1_PROBE_2V, PicoCoupling::DC);
stream_device.enable_channel(PicoChannel::B, PicoRange::X1_PROBE_1V, PicoCoupling::AC);
struct StdoutHandler;
impl NewDataHandler for StdoutHandler {
fn handle_event(&self, event: &StreamingEvent) {
println!("Sample count: {}", event.length);
}
}
let handler = Arc::new(StdoutHandler);
// Subscribe to streaming events
stream_device.new_data.subscribe(handler);
// Start streaming with a sample rate of 1k
stream_device.start(1_000)?;
License: MIT