10 unstable releases (4 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

#1032 in Procedural macros

Download history 1/week @ 2024-02-20 22/week @ 2024-02-27 1/week @ 2024-03-05 23/week @ 2024-03-12 166/week @ 2024-03-19 134/week @ 2024-03-26 52/week @ 2024-04-02

376 downloads per month
Used in 4 crates (via visa-rs)

MIT/Apache

57KB
1.5K SLoC

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

Add dependencies below to Cargo.toml

[dependencies]
visa_rs = { git = "https://github.com/TsuITOAR/visa-rs.git" }

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

~1.5MB
~35K SLoC