SatPC32 to ACLog interface

SatPC32 --> ACLog interface application

If you are impatient you can just download the exe file or the complete project below, but I recommend you read the rest of the page before! 



Download the exe file: ACLogSatPC32.exe 

Download the C# Visual Studio 2022 project: Complete project

Long, shaky and at times boring video that shows the program in practical use. This was while working RS-44 satellite (this is with an older version of the application).

Background

I use ACLog (https://www.n3fjp.com/aclog.html) as a logging program for all my Ham Radio contacts. I have tried different programs and have come to the conclusion that ACLog does what I need, is pretty easy to use and allows me to change layout etc in a friendly way. It also helps a lot that the author, Scott N3FJP, is very active with updates and help.


For satellite use, I run the SatPC32 (http://www.dk1tb.de/indexeng.htm) program from Erich DK1TB. SatPC32 can control your rotator (keeps your antennas pointed to whatever satellite you have selected) and it will connect to your radio and compensate for doppler shift. The program has many years behind it and it has been adapted and modified so that it does the job it is meant to do, just perfect.


ACLog also has a possibility to connect to the radio you are using. By doing so, it can get the mode and frequency directly from the radio and put this info into the log. This works fine for typical HF work etc. 


For satellite work, there are some further info that is needed in the log. If you have setup ACLog to send your logs to LoTW, then you need the log to contain the two fiels PROP_MODE and SAT_NAME for it to be recognized as satellite contacts. You can of course just set these fields manually (PROP_MODE to "SAT" and SAT_NAME to "RS-44" as an example). However, I have a tendency to forget changing the satellite name etc, so there is room for some improvements here.


Another more serious problem is when you connect a Icom IC-9700 radio to ACLog and the radio is in satellite mode, ACLog is only able to fetch the receive (downlink) frequency from the radio. In the log you want the transmit frequency. Again, you could simply disconnect ACLog from the IC-9700 radio and do this manually.

The solution (at least for me)

Because of the above, I have made a small windows application "SatPC32 --> ACLog".


This program acts as a "gateway" between SatPC32 and ACLog and sends the relevant live data from SatPC32 to ACLog. This has the effect that you do not need to fill any data about the satellite and mode manually into ACLog.


SatPC32 acts as a DDE server. It publishes data about the selected satellite to the service "SatPC32", topic is "SatPcDdeConv" and item is "SatPcDdeItem". Item will contain "** NO SATELLITE **" if no satellite is selected or if the one selected is below the horizon. If the selected satellite is above the horizon (elevation > 0) the data may look like: "SNAO-73 AZ91,7 EL1,9 UP435132865 UMLSB DN145962393 DMUSB MA209,5 RR-4,9154719".

This string contains the satellite name (this must match the AMSAT convention for LoTW to recognize it!), the current azimuth and elevation, the uplink frequency and mode, the downlink frequency and mode and a couple of numbers not relevant to this use.


ACLog has an API interface that is very well documented. Using this interface you are able to control pretty much everything in the program. You can set text in fields, you can get notifications when a field is changed, query the logbook and much much more. My "SatPC32 --> ACLog" uses this interface to inject the correct text in the satellite-relevant fields. The ACLog API communicates over a traditional TCP socket.


The "SatPC32 --> ACLog" needs to be running for this transfer of information to take place. When started, it will try to connect to SatPC32 and to ACLog. If you stop one of the two programs, "SatPC32-->ACLog" will continue to try and connect. Once it has connected to both SatPC32 and to ACLog it will inject the data from SatPC32 into the fields in ACLog. 


The application also sends the data it receives from SatPC32 out on a UDP port. You can specify the IP address and the port number of the receiver. This is used (in my case) to feed data directly to my URC - Ultimative Rotor Controller but can be used for other purposes if needed.

Configuration and setup

SatPC32 does not need any setup for this to work. As long as you have it connected to your radio and it is able to control the radio, all is good (see DK1TB website about the setup etc of SatPC32 if you have not already done so)


ACLog needs a couple of things configured. First of all, it needs its TCP API server enabled. This done from "Settings-> Application Programming Interface (API)..." menu item.


It is important you need place a checkmark in the field "TCP API Enabled (Server) and that you leave the default port set to 1100, see the screenshot to the right.


You also need to rename the "OTHER7" and "OTHER8" fields in ACLog to the values "FREQ_RX" and "BAND_RX". This enables the application to set these according to the information from SatPC32. The fields are renamed from "Settings->Other Field titles and fill behavior" in ACLog.


In ACLog you can change and design the main entryfield area as you like. I have set it to the format shown below, this fits me currently the best. You can have different layouts, these can be loaded from files (see the excellent ACLog documentation for more info on this).

Above you can see the fields that the "SatPC32 --> ACLog" application automatically sets based on the current data from SatPC32. If no satellite is selected or the one selected is below the horizon, the fields are empty. Please note that the "Band" and "BAND_RX" are hidden as I did not see any reason to show them on the form as they are filled automatically by the SatPC32->ACLog" application.

Running "SatPC32 --> ACLog" program

There is no installation to do, no setup, no hidden files etc. The program just consists of a single exe file: "ACLogSatPC32.exe". You can place this file where you want. When you start it, it will continously try to connect to both SatPC32 and ACLog. Once it is connected to both, it will start transfer data from SatPC32 to the fields in ACLog.

At the same  time it will also show the current data it receives from SatPC32.


Below are a few screenshots from the program showing various situations (not all are from the current version).