Rigol Oscilloscope Network Controller Under Construction

I’m in my first Java class in school.  In my Python class, I decided to do a few little projects in MicroPython to combine Embedded Systems with Python to extend what I was learning in class.  Well, that wasn’t going to work with Java.  The closest I could get to embedded programming in Java was working with the Raspberry Pi, which is what I did for the first few weeks.  Then it hit me, my oscilloscope has a network adapter on the back, and it is controllable via SCPI and VISA.  I’ve never done a GUI interface, never done socket level networking, and never worked with graphics, so it seemed like the perfect project for me!

The biggest challenge was the screen capture from the scope.  I was getting the first packet with no problems at all, but losing every subsequent one.  I got to learn all about the ByteBuffer class to solve that one.  I’ve overcome a lot of challenges to get to where I am, but I’m pretty proud of it so far.

The Time Scale and Channel Range buttons step through their respective settings with the standard 1-2-5 steps that the dials on the front of the scope provide.  Auto does the same thing that the AUTO button on the scope does, and Update just refreshes the screen capture.  It all updates automatically as you push buttons, but that means that it takes some time for each press.  The screen capture takes a couple of seconds to complete for some reason.  It may be a problem on my end, or it could just be that the scope takes some time to update the JPEG.  I’m excited to add more functionality!

The repository can be found at if you’re interested.