Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sam210723/wavebin
Capture and inspect multi-channel oscilloscope waveforms
https://github.com/sam210723/wavebin
agilent keysight numpy oscilloscope pulseview pyqt6 pyqtgraph pyvisa qt6 rigol siglent usb-tmc waveform
Last synced: 23 days ago
JSON representation
Capture and inspect multi-channel oscilloscope waveforms
- Host: GitHub
- URL: https://github.com/sam210723/wavebin
- Owner: sam210723
- License: mit
- Created: 2019-11-16T03:47:37.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-05T11:40:48.000Z (6 months ago)
- Last Synced: 2024-09-29T07:42:08.511Z (about 1 month ago)
- Topics: agilent, keysight, numpy, oscilloscope, pulseview, pyqt6, pyqtgraph, pyvisa, qt6, rigol, siglent, usb-tmc, waveform
- Language: Python
- Homepage:
- Size: 70.7 MB
- Stars: 70
- Watchers: 7
- Forks: 11
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-opensource-hardware - wavebin
README
# Oscilloscope Waveform Capture Viewer
[![GitHub release](https://img.shields.io/github/release/sam210723/wavebin.svg)](https://pypi.org/project/wavebin/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/wavebin)](https://pypi.org/project/wavebin/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/wavebin)](https://pypi.org/project/wavebin/)
[![GitHub license](https://img.shields.io/github/license/sam210723/wavebin.svg)](https://github.com/sam210723/wavebin/master/LICENSE)**wavebin** reads binary capture files generated by Agilent, Keysight and Rigol oscilloscopes and renders the waveforms in an interactive plot. Waveforms can be inspected, [filtered](#filtering), [clipped](#clipping), [subsampled](#subsampling) and exported to [sigrok PulseView](#export-to-pulseview) or [WAV files](#export-to-wav).
![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/wavebin.png)
**wavebin** has been tested with capture files from a [**Keysight DSO-X 1102G**](https://www.keysight.com/en/pdx-2766207-pn-DSOX1102G/oscilloscope-70-100-mhz-2-analog-channels), [**Keysight MSO-X 4154A**](https://www.keysight.com/en/pdx-x201943-pn-MSOX4154A/mixed-signal-oscilloscope-15-ghz-4-analog-plus-16-digital-channels), [**Rigol MSO5074**](https://www.rigolna.com/products/digital-oscilloscopes/MSO5000/), and [**Rigol DHO804**](https://www.rigolna.com/products/rigol-digital-oscilloscopes/dho800/). If you have access to waveform files from other Agilent, Keysight or Rigol oscilloscopes, please submit them for testing through the [Sample Waveforms issue](https://github.com/sam210723/wavebin/issues/1).
![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/console.png)
## Getting Started
**wavebin** is available via the [Python Package Index (PyPI)](https://pypi.org/project/wavebin/) and is installed using [pip](https://pip.pypa.io/en/stable/).```
> pip3 install wavebin
```Keysight oscilloscopes save capture files to external USB Mass Storage devices for easy transfer to a PC. These files use the `.bin` extension.
To open a capture file in **wavebin**, start the application by running:```
> python3 -m wavebin
```Next, click *File* → *Open* and navigate to the `.bin` file.
Alternatively a capture file path can be specified when running **wavebin** using the `-i` argument.
```
> python3 -m wavebin -i [PATH TO BIN FILE]
```For more information about the **wavebin** command-line arguments run:
```
> python3 -m wavebin -h
__ _
_ ______ __ _____ / /_ (_)___
| | /| / / __ `/ | / / _ \/ __ \/ / __ \
| |/ |/ / /_/ /| |/ / __/ /_/ / / / / /
|__/|__/\__,_/ |___/\___/_.___/_/_/ /_/ v2.3.1vksdr.com/wavebin
usage: wavebin [-h] [-i FILE] [-v] [--no-opengl] [--no-limit]
Waveform capture viewer for Keysight oscilloscopes.
optional arguments:
-h, --help show this help message and exit
-i FILE path to Keysight waveform capturefile (.bin)
-v enable verbose logging mode
--no-opengl disable hardware accelerated rendering with OpenGL
--no-limit disable subsampling limit (may cause slow frame rates with large captures)
```## Features
### Export to PulseView
[PulseView](https://sigrok.org/wiki/PulseView) by [sigrok](https://sigrok.org) is a logic analysis tool typically used with hardware logic analyser devices. It is capable of decoding many serial and parallel protocols with its built-in decoders.Below is a 115200bd UART waveform captured on a **DSO-X 1102G**, loaded into **wavebin** with [clipping](#clipping) enabled to create a clean digital waveform, exported to PulseView and decoded using the PulseView UART protocol decoder.
![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/pulseview.png)
To export waveforms to PulseView, click *File* → *Export to PulseView* then navigate to a save location. The produced [`.sr` file](https://sigrok.org/wiki/File_format:Sigrok/v2) can then be opened directly in PulseView.
### Export to WAV
WAV files can be opened in most media players (e.g. [VLC](https://www.videolan.org/vlc/)) and audio editors (e.g. [Audacity](https://www.audacityteam.org/)).![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/wav.png)
To export waveforms to WAV files, click *File* → *Export to WAV file* then navigate to a save location. This will produce a mono `.wav` file for each waveform. The WAV files names follow the format `*_[n].wav`, where `n` is the waveform number starting at `0`.
### Filtering
A [Savitzky-Golay low pass filter](https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter) is included in **wavebin** for smoothing waveforms. This filter can be enabled using the *Filter Type* dropdown menu.![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/filtering.png)
### Clipping
The clipping option converts analog waveforms to digital waveforms in a similar way to a Schmitt trigger.The [filtering](#filtering) and clipping options can be used simultaneously. Clipping is always applied after filtering.
![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/clipping.png)
### Subsampling
When a waveform capture is first loaded, all available sample points will be used to render the waveform.
The subsampling option renders the waveform using an equally-spaced subset of points.Below is a 62.5 MHz wave being rendered with all `20,000` points in the capture file, and then with only `1250` points.
![](https://raw.githubusercontent.com/sam210723/wavebin/master/screenshots/subsampling.png)
By default, waveforms with over `50,000` points will automatically be subsampled. This can be overridden using the `--no-limit` switch.
## Resources
- [FaustinCarter/agilent_read_binary](https://github.com/FaustinCarter/agilent_read_binary)
- [yodalee/keysightBin](https://github.com/yodalee/keysightBin/)
- [Input output formats - sigrok](https://sigrok.org/wiki/Input_output_formats)
- [File format:sigrok/v2 - sigrok](https://sigrok.org/wiki/File_format:Sigrok/v2)