Remote control software for GW Instek GDS 2204
Posted: Wed Oct 19, 2016 8:03 pm
As part of the fusor data acquisition, we have a fast, 4 ch scope looking at some things were we want really good time resolution to tease apart causes and effects. So I purchased a really nice 4 channel 2.5GHz effective sample rate scope, a GDS-2204 for the setup. I also got the Ethernet and VGA addons for this so as to be able to both take video of what would have been on the screen (the built in screen is fine if you're in the room with it, but tiny for a pi camera), and control it somewhat during a run. By definition, I can't be in the room with this while the fusor is running, and last I checked, low noise scope preamp class gear that would let me send high impedance high frequency (in this case only 1 mhz) signals down coax to the operating position is around $2595 per channel (otherwise stated - more than that scope with addons, and it's faster too). [Citation Oct 2016 issue of Photonics magazine, Standford Research Systems Inc model SR560]
So! I wrote some perl (yes, I know, I have weird taste) to control some things from the remote operating position over Ethernet, and while it doesn't cover more than a fraction of the possible functionality, it's probably good enough for what we need during a run. We can always adjust things between runs too and save them remotely as defaults with this code. Or I can add more code to this, but even with 4 monitors, I'm not overwhelmed with extra pixels. The scope itself has a tree structure for many menus because there's only room for howevermany knobs (a lot). Same issues here, and I just needed good enough.
This code assumes Ethernet, 192.168.1.201:3000, but you could use my USB serial software and substitute port paths and $port for $socket in the code and it'd work that way too. Problem here is, USB isn't going to go as far as I am away from this when it's running. The main problem for anyone else to use this code is likely going to be getting all the perl modules it uses going with your linux distro (I recommend cpanminus and synaptic to get the dependencies sorted - in one case you need synaptic to get a C library's development version (see the cpanm build logs when you get errors). Sigh, it is what it is.
This software is in two files, one perl, one glade XML that defines the gui. It can create a preset file of any name you like, that will go in the same path as wherever the program files are (I use home/doug/bin, ymmv).
I have to say, that it's really cool to be able to develop this and watch it change things on the scope via a raspberry pi video camera over at the fusor - from here. Saves a lot of shoe leather.
And it's not totally ugly:
Here's the bits - share and enjoy:
So! I wrote some perl (yes, I know, I have weird taste) to control some things from the remote operating position over Ethernet, and while it doesn't cover more than a fraction of the possible functionality, it's probably good enough for what we need during a run. We can always adjust things between runs too and save them remotely as defaults with this code. Or I can add more code to this, but even with 4 monitors, I'm not overwhelmed with extra pixels. The scope itself has a tree structure for many menus because there's only room for howevermany knobs (a lot). Same issues here, and I just needed good enough.
This code assumes Ethernet, 192.168.1.201:3000, but you could use my USB serial software and substitute port paths and $port for $socket in the code and it'd work that way too. Problem here is, USB isn't going to go as far as I am away from this when it's running. The main problem for anyone else to use this code is likely going to be getting all the perl modules it uses going with your linux distro (I recommend cpanminus and synaptic to get the dependencies sorted - in one case you need synaptic to get a C library's development version (see the cpanm build logs when you get errors). Sigh, it is what it is.
This software is in two files, one perl, one glade XML that defines the gui. It can create a preset file of any name you like, that will go in the same path as wherever the program files are (I use home/doug/bin, ymmv).
I have to say, that it's really cool to be able to develop this and watch it change things on the scope via a raspberry pi video camera over at the fusor - from here. Saves a lot of shoe leather.
And it's not totally ugly:
Here's the bits - share and enjoy: