Python实现 通过RS232 SCPI 命令控制Tektronix DMM4050

Python实现 通过RS232 SCPI 命令控制Tektronix DMM4050@TOC

import serial
import matplotlib.pyplot as plt
import time

def test_connect(ser): ##连接检查
ser.write("*IDN?\n".encode())
msg = ser.read(42)
print(msg.decode())

def meter_read(ser): ##读取测量数据
ser.write(“READ?\n”.encode())
buff = ser.read(17)
buff = float(buff.decode())
return buff

def left_insert(data,result): ##在数组最左端插入数据
data.pop()
data.insert(0, result)

def init_config():##初始配置

ser = serial.Serial('COM24',9600,bytesize=8,parity="N",stopbits=1) ##串口号:24 波特率:9600
ser.write("*RST\n".encode())  ##复位
ser.write("*CLS\n".encode())
ser.write("SYST:REM\n".encode()) ##使得万用表处于操控模式
ser.write("CONF:VOLT:DC 10,0.0002\n".encode()) ##配置测量,模式 DC直流 10V量程 0.0002分辨率
return ser

def plot_signal(data,time):##画图配置
plt.ion()
plt.clf()
plt.plot(data)
plt.pause(time)

def trig_meas(ser):##触发测量
ser.write(“TRIG:SOUR IMM\n”.encode())
ser.write(“SAMP:COUN 1000\n”.encode())
ser.write(“INIT\n”.encode())
ser.write(“FETC?\n”.encode())

def byte2float(buff):
buff = buff.decode()
buff = buff.replace(’,’, ‘’)
result = float(buff)
return result

def main1():##监测

npoint = 200
data = [0]*npoint
ser = init_config()
test_connect(ser)
print("Start Measure")
while True:
   for i in range(npoint):
      result = meter_read(ser)
      left_insert(data,result)
      time.sleep(0.01)
      plot_signal(data,0.1)

def main2():##触发

npoint = 1000
data = [0] * npoint

ser = init_config()
test_connect(ser)
trig_meas(ser)
for i in range(npoint):
      buff = ser.read(16)
      result = byte2float(buff)
      data[i] = result

plot_signal(data,1000)

if name == “main”:
main1() #实时监测
#main2() #内部触发

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言实现SCPI命令解释器可以用于控制和管理各种仪器设备,例如示波器、信号发生器、电源等。下面是一个基本的SCPI命令解释器的设计: 1. 定义SCPI命令格式,包括命令头和参数部分,例如:“MEASure:VOLTage:DC?”。 2. 使用C语言编写解析器函数,将接收到的SCPI命令解析为命令头和参数部分,例如:“MEASure:VOLTage:DC”和“?”。 3. 根据不同的命令头,调用相应的处理函数,例如针对“MEASure:VOLTage:DC”命令头,调用相应的函数进行电压测量操作。 4. 在处理函数中,根据参数部分的不同,执行相应的操作,例如根据“?”返回电压值。 5. 将结果返回给用户或者其他系统,例如将测量结果显示在屏幕上或者将结果发送到其他设备。 基于PythonSCPI命令解释器的设计与C语言类似,但是可以使用Python的高级特性和库来简化开发过程。 1. 定义SCPI命令格式,包括命令头和参数部分,例如:“MEASure:VOLTage:DC?”。 2. 使用Python的正则表达式库或者字符串操作函数,将接收到的SCPI命令解析为命令头和参数部分,例如:“MEASure:VOLTage:DC”和“?”。 3. 根据不同的命令头,使用Python的面向对象编程特性,调用相应的处理类和方法,例如针对“MEASure:VOLTage:DC”命令头,调用相应的类进行电压测量操作。 4. 在处理类中,根据参数部分的不同,执行相应的操作,例如根据“?”返回电压值。 5. 使用Python的网络编程库或者GUI库,将结果返回给用户或者其他系统,例如将测量结果显示在屏幕上或者将结果发送到其他设备。 总之,无论是基于C语言还是PythonSCPI命令解释器,都需要定义命令格式、编写解析器、实现处理函数、返回结果等基本步骤,并且需要根据具体应用场景选择合适的语言和库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值