Skip to main content

DAQinator

banner

What a wild ride this program has been. It’s been my first time ever making a GUI. First with EGUI and then with Tauri.

It’s a rust rewrite of Colin’s ADAP. ADAP was very slow and buggy, and he always said he should rewrite it in rust, although he never did. That’s why I took into my own hands to rewrite the program.

My first prototype was already massively faster than the python version: It went from a couple of minutes to a few seconds. DAQinator also quickly became much more robust than it’s predecessor. It’s basically impossible to make it behave like it’s not supposed to, and it uses a much better system for graphing templates.

Graphing templates use TOML instead of CSV, and they’re much easier to create thanks to serde. It also fixes some really goofy mistakes Colin made: To convert from column number to the letters spreadsheets use, he manually wrote a dictionary! That should be a crime! I did it procedurally instead:

fn num_to_col(number: usize) -> String {
    let mut result = String::new();
    let mut num = number + 2;

    while num > 0 {
        let rem = (num - 1) % 26;
        let ch = (rem as u8 + b'A') as char;
        result.insert(0, ch);
        num = (num - 1) / 26;
    }

    result
}

There are 26 letters in the english abecedary, so what I made is a base 10 to base 26 converter, where the first number in the base 26 system is ‘A’ and the 26th is ‘Z’.

I also tried to document my rewrite extensively so it can be mainained by anyone later on.

Earlier I mentioned EGUI and Tauri. I started making the program with EGUI, the premise being it was just a temporary UI for developenent, and that Colin would make a propper UI later on. …But he never did, for various reasons I can’t blame him for. (And he also went on a rant on why he would never deploy my program while using my EGUI UI) So recently having decorated my website, and with a little bit of HTML and CSS knowledge, I decided trying out Tauri was a good idea.

Thanks to Tauri (and Colin’s help) i’ve been able to make a GUI which is much more intuitive and, to put it lightly, easier on the eyes. I bet even my grandma could use it without any instructions.

Check out the project on gitlab: https://gitlab.com/ColinLeftwich/DAQinator