This is a command line program as well as a crate I just released a few days ago, made to support nearly every feature of an inexpensive DDS Signal Generator device known as the "Koolertron Upgraded 60MHz DDS Signal Generator Counter, High Precision Dual-channel Arbitrary Waveform Function Generator Frequency Meter 200MSa/s (60MHz) Model: GH-CJDS66-FU".
It is tested and working on Linux and Windows, and maybe it works on Mac also, but I didn't try that. It can be used to operate the various features of the signal generator from the command line (bash, cmd, powershell, or whatever), and therefore it should be useful for automating the device's functionality with some custom scripting, or however else you prefer to control it.
The crate is well documented, so if you want you can easily use the features of the device in your own Rust programs. You could for example make an entirely different control program for the same device, maybe a GUI or web-based program, or other. It's my first time publishing a crate, so I apologize if it's not following some proper conventions that I missed, but I think it should be usable, and I'll consider any feedback which might help me improve it.
Let me know what you think of it if you tried it, or if you take a look at it. Maybe it also works for some other similar DDS Signal Generators too, I'm not sure. I made this mostly for myself after Koolertron was kind enough to give me access to the official USB-serial communication protocol spec for this device, and while I don't think they'll allow me to share the spec, they did authorize me to make an open source program based on it, so if you want to you can infer almost the entire spec by studying the project's source code. If anyone else besides me gets some use out of this project, then I'm happy.
In case you read this far and you don't know what a signal generator is, it's a device used by electronics hobbyists or engineers to generate voltage patterns or waveforms, which you can apply to circuits or devices you're testing. When you apply different waveforms to circuits, it usually causes them to behave differently, so you can test various conditions at the electrical signal level using a device like this.
Here's the project. It can be considered basically feature-complete:
GitLab:
Crate: https://crates.io/crates/signal-gen-cjds66-lib
Docs: signal_gen_cjds66_lib - Rust
I hope it's okay if I cross-post this into the Code Review category also, because I wanted to announce it, but also I was hoping for someone to code-review it maybe.
UPDATE 2021-01-07 - Linux and Windows x86_64 binary builds are now available with each new release from now on, so you don't have to compile from source yourself (now at v0.1.6):