pyvisa库实现仪器控制

python控制仪器实现自动化常用pyvisa库,基本控制可大致分为创建仪器控制对象、写入控制指令、读取仪表信息和查询仪表状态,下面进行基本的讲解。

pyvisa库创建仪表控制对象

import tkinter.messagebox
import pyvisaclass InstrumentControl:inst = Nonedef __init__(self, equipment_name: str, equipment_visa: str, visa_dll='c:/Windows/System32/visa32.dll'):"""建立仪器初始对象@param equipment_name: 仪器名@param equipment_visa: 仪器visa地址@param visa_dll: visa.all地址"""try:self.rm = pyvisa.ResourceManager(visa_dll)print("打开visa32.dll文件成功")self.inst = self.open_by_name(equipment_name, equipment_visa)except Exception as e:tkinter.messagebox.showerror('错误', '在{}中找不到visa32.dll,请确认正确安装了NI-MAX和驱动')print(f"打开visa32.dll文件失败, 报错原因:{e}")def open_by_name(self, device_name, gpib_ip):"""仪表通讯@param device_name:@param gpib_ip:@return: 仪器控制对象"""self.inst = self.rm.open_resource(gpib_ip)print(self.inst)print("打开资源:" + gpib_ip)query_name_str = self.command_query("*IDN?")print("查询名称为:" + query_name_str)if device_name in query_name_str:print("打开仪表成功,打开的是:" + device_name)print("打开仪表成功,打开的是:" + device_name)return self.instreturn self.inst

写入控制指令

    def command_write(self, write_cmd):"""命令写入@param write_cmd: 写入指令@return: 执行结果"""print("执行了写入指令:" + write_cmd)ret_res = self.inst.write(write_cmd)print("返回了:" + str(ret_res))return ret_res

读取仪表信息

    def command_read(self, read_cmd):"""命令读取@param read_cmd: 读取指令@return: 读取信息"""print("执行了读取指令:" + read_cmd)ret_res = self.inst.read(read_cmd)print("返回了:" + str(ret_res))return ret_res

查询仪表状态

    def command_query(self, query_cmd):"""命令查询@param query_cmd: 查询指令@return: 查询信息"""print("执行了查询指令:" + query_cmd)ret_res = self.inst.query(query_cmd).replace('\n', '')print("返回了:" + str(ret_res))return ret_res

完整代码如下:

import tkinter.messagebox
import pyvisaclass InstrumentControl:inst = Nonedef __init__(self, equipment_name: str, equipment_visa: str, visa_dll='c:/Windows/System32/visa32.dll'):"""建立仪器初始对象@param equipment_name: 仪器名@param equipment_visa: 仪器visa地址@param visa_dll: visa.all地址"""try:self.rm = pyvisa.ResourceManager(visa_dll)print("打开visa32.dll文件成功")self.inst = self.open_by_name(equipment_name, equipment_visa)except Exception as e:tkinter.messagebox.showerror('错误', '在{}中找不到visa32.dll,请确认正确安装了NI-MAX和驱动')print(f"打开visa32.dll文件失败, 报错原因:{e}")passdef open_by_name(self, device_name, gpib_ip):"""仪表通讯@param device_name:@param gpib_ip:@return: 仪器控制对象"""self.inst = self.rm.open_resource(gpib_ip)print(self.inst)print("打开资源:" + gpib_ip)query_name_str = self.command_query("*IDN?")print("查询名称为:" + query_name_str)if device_name in query_name_str:print("打开仪表成功,打开的是:" + device_name)print("打开仪表成功,打开的是:" + device_name)return self.instreturn self.instdef command_write(self, write_cmd):"""命令写入@param write_cmd: 写入指令@return: 执行结果"""print("执行了写入指令:" + write_cmd)ret_res = self.inst.write(write_cmd)print("返回了:" + str(ret_res))return ret_resdef command_read(self, read_cmd):"""命令读取@param read_cmd: 读取指令@return: 读取信息"""print("执行了读取指令:" + read_cmd)ret_res = self.inst.read(read_cmd)print("返回了:" + str(ret_res))return ret_resdef command_query(self, query_cmd):"""命令查询@param query_cmd: 查询指令@return: 查询信息"""print("执行了查询指令:" + query_cmd)ret_res = self.inst.query(query_cmd).replace('\n', '')print("返回了:" + str(ret_res))return ret_res

仪器控制底层写完,用程控电源D66319来进行调用,例子如下:

class D66319(InstrumentControl):def __init__(self, equipment_name: str, equipment_visa: str):"""电源D66319仪器控制:param equipment_name: 仪器名称:param equipment_visa: 仪器visa地址"""super(D66319, self).__init__(equipment_name, equipment_visa)def query_equipment_info(self):"""查询设备信息:return: """result = self.command_query("*IDN?")return resultdef open_output(self):"""打开电源输出开关"""self.command_write('OUTP1 ON')

基本的仪器控制逻辑,能实现自动化控制仪器,到此结束,我是活动的笑脸,有疑问欢迎找博主解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜迎乔迁,开启新章 ▏易我科技新办公区乔迁庆典隆重举行

2024年1月18日,易我科技新办公区乔迁庆典在热烈而喜庆的氛围中隆重举行。新办公区的投入使用,标志着易我科技将以崭新姿态迈向新的发展阶段。 ▲ 易我科技新办公区 随着公司业务的不断发展和壮大,为了更好地适应公司发展的需要,…

2024-02-29(Flink)

1.Flink原理(角色分工) 2.Flink执行流程 on yarn版: 3.相关概念 1)DataFlow:Flink程序在执行的时候会被映射成一个数据流模型; 2)Operator:数据流模型中的每一个操作被称作Operat…

