91 lines
2.4 KiB
Python
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("*-----------------------------*")
|