Skip to content

Siglent Oscilloscope Control

Welcome to the Siglent Oscilloscope Control library documentation!

  • Quick Start

Get up and running in minutes with our quick start guide

Quick Start

  • User Guide

Learn how to use all features of the library

User Guide

  • GUI Application

Discover the powerful GUI for interactive control

GUI Guide

  • API Reference

Complete API documentation for all modules

API Docs

Overview

This library provides comprehensive control for Siglent oscilloscopes via SCPI over Ethernet. It supports both programmatic control through a Python API and interactive control through a feature-rich PyQt6 GUI.

Supported Models

  • SDS800X HD Series (e.g., SDS824X HD)
  • SDS1000X-E Series
  • SDS2000X Plus Series
  • SDS5000X Series

Key Features

  • Waveform Acquisition - Capture and analyze waveforms with full metadata
  • Channel Control - Configure voltage scale, offset, coupling, and probe settings
  • Trigger Management - Full control over trigger modes, levels, and edge detection
  • Measurements - 20+ automated measurements (frequency, Vpp, rise time, etc.)
  • FFT Analysis - Frequency domain analysis of captured waveforms
  • Protocol Decoding - Decode I2C, SPI, and UART protocols
  • Automation - High-level automation classes for data collection
  • Real-time Live View - High-performance waveform display (1000+ fps)
  • Visual Measurements - Click-and-drag measurement markers
  • FFT Display - Interactive frequency analysis
  • Protocol Decoder - Visual protocol decoding interface
  • VNC Integration - Remote access to oscilloscope screen
  • Vector Graphics - Draw shapes and text in XY mode
  • Export - Save waveforms to CSV, NPZ, MAT, HDF5, and images
  • Multi-channel - Simultaneous capture from all channels
  • Thread-safe - Background data acquisition without blocking
  • Type hints - Full type annotation for IDE support
  • Extensive tests - 240+ tests with 42% coverage
  • Documentation - Comprehensive docstrings and guides

Installation

Install the base package:

pip install SCPI-Instrument-Control

Or install with all features:

pip install "SCPI-Instrument-Control[all]"

See the Installation Guide for more options.

Quick Example

from scpi_control import Oscilloscope

# Connect to oscilloscope
scope = Oscilloscope('192.168.1.100')
scope.connect()

# Configure channel 1
scope.channel1.voltage_scale = 1.0  # 1V/div
scope.channel1.enabled = True

# Capture waveform
waveform = scope.get_waveform(1)
print(f"Captured {len(waveform)} samples")

# Get measurements
freq = scope.measure.frequency(1)
vpp = scope.measure.vpp(1)
print(f"Frequency: {freq} Hz, Vpp: {vpp} V")

GUI Application

Launch the GUI with:

siglent-gui

Main Window

Documentation Structure

Getting Started

New to the library? Start here!

- [Installation](getting-started/installation.md)
- [Quick Start](getting-started/quickstart.md)
- [Connection Setup](getting-started/connection.md)

User Guide

Learn all the features

- [Basic Usage](user-guide/basic-usage.md)
- [Waveform Capture](user-guide/waveform-capture.md)
- [Measurements](user-guide/measurements.md)
- [Advanced Features](user-guide/advanced-features.md)

Examples

Real-world code examples

- [Beginner Examples](examples/beginner.md)
- [Intermediate Examples](examples/intermediate.md)
- [Advanced Examples](examples/advanced.md)

API Reference

Detailed API documentation

- [Oscilloscope](api/oscilloscope.md)
- [Channel](api/channel.md)
- [Trigger](api/trigger.md)
- [Waveform](api/waveform.md)

Community & Support

License

This project is licensed under the MIT License - see the License page for details.