简介
SCPI (Standard Commands for Programmable Instrument) 是IEEE 488.2上的可程控仪器标准指令集。SCPI命令分为两个部分:IEEE 488.2公用命令和SCPI仪器特定控制命令。
公用命令是IEEE 488.2规定的仪器必须支持的命令,其句法和语义均遵循IEEE 488.2的规定。公用命令与测量无关,用来控制重设、自我测试和状态操作。
SCPI仪器特定控制命令用于测量、读取数据及切换开关等工作。
程控电源控制API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| import serial
class Power(object): def __init__(self, portx: str = "COM3", bps: int = 9600, timeout: float = 5.0) -> None: self._ser = serial.Serial(portx, bps, timeout=timeout)
def read(self) -> str: output = b"" while True: buffer = self._ser.read() if buffer == b"\n": break output += buffer return output.decode("utf-8")
def write(self, command: str) -> None: self._ser.write(command.encode("utf-8")) self._ser.write(b"\n")
def on(self): return self.write(":OUTP ON")
def off(self): return self.write(":OUTP OFF")
@property def v(self): self.write(":MEAS?") return self.read()
@v.setter def v(self, value: float): return self.write(f":VOLT {value}")
@property def a(self): self.write(":MEAS:CURR?") return self.read()
@a.setter def a(self, value: float): return self.write(f":CURR {value}")
@property def w(self): self.write(":MEAS:POW?") return self.read()
def __str__(self) -> str: return f"<{self.__class__.__name__} v={self.v} a={self.a}>"
__repr__ = __str__
if __name__ == "__main__": import time
power = Power() print(power) print(power.v, power.a, power.w) power.off() print(power.v, power.a, power.w) time.sleep(5) print(power.v, power.a, power.w) power.on() print(power.v, power.a, power.w)
|