#instrument #control #visa #api-bindings

visa-rs

为 VISA (虚拟仪器软件架构) 库提供安全的 Rust 绑定

11 个不稳定版本

0.6.2 2024 年 8 月 2 日
0.6.1 2024 年 3 月 28 日
0.5.0 2023 年 9 月 5 日
0.4.0 2022 年 9 月 27 日
0.3.0 2022 年 6 月 17 日

#5 in #instrument

Download history 1/week @ 2024-05-04 3/week @ 2024-05-25 11/week @ 2024-06-01 2/week @ 2024-06-08 2/week @ 2024-06-22 2/week @ 2024-06-29 9/week @ 2024-07-06 63/week @ 2024-07-27 52/week @ 2024-08-03 21/week @ 2024-08-10 195/week @ 2024-08-17

331 每月下载量
用于 3 个 crate (2 直接)

MIT/Apache 许可

205KB
2.5K SLoC

visa-rs

crates.io docs

为 VISA (虚拟仪器软件架构) 库提供安全的 Rust 绑定

大部分文档来自 NI-VISA 产品文档

需求

此 crate 需要链接到已安装的 visa 库,例如,NI-VISA

Windows、Linux 和 MacOS 的默认安装设置使用默认链接配置。

您可以通过环境变量 LIB_VISA_NAME 指定 visa 库文件名(Linux 默认为 visa,Windows 默认为 visa64visa32),并通过环境变量 LIB_VISA_PATH 指定文件路径来覆盖配置。

示例

下面的代码将找到您环境中第一个 Keysight 仪器,并打印其 *IDN? 响应。

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

许可证:MIT OR Apache-2.0

依赖项

~0.5–1MB
~23K SLoC