Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/scottprahl/rigolwfm
Parsers for .wfm binary files created by a wide range of Rigol oscilloscopes
https://github.com/scottprahl/rigolwfm
kaitai-struct oscilloscope parser rigol
Last synced: about 1 month ago
JSON representation
Parsers for .wfm binary files created by a wide range of Rigol oscilloscopes
- Host: GitHub
- URL: https://github.com/scottprahl/rigolwfm
- Owner: scottprahl
- License: bsd-3-clause
- Created: 2020-03-01T21:42:39.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-06-01T15:47:38.000Z (8 months ago)
- Last Synced: 2024-11-11T06:24:52.109Z (2 months ago)
- Topics: kaitai-struct, oscilloscope, parser, rigol
- Language: Python
- Homepage:
- Size: 44.5 MB
- Stars: 46
- Watchers: 5
- Forks: 6
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE.txt
- Citation: CITATION.cff
Awesome Lists containing this project
README
.. |pypi-badge| image:: https://img.shields.io/pypi/v/RigolWFM?color=68CA66
:target: https://pypi.org/project/RigolWFM/
:alt: pypi.. |github-badge| image:: https://img.shields.io/github/v/tag/scottprahl/RigolWFM?label=github&color=68CA66
:target: https://github.com/scottprahl/RigolWFM
:alt: github.. |conda-badge| image:: https://img.shields.io/conda/vn/conda-forge/RigolWFM?label=conda&color=68CA66
:target: https://github.com/conda-forge/RigolWFM-feedstock
:alt: conda.. |kaitaistruct| image:: https://img.shields.io/badge/kaitai-struct-68CA66
:target: https://ide.kaitai.io
:alt: kaitai-struct.. |zenodo-badge| image:: https://zenodo.org/badge/244228290.svg
:target: https://zenodo.org/badge/latestdoi/244228290
:alt: doi.. |license-badge| image:: https://img.shields.io/github/license/scottprahl/RigolWFM?color=68CA66
:target: https://github.com/scottprahl/RigolWFM/blob/main/LICENSE.txt
:alt: License.. |test-badge| image:: https://github.com/scottprahl/RigolWFM/actions/workflows/test.yaml/badge.svg
:target: https://github.com/scottprahl/RigolWFM/actions/workflows/test.yaml
:alt: Testing.. |docs-badge| image:: https://readthedocs.org/projects/rigolwfm/badge?color=68CA66
:target: https://rigolwfm.readthedocs.io
:alt: Docs.. |downloads-badge| image:: https://img.shields.io/pypi/dm/RigolWFM?color=68CA66
:target: https://pypi.org/project/RigolWFM/
:alt: DownloadsRigolWFM
=========by Scott Prahl
A utility to process Rigol oscilloscope ``.wfm`` files
------------------------------------------------------|pypi-badge| |github-badge| |conda-badge| |kaitaistruct| |zenodo-badge|
|license-badge| |test-badge| |docs-badge| |downloads-badge|
This project is intended to be a comprehensive resource for interpreting waveform ``.wmf`` files created by any Rigol oscilloscope. Open source (and Rigol's own applications) that parse/convert Rigol's binary ``.wfm`` files are sadly balkanized: each program tends to support a single oscilloscope group and the available efforts are spread across a range of languages.
This project leverages a domain specific language (kaitai struct) to represent the binary files. Once a binary file has been described in this text format, parsers can be generated for a wide range of languages (C++/STL, C#, Go, Java, JavaScript, Lua, Perl, PHP, Python, and Ruby).
Documentation can be found at
Installation
---------------You can install locally using pip::
pip install --user RigolWFMor ``conda``::
conda install -c conda-forge RigolWFM
or use immediately by clicking the Google Colaboratory button below
.. image:: https://colab.research.google.com/assets/colab-badge.svg
:target: https://colab.research.google.com/github/scottprahl/RigolWFM/blob/main
:alt: Colabor `analyze your files using the kaitai struct IDE `_ (you will need to manually upload the appropriate `.ksy` file and your `.wfm` to the IDE). This allows one to interactively reverse engineer binary file formats directly in your browser. This is super helpful for those Rigol ``.wfm`` formats that are undocumented or not parsing correctly.
Usage
-----Once ``RigolWFM`` is installed, you can plot the signals from binary Rigol ``.wfm`` files by::
import matplotlib.pyplot as plt
import RigolWFM.wfm as rigolfilename = 'example.wfm'
scope = 'DS1000E'w = rigol.Wfm.from_file(filename, scope)
w.plot()
plt.show()Alternatively, ``wfmconvert`` can be used from the command line. For example, the following should convert all the DS1000E files in the current directory to the ``.csv`` format::
prompt> wfmconvert E csv *.wfm
If you just wanted to convert channel 1 from a single file to ``.csv`` then::
prompt> wfmconvert --channel 1 E csv DS1102E.wfm
If you wanted to a signal `.wav` file using the second channel waveform (for use with LTspice) then::
prompt> wfmconvert --channel 2 E wav *.wfm
If you want to create a ``.wav`` file with channels one and four as signals (and autoscale for use with Audacity or Sigrok Pulseview)::
prompt> wfmconvert --autoscale --channel 14 E wav *.wfm
Status
------There is a bit of work remaining (testing, validation, repackaging) but there are binary file descriptions for ``.wfm`` files created by the following scopes:
* DS1000B tested
* DS1000C tested (two files only)
* DS1000D tested (one file only)
* DS1000E tested
* DS1000Z tested, but with wonky voltage offsets
* DS2000 tested
* DS4000 tested
* DS6000 untestedResources
---------This has been a bit of an adventure. In the process of nailing down the basic formats, I have gleaned information from a wide range of projects started by others.
* Shein's Pascal program
* Wagenaars's Matlab script
* Steele's C program
* Blaicher's python code
* Szkutnik's python code
* Cat-Ion's python code
* Šolc's python code
* Contributions from
* A LabView program I got from Rigol support
* Rigol's documentation of the 1000E, 1000Z, 2000, and 6000 file formats.Source code repository
-------------------------------------------
License
-------
BSD 3-clause -- see the file ``LICENSE`` for details.