2025-04-11 09:40:32 +08:00

91 lines
2.4 KiB
Python

import serial
ID_CMD=b'*IDN?\n'
CLS_CMD=b'*CLS\n'
RUN_CMD=b':RUN\n'
STOP_CMD=b':STOP\n'
SINGLE_CMD=b':SINGle\n'
TIME_SCALE_CMD=b':TIMebase:SCALe '
CHANNEL_SCALE_PRE_CMD=b':CHANnel'
CHANNEL_SCALE_AFTER_CMD=b':SCALe '
ENABLE_MEASURE_PERIOD_CMD=b':MEASure:PERiod CHANnel'
GET_MEASURE_PERIOD_CMD=b':MEASure:PERiod? CHANnel'
CLS_MEASURE_CMD=b':MEASure:CLEar\n'
P_E_RCMD=b'SYSTem:ERRor?\r\n'
P_S_RCMD=b'OUTPut:STATe?\r\n'
class inst_oscilloscope:
def __init__(self,com,band):
self.ser = serial.Serial(com,band,bytesize=8, parity='N', stopbits=1,timeout=1)
print("*-----------------------------*")
print("* Oscilloscope Connected. *")
def no_ret_cmd(self,ser,cmd):
ser.write(cmd)
def ret_cmd(self,ser,cmd):
ser.write(cmd)
s=ser.readline()
print(bytes.decode(s))
return bytes.decode(s)
def clear_err(self):
self.no_ret_cmd(self.ser,CLS_CMD)
print("Clear err status")
def get_id(self):
print("* Get device info *")
self.clear_err()
self.ret_cmd(self.ser,ID_CMD)
def run(self):
print("* Oscilloscope Run *")
self.clear_err()
self.ret_cmd(self.ser,RUN_CMD)
def stop(self):
print("* Oscilloscope Stop *")
self.clear_err()
self.ret_cmd(self.ser,STOP_CMD)
def single(self):
print("* Oscilloscope single *")
self.clear_err()
self.ret_cmd(self.ser,SINGLE_CMD)
def time_scale(self,val_str):
print("* Time scale *")
self.clear_err()
s= str.encode(str(TIME_SCALE_CMD, encoding = "utf-8")+val_str+'\n')
print(s)
self.no_ret_cmd(self.ser,s)
def channel_scale(self,chan,val_str):
print("* Channel scale *")
self.clear_err()
s= str.encode(str(CHANNEL_SCALE_PRE_CMD, encoding = "utf-8")+str(chan)+str(CHANNEL_SCALE_AFTER_CMD, encoding = "utf-8")+val_str+'\n')
print(s)
self.no_ret_cmd(self.ser,s)
def trigger(self,chan,val_str):
print("* Set trigger *")
self.clear_err()
def measure_period(self,chan):
print("* Measure period *")
self.clear_err()
self.no_ret_cmd(self.ser,CLS_MEASURE_CMD)
s= str.encode(str(ENABLE_MEASURE_PERIOD_CMD, encoding = "utf-8")+str(chan)+'\n')
print(s)
self.no_ret_cmd(self.ser,s)
g= str.encode(str(GET_MEASURE_PERIOD_CMD, encoding = "utf-8")+str(chan)+'\n')
print(g)
self.ret_cmd(self.ser,g)
def close(self):
print("* Oscilloscope unConnected. *")
print("*-----------------------------*")