Skip to main content

simple_monitor/
simple_monitor.rs

1use nsrt::{NSRT, Result, SamplingFrequency, Weighting};
2use std::thread;
3use std::time::Duration;
4
5fn main() -> Result<()> {
6    println!("Opening NSRT_mk4 device...");
7
8    let mut nsrt = NSRT::open()?
9        .weighting(Weighting::A)?
10        .time_constant(1.0)?
11        .sampling_frequency(SamplingFrequency::Freq48kHz)?
12        .apply()?;
13
14    let model = nsrt.read_model()?;
15    let serial = nsrt.read_serial_number()?;
16    let firmware = nsrt.read_firmware_revision()?;
17
18    println!("Connected to:");
19    println!("  Model: {}", model);
20    println!("  Serial: {}", serial);
21    println!("  Firmware: {}", firmware);
22
23    println!("Monitoring sound levels:");
24    println!("Level (dBA) | LEQ (dBA) | Temp (°C)");
25    println!("------------+-----------+----------");
26
27    loop {
28        let level = nsrt.read_level()?;
29        let leq = nsrt.read_leq()?;
30        let temp = nsrt.read_temperature()?;
31
32        println!("{:10.1} | {:9.1} | {:8.1}", level, leq, temp);
33
34        thread::sleep(Duration::from_secs(1));
35    }
36}