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("*-----------------------------*")