Thunderbolt Monitoring for Pocket PC

Motivation

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.

Getting Started

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.

Program Functionality

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.

Fig 1 - Screenshot (normal state).

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).

Holdover mode

Fig 2 - Screenshot showing holdover.

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.

Download Links

Latest version available here: thunderhead-v1.0.zip

5 Responses to Thunderbolt Monitoring for Pocket PC

  1. WA7NE says:

    Hi Justin,
    Great stuff. I have several iPaqs and a Thunderbolt so I will be giving this a try. I’ve been saving several iPaqs for just such a possibility. I’m not very adept at programming but I did manage to program a simple calculator for my iPaq using MS eMbedded several years ago just to prove I could. I saw some possibilities for using the iPaq to display data but never had the time to pursue them further.

    I’m currently building a LCD display for my Thunderbolt using a PIC. I’m far enough down that road to not change the design. But, I do have another case that will fit the iPaq display. Thanks to you, that may become my next project. I’m very appreciateive that you posted your work.

    Just wanted to let you know there is interest in your work and to encourage you.

    tnx & 73
    Wayne, WA7NE

  2. WA7NE says:

    Gads, Sorry, meant to say Justin, not Robert.
    Feel free to edit the error out.
    tnx
    wa7ne

  3. Didier says:

    Justin,

    I have no familiarity with Windows CE programming but I have done a fair amount of C and a small multitude of other languages. Do you know if Win CE can use a COM port over Bluetooth? Would it be just a matter of pointing your software to another serial port?

    My PDA (a Dell) runs PocketPC 2003 and has Bluetooth (but no hardware serial port), and I have a couple of BT/serial adapters.

    Thanks in advance,

    Didier KO4BB

    • justinpinnix says:

      Hi Didier,

      Unfortunately I don’t know. My only familiarity with Win CE was what I learned when writing Thunderhead. I did a quick web search and found some mentions of something that makes me think the answer is yes: http://www.oziexplorer3.com/ozice/faq_ppc2003.html However, I don’t have any bluetooth devices, or even a working Thunderbolt anymore, so no way for me to test it out. Please let me know if you are able to get it to work.

      73 de AJ4MJ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s