Crate visa_rs

Source
Expand description

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, 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 main() -> 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(())
}

Re-exports§

pub use visa_sys as vs;

Modules§

enums
Defines visa attributes, visa status, visa event, etc as Rust enums
flags
Defines AccessMode and FlushMode
handler
Defines Callback trait used in Instrument::install_handler, which returns a Handler to manage lifetime of data passed
prelude
session

Structs§

DefaultRM
A ResourceManager which close everything on drop
Error
FromBytesWithNulError
Instrument
Session to a specified resource
JobID
Job ID of an asynchronous operation.
ResList
Returned by DefaultRM::find_res_list, handler to iterator over matched resources
VisaString
Simple wrapper of std::ffi::CString
WeakRM
A ResourceManager which is Clone and doesn’t close everything on drop

Constants§

TIMEOUT_IMMEDIATE
TIMEOUT_INFINITE

Traits§

AsResourceManager
Ability as the Default Resource Manager for VISA

Functions§

io_to_vs_err
Quickly convert std::io::Error.

Type Aliases§

AccessKey
Access key used in Instrument::lock
ResID
resource ID
Result