可编程仪器之万用表使用脚本使用模板

本文介绍了一个使用Python进行串口通信并控制仪器(如DM3068)进行电压测量的示例,通过ResourceManager连接设备,设置电压值,获取测量结果并记录数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pyvisa
import time
import os
import math
import random
import csv
#import xlwt
import pyvisa as visa
import serial
import serial.tools.list_ports
from datetime import datetime
#-- coding: UTF-8 --
ports_list = list(serial.tools.list_ports.comports())
if len(ports_list) <= 0:
print(“无串口设备。”)
else:
print(“可用的串口设备如下:”)
for comport in ports_list:
print(list(comport)[0], list(comport)[1])

#打开 COM17,将波特率配置为115200.
ser = serial.Serial(port=“COM17”, baudrate=921600)
rm = visa.ResourceManager()
ControllInstrumentAddress = “USB0::0x1AB1::0x0C94::DM3O251800793::INSTR” #“USB0::0x1AB1::0x0C94::DM3D224400105::0::INSTR”
dm = rm.open_resource(ControllInstrumentAddress)
dm.timeout = 5000
arrDcValList=[0.0,0.0,0.0,0.0,0.0]
DcMax=0.0
DcMin=0.0
writeDcVal=0.0
countInRun =0
arrSetDcValList=[-4000,-2000,0,2000,4000]
def Meas1():

with open("D:/test/factory_10_07_1800.txt","w+") as test:
    countDC=0
    dcSetval=0
    #time.sleep(1.5)
    countInRun=1
    while(1):
        for countDC in range(0,5,1):
            dcSetval = arrSetDcValList[countDC]
            write_len = ser.write(b':SDC %d\r\n'% dcSetval)
            currentDateAndTime = 0
            currentTime = 0 
            total=0.0

            print("串口发出{}个字节。".format(write_len))
            #print("你")
            currentDateAndTime=  datetime.now()
            currentTime = currentDateAndTime.strftime("%H:%M:%S")
            test.write(str(currentTime))
            test.write(str(","))
            test.write(str(dcSetval))
            test.write(str(","))
            time.sleep(10)
            for readcount in range(0,5,1):
                arrDcValList[readcount-1] =(float)( dm.query(":MEAS:VOLT:DC?"))#DM3068 read voltage in scpi cmd
                #writeDcVal =(float)( dm.query(":MEAS:VOLT:DC?"))
            DcMax = max(arrDcValList)
            DcMin = min(arrDcValList)
            for ele in range(0, len(arrDcValList)):
                total = total + arrDcValList[ele]
            total = (total-DcMax-DcMin)/3.0
            test.write(str(total))
            test.write(str(","))
        test.write("\n")
        test.flush()

if name == “main”:
Meas1()
ser.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值