• Python visa 读取powermeter



    import visa
    import os,csv,sys,time
    from getopt import getopt

    def Useage():
    print sys.argv[0].split('/')[-1],'-m mode -t seconds'
    print "mode: [voltage|current|power|all]"
    sys.exit()

    class PowerMeter(object):
    def __init__(self):
    v = visa.ResourceManager()
    self.PM=v.open_resource('ASRL7::INSTR')
    self.PM.write("NUMERIC:FORMAT ASCII")
    if self.PM.query("*IDN?").find("WT310") >= 1:
    self.ID = "WT310"
    self.MODE = "NUMERIC"
    else:
    self.ID = "WT210"
    self.MODE = "MEASURE"

    def GetVoltage(self):
    self.voltage = self.PM.query("{}:NORMAL:VALUE? 1".format(self.MODE))
    voltage=float(self.voltage)
    return voltage

    def GetCurrent(self):
    self.current = self.PM.query("{}:NORMAL:VALUE? 2".format(self.MODE))
    current=float(self.current)
    return current

    def GetPower(self):
    self.power = self.PM.query("{}:NORMAL:VALUE? 3".format(self.MODE))
    power=float(self.power)
    return power

    if __name__ == "__main__":
    csv_file="Power_meter.csv"
    header=[]
    lines=[]
    pwr=PowerMeter()
    try:
    opts,args=getopt(sys.argv[1:],'hm:t:',['help','mode'])
    except:
    Useage()
    if len(opts) != 2 or len(args) != 0 :
    Useage()

    for o, v in opts:
    if o in ('-h','--help'):
    Useage()
    sys.exit()
    elif o in ('-m','--mode'):
    Mode=v
    elif o == '-t':
    Sample_time=int(v)

    if Mode == "voltage":
    header.append("Voltage")
    elif Mode == "current":
    header.append("Current")
    elif Mode == "power":
    header.append("Power")
    elif Mode == "all":
    header=("Voltage,Current,Power".split(','))
    else:
    print "value of -m error"
    Useage()


    for i in xrange(0,Sample_time):
    print " Remain Time: {0}".format(Sample_time-i),
    tmp=[]
    for j in header:
    if hasattr(pwr,'Get'+j):
    tmp.append(getattr(pwr,'Get'+j)())
    lines.append(tmp)
    time.sleep(1)

    with open(csv_file,'wb+') as f:
    writer=csv.writer(f)
    writer.writerow(header)
    for line in lines:
    writer.writerow(line)
    f.close()


  • 相关阅读:
    大数据笔记13:Hadoop安装之Hadoop的配置安装
    Android(java)学习笔记206:JNI之工具快速开发步骤
    Android(java)学习笔记205:JNI之编写jni程序适配所有处理器型号
    JS 实现Json查询方法
    js中call与apply用法
    大数运算(待续)
    HDU 2553(N皇后)(DFS)
    C++ STL:stack和queue
    快速幂取模(POJ 1995)
    位运算
  • 原文地址:https://www.cnblogs.com/xia-dong/p/12667958.html
Copyright © 2020-2023  润新知