MCPcopy Index your code
hub / github.com/TsuITOAR/visa-rs

github.com/TsuITOAR/visa-rs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
265 symbols 515 edges 24 files 58 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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.

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.

Example

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

Tokio Feature

Enable tokio to use the async adapter that implements tokio::io::AsyncRead and tokio::io::AsyncWrite for VISA sessions.

[dependencies]
visa-rs = { version = "0.7.0-alpha.1", features = ["tokio"] }

This exposes InstrumentTokioAdapter, which wraps AsyncInstrument and provides Tokio-compatible I/O traits.

Cross-compilation support

Due to some repr of enum depending on the target architecture, there is a explicit feature cross-compile. Check FEATURES.md for more details.

Feedback (Alpha)

This is an alpha release. If you run into issues, please share your runtime feedback and device/driver environment to help improve the next release.

License: MIT OR Apache-2.0

Extension points exported contracts — how you extend this code

AsSs (Interface)
A trait to borrow the visa session from an underlying object. [4 implementers]
src/session.rs
AsResourceManager (Interface)
Ability as the Default Resource Manager for VISA [2 implementers]
src/lib.rs
Callback (Interface)
Defines the ability for being passed to [`Instrument::install_handler`](crate::Instrument::install_handler) [1 implementers]
src/handler.rs
FromHtml (Interface)
(no doc) [2 implementers]
fetch-doc/src/main.rs
SpecAttr (Interface)
Trait for all specific attributes
src/enums/attribute.rs
AsRawSs (Interface)
A trait to extract the raw visa session from an underlying object. [3 implementers]
src/session.rs
HasAttribute (Interface)
(no doc) [1 implementers]
src/enums/attribute.rs
FromRawSs (Interface)
A trait to express the ability to construct an object from a raw visa session. [1 implementers]
src/session.rs

Core symbols most depended-on inside this repo

as_ref
called by 16
src/handler.rs
struct_name
called by 10
visa-rs-proc/src/attrs/mod.rs
to_tokens
called by 8
visa-rs-proc/src/repr.rs
new_visa_buf
called by 8
src/lib.rs
lock
called by 8
src/instrument.rs
match_tokens
called by 7
visa-rs-proc/src/lib.rs
try_default_rm
called by 7
tests/io.rs
subst_ident
called by 6
visa-rs-proc/src/lib.rs

Shape

Method 144
Function 59
Class 44
Enum 9
Interface 9

Languages

Rust100%

Modules by API surface

src/lib.rs39 symbols
src/instrument.rs34 symbols
visa-rs-proc/src/attrs/range.rs25 symbols
src/async_io.rs24 symbols
fetch-doc/src/main.rs19 symbols
visa-rs-proc/src/repr.rs15 symbols
visa-rs-proc/src/attrs/mod.rs15 symbols
visa-rs-proc/src/lib.rs13 symbols
src/handler.rs13 symbols
src/async_tokio.rs13 symbols
src/session.rs12 symbols
generate-repr-config/src/main.rs11 symbols

For agents

$ claude mcp add visa-rs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact