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.pswp.cn/news/710708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710708.shtml
英文地址,請注明出處:http://en.pswp.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…