visa-rs

crates.io docs

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.

```rust fn findaninstr() -> visars::Result<()>{ use std::ffi::CString; use std::io::{BufRead, BufReader, Read, Write}; use visars::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::NOLOCK, TIMEOUTIMMEDIATE)?;

// write message (&instr).writeall(b"*IDN?\n").maperr(iotovs_err)?;

// read response let mut bufreader = BufReader::new(&instr); let mut buf = String::new(); bufreader.readline(&mut buf).maperr(iotovs_err)?;

eprintln!("{}", buf); Ok(()) } ```

License: MIT OR Apache-2.0