zoukankan      html  css  js  c++  java
  • 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()


  • 相关阅读:
    Collatz Conjecture(BAPC2017)
    P3377 【模板】左偏树(可并堆)
    Mergeable Stack
    B. Our Tanya is Crying Out Loud(cf)and 5918: 改变(中石油)
    bzoj 4488: [Jsoi2015]最大公约数
    Zoj
    牛客练习赛43 回顾
    哈尔滨工程大学ACM预热赛 补题
    April Fools Day Contest 2019: editorial回顾补题
    第一周总结
  • 原文地址:https://www.cnblogs.com/xia-dong/p/12667958.html
Copyright © 2011-2022 走看看