微网站的优缺点,上海做网站内容检查的公司,网站广告模板代码,英文网站建设之后怎么推python控制仪器实现自动化常用pyvisa库#xff0c;基本控制可大致分为创建仪器控制对象、写入控制指令、读取仪表信息和查询仪表状态#xff0c;下面进行基本的讲解。
pyvisa库创建仪表控制对象
import tkinter.messagebox
import pyvisaclass InstrumentControl:inst Non…python控制仪器实现自动化常用pyvisa库基本控制可大致分为创建仪器控制对象、写入控制指令、读取仪表信息和查询仪表状态下面进行基本的讲解。
pyvisa库创建仪表控制对象
import tkinter.messagebox
import pyvisaclass InstrumentControl:inst Nonedef __init__(self, equipment_name: str, equipment_visa: str, visa_dllc:/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_dllc:/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)基本的仪器控制逻辑能实现自动化控制仪器到此结束我是活动的笑脸有疑问欢迎找博主解答。