The TimeStep program was developed strictly out of need.
When I started work on setting up the Pump-Probe system, I quickly
realized that I need a software program to act as the brains of the
system. At first, I looked at using the LabView development software, but I
just couldn't get use to the whole idea of graphical development.
I much rather be playing with source code than dragging and droping
widgets around. The next option I explored was to use Java.
This presented a number of problems. Firstly, I couldn't find any
example out there to build upon, so I would be doing every thing from
scratch. Secondly, and more problematic was the fact that I
need to interface with hardware devices such as the stepper motor
controllers, and the oscilloscope. The image shows how the
TimeStep program would be interacting with the various components of
our Pump-Probe system.
I spent about a month researching how to go about accomplishing these
task and to my relief, realized that the Java platform provided the
means to accomplish all I need to do. For communication with the
motorized stage controllers I used Java Communications API
since the commercial controller (Controller A), and the one I build (Controller B) both interfaced
to the computer through the serial port. Connecting to the
oscilloscope was a little more treaky though. For that, I had to
write some native C code, less than 20 lines, and use JNI to call the
API provided by the oscilloscope's vendor. It worked like a
charm. The remaining task of getting data from the spectrometer
was the only thing left to be done for the program to be
functional. This was done in a rather adhoc manner. Rather
than trying to duplicate the control software for the spectrometer, I
decided to just simply read in the ASCII files outputted the
spectrometers software. By taking this approach, I greatly
simplified my developement. I didn't have wrtie all the user
interface and controll code and more importantly I didn't have to mess
with anymore C code. That's always a big plus in my book.
All in all, Java platform proved to be well suited for this task, and
even though the program isn't that polished, it serves it
function. I am in the process of cleaning up the code, and
once that is done I will try to post it. Besides as leaning aid
though, I don't think it's going to have much value for anyone else out
there, unless of course it's modified. For now, here are some
screen shots.
Main window showing the stepping sequence in time, and that's where the
name comes from.
Window showing the control panel for my moterized stage controller.
Window showing the data read in from the
oscilloscope.
Window showing the control panel for the
commercial motorized stage controller.