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
331 每月下载量
用于 3 个 crate (2 直接)
205KB
2.5K SLoC
visa-rs
为 VISA (虚拟仪器软件架构) 库提供安全的 Rust 绑定
大部分文档来自 NI-VISA 产品文档
需求
此 crate 需要链接到已安装的 visa 库,例如,NI-VISA。
Windows、Linux 和 MacOS 的默认安装设置使用默认链接配置。
您可以通过环境变量 LIB_VISA_NAME
指定 visa 库文件名(Linux 默认为 visa
,Windows 默认为 visa64
或 visa32
),并通过环境变量 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