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
| Feature | Default | What it does |
|---|---|---|
tokio | yes | Enables 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
AccessModeandFlushMode - handler
- Defines
Callbacktrait used inInstrument::install_handler, which returns aHandlerto manage lifetime of data passed - prelude
- session
Structs§
- DefaultRM
- A
ResourceManagerwhich close everything on drop - Error
- From
Bytes With NulError - Instrument
- Session to a specified resource
- Instrument
Tokio Adapter - Adapts a VISA instrument to Tokio’s
AsyncReadandAsyncWritetraits. - JobID
- Job ID of an asynchronous operation.
- ResList
- Returned by
DefaultRM::find_res_list, handler to iterator over matched resources - Visa
String - Simple wrapper of std::ffi::CString
- WeakRM
- A
ResourceManagerwhich isCloneand doesn’t close everything on drop
Constants§
Traits§
- AsResource
Manager - Ability as the Default Resource Manager for VISA
Functions§
- io_
to_ vs_ err - Quickly convert std::io::Error.
Type Aliases§
- Access
Key - Access key used in
Instrument::lock - ResID
- resource ID
- Result