Loading bin/kaxxxxp-viewer +13 −8 Original line number Original line Diff line number Diff line Loading @@ -105,7 +105,7 @@ class SerialReader(serial.threaded.Protocol): class KA320: class KA320: def __init__(self, port): def __init__(self, port, channel=1): self.ser = serial.serial_for_url(port, do_not_open=True) self.ser = serial.serial_for_url(port, do_not_open=True) self.ser.baudrate = 9600 self.ser.baudrate = 9600 self.ser.parity = "N" self.ser.parity = "N" Loading @@ -120,6 +120,8 @@ class KA320: ) ) sys.exit(1) sys.exit(1) self.channel = channel self.reader = SerialReader() self.reader = SerialReader() self.worker = serial.threaded.ReaderThread(self.ser, self.reader) self.worker = serial.threaded.ReaderThread(self.ser, self.reader) self.worker.start() self.worker.start() Loading @@ -138,20 +140,20 @@ class KA320: return self.rw(b"*IDN?", 16) return self.rw(b"*IDN?", 16) def get_max_voltage(self): def get_max_voltage(self): return float(self.rw(b"VSET1?", 5)) return float(self.rw(f"VSET{self.channel:d}?".encode(), 5)) def get_max_current(self): def get_max_current(self): return float(self.rw(b"ISET1?", 5, True)) return float(self.rw(f"ISET{self.channel:d}?".encode(), 5, True)) def get_voltage(self): def get_voltage(self): try: try: return float(self.rw(b"VOUT1?", 5)) return float(self.rw(f"VOUT{self.channel:d}?".encode(), 5)) except TypeError: except TypeError: return None return None def get_current(self): def get_current(self): try: try: return float(self.rw(b"IOUT1?", 5, True)) return float(self.rw(f"IOUT{self.channel:d}?".encode(), 5, True)) except TypeError: except TypeError: return None return None Loading @@ -172,13 +174,13 @@ def graceful_exit(sig, frame): terminate_measurement = True terminate_measurement = True def measure_data(port, filename, duration): def measure_data(port, filename, duration, channel=1): global terminate_measurement global terminate_measurement signal.signal(signal.SIGINT, graceful_exit) signal.signal(signal.SIGINT, graceful_exit) signal.signal(signal.SIGTERM, graceful_exit) signal.signal(signal.SIGTERM, graceful_exit) signal.signal(signal.SIGQUIT, graceful_exit) signal.signal(signal.SIGQUIT, graceful_exit) korad = KA320(port) korad = KA320(port, channel) start_ts = time.time() start_ts = time.time() Loading Loading @@ -312,6 +314,7 @@ def main(): default="/dev/ttyACM0", default="/dev/ttyACM0", help="Set PSU serial port", help="Set PSU serial port", ) ) parser.add_argument("--channel", type=int, default=1, help="Measurement Channel") parser.add_argument( parser.add_argument( "--save", metavar="FILE", type=str, help="Save measurement data in FILE" "--save", metavar="FILE", type=str, help="Save measurement data in FILE" ) ) Loading Loading @@ -354,7 +357,9 @@ def main(): with open(args.load, "r") as f: with open(args.load, "r") as f: log_data = f.read() log_data = f.read() else: else: log_data = measure_data(args.port, args.save, args.duration) log_data = measure_data( args.port, args.save, args.duration, channel=args.channel ) data = parse_data(log_data, skip=args.skip, limit=args.limit) data = parse_data(log_data, skip=args.skip, limit=args.limit) Loading Loading
bin/kaxxxxp-viewer +13 −8 Original line number Original line Diff line number Diff line Loading @@ -105,7 +105,7 @@ class SerialReader(serial.threaded.Protocol): class KA320: class KA320: def __init__(self, port): def __init__(self, port, channel=1): self.ser = serial.serial_for_url(port, do_not_open=True) self.ser = serial.serial_for_url(port, do_not_open=True) self.ser.baudrate = 9600 self.ser.baudrate = 9600 self.ser.parity = "N" self.ser.parity = "N" Loading @@ -120,6 +120,8 @@ class KA320: ) ) sys.exit(1) sys.exit(1) self.channel = channel self.reader = SerialReader() self.reader = SerialReader() self.worker = serial.threaded.ReaderThread(self.ser, self.reader) self.worker = serial.threaded.ReaderThread(self.ser, self.reader) self.worker.start() self.worker.start() Loading @@ -138,20 +140,20 @@ class KA320: return self.rw(b"*IDN?", 16) return self.rw(b"*IDN?", 16) def get_max_voltage(self): def get_max_voltage(self): return float(self.rw(b"VSET1?", 5)) return float(self.rw(f"VSET{self.channel:d}?".encode(), 5)) def get_max_current(self): def get_max_current(self): return float(self.rw(b"ISET1?", 5, True)) return float(self.rw(f"ISET{self.channel:d}?".encode(), 5, True)) def get_voltage(self): def get_voltage(self): try: try: return float(self.rw(b"VOUT1?", 5)) return float(self.rw(f"VOUT{self.channel:d}?".encode(), 5)) except TypeError: except TypeError: return None return None def get_current(self): def get_current(self): try: try: return float(self.rw(b"IOUT1?", 5, True)) return float(self.rw(f"IOUT{self.channel:d}?".encode(), 5, True)) except TypeError: except TypeError: return None return None Loading @@ -172,13 +174,13 @@ def graceful_exit(sig, frame): terminate_measurement = True terminate_measurement = True def measure_data(port, filename, duration): def measure_data(port, filename, duration, channel=1): global terminate_measurement global terminate_measurement signal.signal(signal.SIGINT, graceful_exit) signal.signal(signal.SIGINT, graceful_exit) signal.signal(signal.SIGTERM, graceful_exit) signal.signal(signal.SIGTERM, graceful_exit) signal.signal(signal.SIGQUIT, graceful_exit) signal.signal(signal.SIGQUIT, graceful_exit) korad = KA320(port) korad = KA320(port, channel) start_ts = time.time() start_ts = time.time() Loading Loading @@ -312,6 +314,7 @@ def main(): default="/dev/ttyACM0", default="/dev/ttyACM0", help="Set PSU serial port", help="Set PSU serial port", ) ) parser.add_argument("--channel", type=int, default=1, help="Measurement Channel") parser.add_argument( parser.add_argument( "--save", metavar="FILE", type=str, help="Save measurement data in FILE" "--save", metavar="FILE", type=str, help="Save measurement data in FILE" ) ) Loading Loading @@ -354,7 +357,9 @@ def main(): with open(args.load, "r") as f: with open(args.load, "r") as f: log_data = f.read() log_data = f.read() else: else: log_data = measure_data(args.port, args.save, args.duration) log_data = measure_data( args.port, args.save, args.duration, channel=args.channel ) data = parse_data(log_data, skip=args.skip, limit=args.limit) data = parse_data(log_data, skip=args.skip, limit=args.limit) Loading