10 releases (5 breaking)
0.6.1 | Mar 28, 2024 |
---|---|
0.5.0 | Sep 5, 2023 |
0.4.0 | Sep 27, 2022 |
0.3.0 | Jun 17, 2022 |
#5 in #instrument
258 downloads per month
Used in 3 crates
(2 directly)
205KB
2.5K
SLoC
visa-rs
Safe Rust bindings for VISA(Virtual Instrument Software Architecture) library
Most documentation comes from NI-VISA Product Documentation
Requirements
This crate needs to link to an installed visa library, for example, NI-VISA.
You can specify path of visa64.lib
file (or visa32.lib
on 32-bit systems) by setting environment variable LIB_VISA_PATH
.
On Windows and macOS, the default installation path will be added if no path is specified.
Example
Codes below will find the first Keysight instrument in your environment and print out its *IDN?
response.
fn find_an_instr() -> visa_rs::Result<()>{
use std::ffi::CString;
use std::io::{BufRead, BufReader, Read, Write};
use visa_rs::prelude::*;
// open default resource manager
let rm: DefaultRM = DefaultRM::new()?;
// expression to match resource name
let expr = CString::new("?*KEYSIGH?*INSTR").unwrap().into();
// find the first resource matched
let rsc = rm.find_res(&expr)?;
// open a session to the resource, the session will be closed when rm is dropped
let instr: Instrument = rm.open(&rsc, AccessMode::NO_LOCK, TIMEOUT_IMMEDIATE)?;
// write message
(&instr).write_all(b"*IDN?\n").map_err(io_to_vs_err)?;
// read response
let mut buf_reader = BufReader::new(&instr);
let mut buf = String::new();
buf_reader.read_line(&mut buf).map_err(io_to_vs_err)?;
eprintln!("{}", buf);
Ok(())
}
License: MIT OR Apache-2.0
Dependencies
~0.5–1MB
~24K SLoC