Metadata-Version: 2.4
Name: pyscopegui
Version: 0.1.0
Summary: Oscilloscopes and logic analysers in one view: analog and logic channels from separate instruments, on one time axis
Author: davhodg
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/davhodg/pyscopegui
Project-URL: Documentation, https://github.com/davhodg/pyscopegui/blob/master/pyscopegui/help/manual.md
Project-URL: Repository, https://github.com/davhodg/pyscopegui
Project-URL: Issues, https://github.com/davhodg/pyscopegui/issues
Project-URL: Discussions, https://github.com/davhodg/pyscopegui/discussions
Project-URL: Releases, https://github.com/davhodg/pyscopegui/releases
Project-URL: Changelog, https://github.com/davhodg/pyscopegui/blob/master/pyscopegui/help/changelog.md
Keywords: oscilloscope,logic analyzer,logic analyser,mixed signal,PicoScope,Rigol,DS1054Z,SCPI,test and measurement,embedded,Qt
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: PySide6-Essentials>=6.8
Requires-Dist: pyqtgraph>=0.13
Requires-Dist: numpy>=1.26
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-xdist; extra == "dev"
Requires-Dist: ruff==0.16.*; extra == "dev"
Requires-Dist: trove-classifiers; extra == "dev"
Dynamic: license-file

<p align="center">
  <img src="https://raw.githubusercontent.com/davhodg/pyscopegui/master/pyscopegui/resources/pyscopegui.png" alt="pyscopegui icon: an analog trace above two logic traces on one time axis" width="128">
</p>

# pyscopegui

[![CI](https://github.com/davhodg/pyscopegui/actions/workflows/ci.yml/badge.svg)](https://github.com/davhodg/pyscopegui/actions/workflows/ci.yml)
[![release](https://img.shields.io/github/v/release/davhodg/pyscopegui?include_prereleases)](https://github.com/davhodg/pyscopegui/releases)
[![PyPI](https://img.shields.io/pypi/v/pyscopegui)](https://pypi.org/project/pyscopegui/)
![python](https://img.shields.io/badge/python-3.12+-blue)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-lightgrey)
![license](https://img.shields.io/badge/license-Apache--2.0-green)

Oscilloscopes and logic analysers in one view: analog and logic channels from separate instruments, on one time axis.

![pyscopegui with a Rigol DS1054Z and a PicoScope 2204A open together: the same 1 kHz sine on a channel of each, drawn on one time axis around each scope's own trigger, with the Instrument pane, the channel list and the Event Log](https://raw.githubusercontent.com/davhodg/pyscopegui/master/pyscopegui/help/main-window.png)

**This is an early version.**

## Install and run

To install it:

```
pip install pyscopegui
```

To run it:

```
pyscopegui
```

To update it:

```
pip install --upgrade pyscopegui
```

Python 3.12 or newer, on Windows or Linux. `python -m pyscopegui` starts it too.

On Linux, Qt needs a system library to draw the window, and Debian, Ubuntu, Linux Mint and the like often leave it out:

```
sudo apt install libxcb-cursor0
```

## What it does

- **Channels and Plot**: analog channels on one plot and digital channels in lanes under it, on the same time axis. Drag or zoom either and both move.
- **Several instruments at once**: open one, choose another and open that too. Each has its own trigger, and nought on the time axis is each one's trigger, so two instruments triggered by the same edge line up.
- **The same settings on every scope**: volts a division, probe and coupling, whichever maker's it is.
- **Open and Close**, and a scope's own **Stop, Single, Normal and Auto**, with a trigger on any channel: rising or falling, at a level, placed anywhere in the plot.
- **Deep captures stay quick**: what is drawn is cut down to a lowest and a highest per column of the screen, so a spike narrower than a pixel is still drawn.
- **Panes** that dock, float, detach into windows of their own and pin on top, with the arrangement remembered.
- **Light and dark** themes, or whichever the system is set to.

The [manual](https://github.com/davhodg/pyscopegui/blob/master/pyscopegui/help/manual.md) covers each of these, and is also under **Help > Documentation** in the application.

## Instruments

- **Demo signals**: two analog and four digital channels, with no hardware.
- **PicoScope 2204A**, and the other scopes on Pico's `ps2000` driver (2202, 2203, 2204, 2205, 2205A): both channels, streamed continuously at up to 1 MS/s, or read in short blocks at up to 100 MS/s around the scope's own trigger, and the scope's signal generator. Pico's library is not included: install the PicoSDK from [picotech.com/downloads](https://www.picotech.com/downloads).
- **Rigol DS1000Z series** (DS1054Z, DS1074Z, DS1104Z, and the Plus, -S and MSO models), over the network: the four analog channels, a sweep at a time around the scope's own trigger, read from its screen or its whole memory. Nothing of Rigol's needs installing.

## More

- [Source, issues and releases](https://github.com/davhodg/pyscopegui)
- [Standalone Windows installer](https://github.com/davhodg/pyscopegui/releases)
- [Questions and ideas](https://github.com/davhodg/pyscopegui/discussions)
- [Manual](https://github.com/davhodg/pyscopegui/blob/master/pyscopegui/help/manual.md)
- [Changelog](https://github.com/davhodg/pyscopegui/blob/master/pyscopegui/help/changelog.md)

## Safety notice and licence

pyscopegui shows what instruments connected to real equipment measure. A scope's ground clip is connected to the computer's ground unless the scope or its USB connection is isolated, and clipping it to a point that is not at ground can damage the equipment, the scope and the computer. Know what you are connecting to before you connect.

pyscopegui is provided under the Apache License 2.0, without warranty of any kind.
