5 个版本 (3 个破坏性更新)
使用旧的 Rust 2015
0.4.0 | 2015年8月31日 |
---|---|
0.3.1 | 2015年8月31日 |
0.3.0 | 2015年8月31日 |
0.2.0 | 2015年8月30日 |
0.1.0 | 2015年8月28日 |
#19 在 #samples
32KB
698 行
libairspy 的 Rust 绑定
需要系统上已安装并构建的至少 1.0.6 版的 libairspy。测试需要一个连接的 Airspy(否则没有太多可测试的!)并且必须使用 RUST_TEST_THREADS=1
运行,否则线程可能会互相干扰。
简单使用示例
extern crate airspy;
use airspy::{Airspy,IQ};
use std::sync::mpsc;
// Open first available Airspy and configure for floating IQ samples,
// 10Msps, 434MHz (can also set gains, AGC, RF bias etc).
let mut dev = Airspy::new().unwrap();
dev.set_sample_rate(0).unwrap();
dev.set_freq(434000000).unwrap();
// Samples are sent back to us from the C thread by an MPSC channel
let (tx, rx) = mpsc::channel();
// Begin receiving data. Need the type hint either here or when creating the
// channel, which must match with the sample type selected earlier.
dev.start_rx::<IQ<f32>>(tx).unwrap();
// Blocking receive samples, stop after 10M. When the `rx` object goes out of
// scope and is destroyed, the `tx` detects the hangup and tells libairspy to
// stop data reception.
let mut n_samples = 0usize;
while dev.is_streaming() {
let samples = rx.recv().unwrap();
n_samples += samples.len() / 2;
println!("Got {} samples so far", n_samples);
if n_samples > 10_000_000 {
break;
}
}
查看 src/bin/rx.rs
以获取使用示例。
依赖项
~510KB
~10K SLoC