Volume 9

Chapter 59

336 - Moving to 64 Bit Windows 7 2015-05-22

Always a challenge to rebuild a development system.


I use this to set up symbolic links to the Network Storage Device

Path Editor

I use this (RapidEE) to manage the system and application path environment variables

Bogus Warning error when XE8 is started

OMP:Warning #71: KMP_AFFINITY:affinity not supported, using "disabled".

set environment variable KMP_AFFINITY to either 'none' or 'disabled':


Move KnobCtrl.ocx to both C:\Windows\System32 and C:\Windows\SysWOW64 (I don't know why - just do it)

Run regsvr32 KnobCtrl

Make sure there is an entry in the registry at:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\vttoth.com] [HKEY_LOCAL_MACHINE\SOFTWARE\vttoth.com\KnobCtrl] "LicenseKey"="4D670AD8:jim@seti.net"

AND at:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\vttoth.com] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\vttoth.com\KnobCtrl] "LicenseKey"="4D670AD8:jim@seti.net"

(I don't know why - just do it)

From XE8 add OCX the usual way.

335 - XE8 Skin 2015-05-15

Getting back the old school skin for XE8

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Embarcadero\BDS\16.0\ModernTheme] "FontName"="Segoe UI" "FontSize"=dword:00000009 "MainToolBarColor"="clBtnFace"

334 - Block Internet Access by App 2015-05-13

During some development I had to Google my brains out to remember how to block an app I was developing from gaining access to the Internet until I was ready. Here is how:

  1. From start menu, search for "Firewall" and select Windows Firewall with Advanced Security

  2. Choose Outbound Rules from the tree at the left.

  3. Choose New Rule... from the menu at the right.

  4. New Outbound Rule Wizard opens. This is really easy now:

    a. Select Program as rule type.

    b. Select the program's EXE file.

    c. Choose Block the connection.

  5. Choose the profile this rule applies to. If in doubt, select all three.

  6. Add the descriptive name (you may want to delete this rule later).

333 - New Architecture 2015-03-28

I decided that the current Control Panel was simply to confusing to add any more functions to and it had to be rewritten. I also decided that it was time to bit the bullet and switch to separate servers for the Antenna, Mount, Receiver, File Manager, Spectrum Analyzer, Waterfall, sky Map and Data Base.

This should smooth out each of the servers operation since they will be running on different threads in the operating system and will have the added advantage the they can live on different computers and possibly different networks.

I looked the following candidates for Client/Server framework:

Frameworks Candidates
Candidate URL Problem
Cromis http://www.cromis.net/blog/downloads/ Uses Named Pipes but a bit long in the tooth now
Delphi XML-RPC http://xmlrpc-c.sourceforge.net/ Sourceforge has a Delphi example but its way out of date
Named Pipes (several Google it) This looked like the right answer for a local network but rather confusing to use
Remote Objects http://www.remobjects.com/ This is the origin of the RPC system I used a long time ago. It is well developed no. A bit pricey $400 for the Delphi SDK but worth it.

So I bit the bullet and bought a copy of Remote Objects Delphi SDK and now trying to figure out how to use it.

I comes with all the protocols, platforms, channels and message types possible so I should find a working combination. Plus it has an SDK for C# when I get the point of connecting up with SDRSharp and HackRF One.

333 - Remote Objects 2015-03-28

Work Flow - I asked RemObjects what the work flow was to setup and develop a client/server with RO. What they came back with was unintelligible so I had to come up with it myself. This is it:

Compile and test

1. Load the project into the project manager, Build All and Test to make sure it works.

2. Select the Server


3. Select RemObjects SDK from the top menu

4. Select Edit Service Library

5. Make Changes as necessary

6. Select RemObjects SDK from the top menu again

7. Select 'Regenerate Units from RODL' This will rebuild the Interface file (_Intf.pas) and the Invoker (_Invk.pas) but will NOT rebuild the Implementation (_Impl.pas)

8. Open the Implementation file and fix it to accept the new function


9. Fix the matching Client function in the client Main router as needed. Notice that the Interface file is the same for both Client and Server

10. Rebuild and test again.