Process Rigol oscilloscope waveform files (DHO800 series focus)
Project description
by ai.moda (Fork of RigolWFM by Scott Prahl)
A utility to process Rigol DHO800 series oscilloscope .wfm files
Note: This is a fork of scottprahl/RigolWFM focused on DHO800 series support (DHO804, DHO814, DHO824, DHO914, DHO924). For the original project supporting other Rigol oscilloscope series, visit RigolWFM.
This project provides tools to interpret waveform .wfm files created by Rigol DHO800 series oscilloscopes. It leverages kaitai struct, a domain specific language to represent 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).
Original documentation: <https://RigolWFM.readthedocs.io>
Installation
You can install locally using pip:
pip install --user rigolwfm-dho800
or 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 rigol filename = '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 untested
Resources
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 <https://sourceforge.net/projects/wfmreader>
Wagenaars’s Matlab script <https://www.mathworks.com/matlabcentral/fileexchange/18999-read-binary-rigol-waveforms>
Steele’s C program <http://nsweb.tn.tudelft.nl/~gsteele/rigol2dat>
Blaicher’s python code <https://github.com/mabl/pyRigolWFM>
Szkutnik’s python code <https://github.com/michal-szkutnik/pyRigolWfm1000Z>
Cat-Ion’s python code <https://github.com/Cat-Ion/rigol-ds4000-wfm>
Šolc’s python code <https://www.tablix.org/~avian/blog/archives/2019/08/quick_and_ugly_wfm_data_export_for_rigol_ds2072a/>
Contributions from <http://www.hakasoft.com.au/wfm_viewer>
A LabView program I got from Rigol support
Rigol’s documentation of the 1000E, 1000Z, 2000, and 6000 file formats.
Source code repository
Original upstream project
License
BSD 3-clause – see the file LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rigolwfm_dho800-2.0.534.tar.gz.
File metadata
- Download URL: rigolwfm_dho800-2.0.534.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ed5eb856e126e4ff13931cd44d5ba6941effcccc9a9d6a617abb5d57e037aae
|
|
| MD5 |
fdc3d480f37c1ac865c4ea2e9c7b5b58
|
|
| BLAKE2b-256 |
f50f0e818e3e5e7bd544c573ccfe6f86aed4881b6b70e7f1e6901dae03362340
|
Provenance
The following attestation bundles were made for rigolwfm_dho800-2.0.534.tar.gz:
Publisher:
publish-to-pypi.yml on aimoda/rigolwfm-dho800
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rigolwfm_dho800-2.0.534.tar.gz -
Subject digest:
6ed5eb856e126e4ff13931cd44d5ba6941effcccc9a9d6a617abb5d57e037aae - Sigstore transparency entry: 661725460
- Sigstore integration time:
-
Permalink:
aimoda/rigolwfm-dho800@b0b0f98207d0a7c657b5d1222e9fc3334b31bae9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/aimoda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@b0b0f98207d0a7c657b5d1222e9fc3334b31bae9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rigolwfm_dho800-2.0.534-py3-none-any.whl.
File metadata
- Download URL: rigolwfm_dho800-2.0.534-py3-none-any.whl
- Upload date:
- Size: 33.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cf229271ac1e2824f89dad76a615d42ab11ee9cb2602d210e9fdac77df2185e
|
|
| MD5 |
a63ebb6e44074f0b807f2ce72b378873
|
|
| BLAKE2b-256 |
e56e7cb3f68f3611de3011a498bec25b4c44f36208f18de3a3b874494cbb036e
|
Provenance
The following attestation bundles were made for rigolwfm_dho800-2.0.534-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on aimoda/rigolwfm-dho800
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rigolwfm_dho800-2.0.534-py3-none-any.whl -
Subject digest:
1cf229271ac1e2824f89dad76a615d42ab11ee9cb2602d210e9fdac77df2185e - Sigstore transparency entry: 661725463
- Sigstore integration time:
-
Permalink:
aimoda/rigolwfm-dho800@b0b0f98207d0a7c657b5d1222e9fc3334b31bae9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/aimoda
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@b0b0f98207d0a7c657b5d1222e9fc3334b31bae9 -
Trigger Event:
push
-
Statement type: