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() #内部触发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值