Tom's RC Servo Controller SC-8000 Driver Software

An unofficial driver by David Buckley.

Introduction

Tom's RC make a fabulous gizmo called the SC-8000, which allows one to drive RC servos from a computer, across the airwaves, using a standard RC transmiter / receiver.

Basically, the SC-8000 plugs into your computer using a USB port, and using a specific interface cable connects to the trainer port of a standard RC transmitter. One can then write software that enables one to remotely control servos or other devices through thin air.

It really is far more fun than it sounds!!!

Software for the SC-8000

The SC-8000 presents as a serial port, and the protocol it accepts is fully documented on Tom's RC site. However, its a bit tedious, and in recognition of this Tom's RC provide a DLL intended to relieve the programmer of everything to do with serial ports, providing a simple high level interface to twiddle servos. Unfortunately the DLL is compiled using a specific compiler and C++ type-safe linkages that mean that its hard to use the DLL from anything other than the supported compiler.

Thus I have created a functionally similar DLL, that implements the same interfaces using the same prototypes as the Tom's RC supplied DLL. However, although all five entry points are present and linkable, only four of them actually work, as per this table:

FunctionSupported
SC8_Initialize()Yes
SC8_SendPositions()No
SC8_SendPos()Yes
SC8_SendDigital()Yes
SC8_CleanUP()Yes

My driver uses standard linkages, and thus can be used without difficulty from most computer languages. The interfaces work as per the documentation on Tom's RC site.

The only other warning comes from the digital outputs section - my SC-8000 doesnt have those outputs, so I cant test the code, but it seems to do what the specification says it should.

Downloads

Required DLL: ttisc8if.dll (20K)

Source for the curious: ttisc8if.bas (12K, compile using PowerBasic 7 or 8)

This driver is now at version 1.1, the exported defintion of SC8_CleanUP() was incorrect, it was SC8_CleanUp(), lower case 'P'. For case inseneitive linking it doesn't matter, but if you link with case sensitivity then things were not all correct....

This driver is licenced under the GNU General Public License, the author requests (but under the terms of the GPL cannot demand) that if you make any improvements or modifications to the driver you send a copy to him.

Function Definitions

C

int SC8_Initialize (int PortNum);

void SC8_SendPositions (int BoardNum, unsigned char Mask, char DIO, unsigned short *pValue);

void SC8_SendPos(int BoardNum, int Axis, unsigned short Position);

void SC8_SendDigital(int BoardNum, int DigitalAxis, int ONOFF);

void SC8_CleanUP (int BoardNum);

Delphi

function SC8_Initialize(PortNum: Integer): Integer; stdcall; external 'ttisc8if.dll';

procedure SC8_CleanUP(BoardNum: Integer); stdcall; external 'ttisc8if.dll';

procedure SC8_SendPos(BoardNum: Integer; Axis: Integer; Position: Word); stdcall; external 'ttisc8if.dll';

Links

Tom's RC makers of the SC-8000 - Thanks guys, without the SC-8000 none of this would be possible.

Related Pages

Click here for an example of the driver in use, being driven by PCStage in a theatrical environment, plus a lot of general notes about the SC-8000, and some Futaba mods


You can contact the author by using this contact form.