Portdrvr

 

I'm a systems software developer for a large financial corporation.  I come from an EE background and once upon a time, I got to do fun things like CAT and data acquisition.  Getting data out of Microsoft's Flight Simulator® and sending it to a motion platform has been a cool diversion for me.  I found a way in 1999 to do this in a quick manner and send it to the parallel port.  My wife gave me a Parallax BASIC stamp for my birthday in 2005 and after tinkering with it for a few days connecting it to everything I could think of, I realized an even easier and cheaper way to interface FS with a motion platform.  I pulled out the old code and modified it to use the serial port.

The original DLL sent pitch and bank position only, with no value modification except max limits.  With the help of a couple of other motion platform experimenters' testing, I've implemented acceleration/deceleration and bank washout.  I've developed the software implementation and hope to learn from their experiences with the physical implementation so I can hopefully construct my own motion platform someday.

The current version is stable and the project is dead; therefore, I do not plan to post new versions or pursue further enhancements.   Due to spam, the email address in the embedded text file is also no longer valid.   I offer this utility to the community on an as-is basis with confidence it works as designed as proven by other hobbyists. Have fun!


Here are related sites - visit them for more info:

Roland's page

Thanos' page  - in Greek - good pictures of joyrider implementation

Click here for Thanos' Video and here and here and here.


Not using portdrvr, but good info:

Kyle's page

Jim's page

 

Quick overview

1.  My DLL grabs flight data from MS Flight Simulator®.

2.  User-editable configuration file controls manipulation of this data.

3.  Data is output via a serial COM port.

4.  Serial stream sent to an interface (BASIC stamp recommended).

5.  Interface moves a motion platform/cockpit in response to flight data.

To my knowledge, no other standalone interface utility allows the level of control that portdrvr does with negligible delay - this DLL was coded in C and assembly language and is super fast.  Max pitch and bank limits, effect kick-in thresholds, effect levels, and exponential washout curves are all user-controllable via the configuration file.  In addition, the following boolean outputs are also sent in the stream for lamp indicators or effect transducers:  landing light, on-ground, stall, overspeed, autopilot, brakes, gear, and flap indicators.

 

The DLL - what to expect

Portdrvr.zip contains portdrvr.exe, an automated install.  When executed, you'll be asked to agree to an industry-standard EULA that states that the utility is for non-commercial use only.  The install utility will then search for an installed version of MS Flight Simulator®.  Once you confirm the location, the utility will copy portdrvr.gau (the interface utility), portdrvr.txt (instructions), and the EULA to the applicable directories.  Portdrvr does not edit the system registry or modify any system files - uninstall is simple and complete.  Editing portdrvr.gau for purposes of reverse engineering or modification will disable the DLL and deleting or modifying portdrvr.txt will do the same.  As this DLL works at the hardware level, more serious damage could also occur as a result of this action.  This is not a joke, this ensures  that proof resides on your PC indicating that you agreed to the EULA.  Corporate rip-offs occur and this is to protect our efforts as experimenters.  This protects your efforts as well and I hope you understand.  Note:  The editable configuration file is created the first time the DLL is accessed and this is detailed in portdrvr.txt.  This is the only file that may be modified.

 

How do I get the utility?

Roland has graciously posted it on his site and it is available for download here, with documentation.

 

I ran the executable...what next?

Look in the directory you chose for installation and open the file named portdrvr.txt.  The technical specifications and general info is contained in that file.  For beginners or those seeking a complete system overview, Thanos' research notes and documentation are available in English here.  Roland has a lot of technical information for unique motion platform design at his site.

 

Why should I use this utility?

1.  It's free.

2.  It's super fast.

 

Testing

The easiest way to test is to connect two serial ports with a null modem cable.  If your PC has two ports, then this can be done on one PC.  Set portdrvr to use one COM port by modifying portdrvr.cfg.  Open a session of Windows HyperTerminal on the PC being used to monitor (or set up the same PC to use the other COM port).  Baud rate, parity, and stop bits must be set the same.  If everything is set up correctly, you will see an output similar to this (depending on the number of outputs you've selected in portdrvr.cfg):

(this screenshot was taken using the 5/2007 version)

 

Help!  I don't know where to begin!

Roland's page linked above is a treasure trove of info.  Dig deep, it's all there (thank you Roland).

Thanos has developed excellent documentation with code and schematics.  He tells all here.

 

All contents ©2009 Keith Daniel