Skip to main content

Crate visa_rs

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.

A default link configuration is used for the default installation setup on Windows, Linux and MacOs.

You can overwrite the configuration by specifying the name of the visa library file (default to visa for linux, visa64 or visa32 for windows) by environment variable LIB_VISA_NAME, and the path of the file by environment variable LIB_VISA_PATH.

§Features

FeatureDefaultWhat it does
tokioyesEnables InstrumentTokioAdapter, which implements tokio::io::AsyncRead and tokio::io::AsyncWrite for a VISA session.

The async API itself (Instrument::into_async, AsyncInstrument) is always available; tokio only adds the adapter that plugs it into Tokio’s IO traits.

Fixed-width VISA enum representations support cross-compilation by default.

§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 async_io::AsyncInstrument;
pub use visa_sys as vs;

Modules§

async_io
Asynchronous reads and writes for a VISA instrument.
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
InstrumentTokioAdapter
Adapts a VISA instrument to Tokio’s AsyncRead and AsyncWrite traits.
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