Spring Boot 高级实践探索:深度解读与实战演练

随着开发者对Spring Boot框架的基础运用日渐娴熟,迈向更深层次的技术探究和应用场景拓展显得尤为重要。本文将带领读者深入研究Spring Boot的若干核心进阶特性,并结合实际项目案例,涵盖自动化测试策略的深化应用、高级配置管理机制的巧妙运用…

Redis 之四:Redis 事务和乐观锁

事务特点 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。不具备原子性。 在事务执…

通讯录——C语言实现

头文件Contact.h #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #pragma once #define MAX 100 #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDR 30//表示一个人的信息 //struct…

npm使用国内淘宝镜像的方法整理

命令配置安装&#xff1a; 淘宝镜像&#xff1a; npm config set registry https://registry.npm.taobao.org/ 官方镜像&#xff1a; npm config set registry https://registry.npmjs.org 通过cnpm安装&#xff1a; npm install -g cnpm --registryhttps://registry.npm.…

PTA L2-003 月饼 (附坑点说明)

月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的情形是这样的&#…

如何在Java中反转字符串?

目录 1. 使用StringBuilder的reverse方法&#xff1a; 2. 使用for循环和字符数组&#xff1a; 3. 使用递归&#xff1a; 4. 使用Java 8的Stream API&#xff1a; More Java中&#xff0c;反转字符串可以通过多种方式实现。以下是一些常见的方法&#xff1a; 1. Java中使用…

【Python】PyGameUI控件

哈里前段时间写了一个windows平板上自娱自乐&#xff08;春节和家人一起玩&#xff09;基于pygame的大富翁游戏。 pygame没有按钮之类的UI控件&#xff0c;写起来不怎么顺手。就自己写一个简单的框架。 仓库地址 哈里PygameUi: pygame ui封装自用 (gitee.com) 使用示例 示…

上海亚商投顾:沪指终结月线6连阴 北向资金净买入超160亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日低开高走&#xff0c;沪指重新站上3000点&#xff0c;深成指、创业板指大涨超3%。半导体产业链全…

实时聊天系统PHP

实时聊天系统可以让用户在网站上实时交流&#xff0c;这对社交平台、在线客服等网站非常有帮助。以下是一个简单的基于 PHP 和 WebSocket 的实时聊天系统示例&#xff1a; 1. 首先创建一个 HTML 文件 index.html 来显示聊天界面和发送消息的表单&#xff1a; html <!DOCTYP…

【C#】 List.Sort 方法

【C#】 List.Sort 方法 在C#中&#xff0c;List.Sort()不仅为系统自带的变量(int, float, double …)类型的集合提供默认排序&#xff0c;还提供了自定义的排序方法。 List自带排序 List<int> list new List<int>(); list.Add(5); list.Add(3); list.Add(4); l…

探索那些能唤起情感共鸣的壁纸

1、方小童在线工具集 网址&#xff1a; 方小童 该网站是一款在线工具集合的网站&#xff0c;目前包含PDF文件在线转换、随机生成美女图片、精美壁纸、电子书搜索等功能&#xff0c;喜欢的可以赶紧去试试&#xff01;

Python:关于数据服务中的Web API的设计

搭建类似joinquant、tushare类似的私有数据服务应用&#xff0c;有以下一些点需要注意&#xff1a; 需要说明的是&#xff0c;这里讨论的是web api前后端&#xff0c;当然还有其它方案&#xff0c;thrift&#xff0c;grpc等。因为要考虑到一鱼两吃&#xff0c;本文只探讨web ap…

高项软考电子版论文答题纸(附下载)

24年软考又要来了&#xff0c;作为高项软考的拦路虎&#xff0c;论文你准备好了吗&#xff1f;&#xff01;记住在开始考试之前一定要用论文答题纸上把准备好的论文&#xff0c;在规定的时间内写上几遍&#xff0c;一是现在很少动笔写字了。二是、熟悉一下论文考试的感觉。 准备…

UniApp Vue 3 中的网络请求封装详解及用法

在UniApp中&#xff0c;结合Vue 3的强大特性&#xff0c;进行网络请求的封装是项目中常见的需求。这样的封装不仅提高了代码的可维护性&#xff0c;还使得在组件中使用网络请求更加简洁。本文将详细介绍UniApp Vue 3中的网络请求封装&#xff0c;并提供一个简单的用法示例。 1…

索引使用规则4——覆盖索引回表查询

覆盖索引&#xff1a;查询使用了索引&#xff0c;并且需要返回的列&#xff0c;在索引里面都可以找到&#xff0c;减少select*的使用 1、using index condition Extra 为using index condition 表明查找使用了索引&#xff0c;但是需要回表查询&#xff08;也就是先二级索引&…

第十八届全国大学生智能汽车竞赛——摄像头算法(附带个人经验)

文章目录 前言一、摄像头图像处理1、摄像头图像采集2、图像二值化与大津算法 二、左右边界&#xff0c;中线扫描 前言 参加了第十六&#xff0c;十七和第十八届全国大学生智能车竞赛&#xff0c;对摄像头的学习有部分心得&#xff0c;分享给大家&#xff0c;三届车赛&#xff…

【C语言基础】:深入理解指针(一)

文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…

HCIA-HarmonyOS设备开发认证V2.0-习题

目录 习题一习题二&#xff08;待续...&#xff09;坚持就有收获 习题一 # HarmonyOS简介 1. 以下哪几项属于OpenHarmony的技术特性&#xff1f;&#xff08;&#xff09;A. 统一OS&#xff0c;弹性部署B. 一次开发&#xff0c;多端部署C. 硬件互助&#xff0c;资源共享2. Ope…