Keysight DSA90000Series Library parts

KeysightオシロスコープDSA90000シリーズのlibrary partsになります。
ご参考までに。

'''

    import pyvisa
    
    class KeysightOscilloscope:
        def __init__(self, resource):
            """Initialize connection to the oscilloscope."""
            self.rm = pyvisa.ResourceManager()
            self.scope = self.rm.open_resource(resource)
            self.scope.timeout = 10000  # Set timeout to 10 seconds
    
        def write(self, command):
            """Send a command to the oscilloscope."""
            self.scope.write(command)
    
        def query(self, command):
            """Send a query command and return the response."""
            return self.scope.query(command).strip()
    
        def reset(self):
            """Reset the oscilloscope."""
            self.write("*RST")
    
        def get_id(self):
            """Get the oscilloscope's identification string."""
            return self.query("*IDN?")
    
        def autoscale(self):
            """Perform an autoscale on the oscilloscope."""
            self.write(":AUToscale")
    
        def set_timebase(self, scale):
            """Set the time base scale."""
            self.write(f":TIMebase:SCALe {scale}")
        
        def set_trigger_level(self, level):
            """Set the trigger level."""
            self.write(f":TRIGger:LEVel {level}")
        
        def set_trigger_mode(self, mode):
            """Set the trigger mode (AUTO, NORMAL, SINGLE)."""
            self.write(f":TRIGger:MODE {mode}")
        
        def measure_voltage_peak(self, channel):
            """Measure peak-to-peak voltage on a specified channel."""
            self.write(f":MEASure:VPP CHAN{channel}")
            return self.query(f":MEASure:VPP? CHAN{channel}")
        
        def measure_frequency(self, channel):
            """Measure frequency on a specified channel."""
            self.write(f":MEASure:FREQuency CHAN{channel}")
            return self.query(f":MEASure:FREQuency? CHAN{channel}")
        
        def get_waveform(self, channel):
            """Retrieve waveform data from the oscilloscope."""
            self.write(f":WAVeform:SOURce CHANnel{channel}")
            self.write(":WAVeform:FORMat ASCII")
            return self.query(":WAVeform:DATA?")
        
        def save_waveform(self, filename):
            """Save the current waveform to a file."""
            self.write(f":DISK:SAVE:WAVeform '{filename}'")
        
        def load_setup(self, filename):
            """Load a setup file."""
            self.write(f":DISK:LOAD:SETup '{filename}'")
        
        def save_setup(self, filename):
            """Save the current setup to a file."""
            self.write(f":DISK:SAVE:SETup '{filename}'")
        
        def clear_errors(self):
            """Clear error queue."""
            self.write(":SYSTem:ERRor?")
        
        def get_errors(self):
            """Retrieve error messages."""
            return self.query(":SYSTem:ERRor?")
        
        def close(self):
            """Close the connection to the oscilloscope."""
            self.scope.close()
            
    # Example usage
    if __name__ == "__main__":
        osc = KeysightOscilloscope("TCPIP::192.168.1.100::INSTR")
        print("Oscilloscope ID:", osc.get_id())
        osc.autoscale()
        print("Waveform data:", osc.get_waveform(1))
        print("Peak-to-peak voltage:", osc.measure_voltage_peak(1))
        print("Frequency:", osc.measure_frequency(1))
        osc.close()

'''