A while back, I picked up a Compaq iPaq Pocket PC from a Ham auction. This is a nearly decade old handheld PC. It features a 240×320 color LCD screen, a touch stylus input, and a charging cradle with both a USB and REAL serial port. Wasn’t really sure what I was going to do with it, but at five bucks it was too good of a deal to pass up.
Recently, I was considering building an external display for my Trimble Thunderbolt GPS. Then I had the “aha” moment of using the iPaq as a display. Since it already had a serial port, all that was needed was to build a null-modem serial cable to connect the iPaq to the Thunderbolt and a SMOP (small matter of programming).
The iPaq uses Windows CE 3.0. While I have never used this before, I have a significant amount of experience programming Win32. The first challenge was locating the tooling to program this old relic. After several false starts, I found that Microsoft eMbedded Visual Tools 3.0 was the best (only?) choice for programming this via native APIs. Programming this via managed code using .NET Compact Framework 1.0 was another choice that I did not pursue.
My goal was simply to produce a status display for the GPS – basically a glorified clock. This program is not intended to compete with LadyHeather, which is a full featured program for monitoring and managing the Thunderbolt. Since the idea was to have a display head for the thunderbolt, I named it ThunderHead.
Follow the download link at the bottom of this page. Extract the ZIP and copy ARMRelThunderHead.exe to the WindowsStart Menu directory on your Pocket PC device.
Both the iPaq cradle and Thunderbolt have female DB-9 connectors for their serial ports. You will need to construct a null-modem cable to connect the two. Have pin 2 of one connect to pin 3 of the other and vice-versa. Wire pin 5 straight through. No other connections need to be made.
Upon startup, the program will attempt open COM1: and attempt to connect to the Thunderbolt at 9600 baud, no parity, 8 bits, 1 stop bit. These parameters are not adjustable and are compiled into the program. If the port cannot be opened, a message box will be displayed. The program expects the Thunderbolt to send primary and supplemental timing packets once a second (which is the default behavior for the Thunderbolt). If two seconds elapse without receiving data, the display is blanked out and “No Contact” is displayed.
Figure 1 shows a screenshot of the program in its “normal state”. The first two lines display the obvious – the time (in large numerals) and the date. The “UTC” indicates the time scale in use. If the GPS is configured to display GPS time instead, or is first booted, “GPS” will be displayed. These lines of information come from the TSIP Primary Timing Packet (0x8f-ab). For more information, consult the Thunderbolt Manual.
The next line displays the disciplining state. If the unit enters a holdover mode, this line will also indicate the number of seconds the unit has been in holdover (see Fig 2).
Below the disciplining state is the disciplining activity. Below that is the GPS decoding status. These states come from the TSIP Supplemental Timing Packet (0x8f-ac), which again is detailed in the Thunderbolt manual.
The bottom half of the screen is a grid of numerical data also extracted from the Supplemental Timing Packet. This is the PPS offset (in nanoseconds), the frequency offset (in parts per billion), the DAC voltage, and the operating temperature. The last two lines are the critical and minor alarm flags, displayed in hex. Perhaps someday I will break these out into their meanings, but for now you will have to look them up in the manual. My primary goal for this application is “what time is it?”, and “is the unit working correctly?”.
Windows CE leaves applications running even if the “X” button is pressed. If you switch away from Thunderhead and re-launch it, the existing instance will be reactivated. If you need to shut it down completely (to release the serial port for example), go to the Windows CE Settings page, click the “Memory” icon, choose the running programs list, and stop the program.
Licensing and Support
This program is freely available. You may distribute and modify it as you like. If you do use it, please leave a comment on this webpage so that I know there is actually interest. Likewise, if you have a problem, drop me a comment and I’ll see what I can do. I don’t want to invest a lot of effort in this if I’m the only one in the world using it :-)
Like all freeware, there is no warranty expressed or implied and no guarantee of support. Please don’t use this to control your nuclear power plant or weapons system.
The source code is included in the ZIP file. You will need Microsoft eMbedded Visual Tools 3.0 to compile/deploy the code. Version 4.0 will not work. This package can be found using your search engine of choice.
Latest version available here: thunderhead-v1.0.zip