                      ------------------------------------
                          Precision MicroControl Corp.
                       Motion Control API - Version 3.4.2
                                    5-Jul-2004
                                   ReadMe File
                      ------------------------------------



How to use this document
========================

To view Readme.txt on screen in Notepad, maximize the Notepad window.

To print Readme.txt, open it in Notepad or another word processor, then
use the Print command on the File menu.



Contents
========

 - What's New
 - Upgrading Windows 98/Me
 - Installing The Motion Control API
     * Windows 2000/XP Installation
     * Windows NT Installation
     * Windows 98/Me Installation
 - Syntax Coloring
 - Contacting Technical Support



What's New
==========

Version 3.4.2
-------------
New Features
  - The installer will now automatically upgrade a previous MCAPI install (version
    3.0 or later), it no longer requires you to uninstall the previous version
    first. Note that if you are upgrading from MCAPI version 2.23 or earlier you
    should still uninstall the earlier API, remove the motion controller from your
    PC, and then follow the new installation instructions for your OS (below).


Bug Fixes
  - Occasionally if the only controller in a system was removed the Motion Control
    Panel applet would still show it as installed after a reboot, this has been
    fixed (BR #106)
  - Changed the Motion Control Panel "Remove" button so it is only enabled for
    non-pcbus interfaced controllers on all operating systems except NT4,
    everyone but NT4 now uses Windows plug-and-play for pc-bus installs and
    removals, not the control panel applet (BR #107)
  - Fixed occasional problem with low-level driver and status interrupts that
    would cause first interrupt to return corrupted values (BR #108)
  - Return type for MCEnableInterrupt() in MCAPI32.BAS was missing (BR #109) 
  - Added warning to MCDLG_DownloadFile() online help that this function 
    requires an ASCII handle (BR #110)
  - Modified MCEnableCompare() to accept any numeric parameter instead of just
    one or zero - in some compare modes it needsd to accept a value that was
    equal to the number of points in the compare buffer (BR #112)
  - Fixed MCGetCount() to correctly return compare count (BR #113)
  - Corrected MCConfigureCompare() to properly reset the compare prior to 
    writting new compare parameters (BR #114)
  - Updated capture and compare online help to reflect bug fixes (above)
  - Numerous small bug fixes to the VB.NET sample and header files, see file
    comments for specifics
  

Version 3.4.1
-------------
New Features
  - MCSpy now color codes control characters (new lines, carriage returns, etc.) 
    when capturing data in ASCII mode. This allows the user to discern a true 
    control character such as a line feed (\n) from the string "\n". This change
    makes it easier to verify that all MCCL comand lines end with a proper 
    carriage return (\r) or line feed (\n) character (BR #93).
  - The MCOEM32.DLL DLL has been eliminated for default configurations and is now
    only needed if an OEM has provided special configuration settings. This will
    make it easier for OEMs to manage the MCOEM32 DLL (BR #98).


Bug Fixes
  - The descriptions for pmcputs() / pmcgets() have been updated in the MCAPI 
    Reference online help (BR #92).
  - Fixed a bug in the code that converted MCCL opcodes to ASCII that caused
    Opcodes greater than 295 to be incorrectly decoded. This bug caused a rare
    problem (mnemonics affected are rarely used and mostly impacted the  MCSpy
    utility) (BR #94).
  - The learn button in the joystick demo program was not adding markers to the
    plot window like the joystick button #1 does, it has been fixed (BR #95).
  - There was a problem in version 3.4.0 getting the DC2 to work with WinControl in
    some cases. This has been fixed (BR #96). 
  - A bug in the low-level device driver for Windows NT4 could cause the driver to
    appear to load correclty but fail to allow communications with the controller,
    this has been fixed (BR #97).
  - A bug in the low-level driver for NT4 that prevented proper operation with the 
    DC2-PC controller was fixed (BR #99).
  - Fixed a problem under Windows NT4 where the driver was not getting put into 
    auto start mode following a successful controller configuration. This made it
    impossible for any user without administrator priveleges to start a MCAPI
    application (BR #100).
  - Corrected a configuration problem under NT4 where an ISA-Bus controller 
    configured at a non-default address would have its address reset to the default 
    when opened by the Motion Control control panel applet (BR #101).
  - A problem with calling MCReset() when both ASCII mode and Binary mode handles are
    open (the MCAPI would lock up) has been fixed (BR #102).
  - On Windows NT4 you recent versions of the MCAPI have required you to re-boot after 
    configuring a new controller. This has been fixed and the re-boot is no longer
    required (BR #103).
  - Fixed a bug where the MCAPI was reporting too many available general purpose
    analog output channels on the MFX-PCI. The MFX-PCI includes the servo control
    analog outputs in its channel count, the MCAPI now subtracts the servo outputs
    from the total to arrive at the number of general purpose outputs (BR #104).
  - In the Joystick demo program the front panel display button for the Y-Axis was
    changing the X-Axis description



Version 3.4.0
-------------
New Features
  - MCSpy now uses dynamic linking to allow it to work on older versions of
    the MCAPI (may be used on systems with MCAPI version 2.20 or later).
  - The joystick demo program has an improved interface with easier access
    to display settings and better graphics.
  - The C-Language dynamic linking files have been re-worked to make them
    provide additional compile-time diagnostic information and to work
    better with MFC / ATL / WTL programs.
  - The C-Language header files have been enhanced to better support
    LabWindows/CVI programming.
  - Separate semaphores for the ASCII and the Binary interface are now
    used by MCAPI to improve performance of applications that use 
    multiple controller interfaces (BR #9).
  - The Pos and Status utilities now use dynamic linking and will work with
    versions of the MCAPI as old as 3.0.0.
  - The Pos utility can now display data from multiple controllers at once
    and also offers multi-column display modes (1, 2, or 4 columns).
  - Added support for position recording "recording interval" and "delay"
    commands to the DCX-AT200, requires latest DCX-AT200 firmware (BR #83).
  - A new sample program for the Visual Basic .NET language has been added,
    as have Visual Basic .NET include files MCAPI32.VB and MCDLG32.VB
    The new sample may be found in the Sources\VBDemo.NET folder in the MCAPI
    installation folder.
  - A new sample program for the Borland C++ Builder development platform
    has been added, the new sample may be found in the Sources\BCBDemo
    folder in the MCAPI installation folder.
  - The MCAXISCONGFIG and MCPARAMEX structures have been extended with
    additional system configuration fields.
  - An extended version of the get and set analog functions - MCGetAnalogEx()
    and MCSetANalogEx() - have been added to make it easier for Visual Basic
    programs to work with analog inputs and outputs (BR #72).
  - The function MCEnableEncoderFault() was added to support the encoder fault
    detection feature of the Multiflex controllers (BR #74).
  - The function MCgetVelocityActual() was added to support the reading of 
    the instantaneous actual velocity of an axis (BR #82).
  - Extended version of pmcgetram() and pmcputram() (pmcgetramex()/pmcputramex())
    were added to allow access to the full 32-bit address space of newer
    motion controllers.


Bug Fixes
  - Fixed a bug in Windows 98/ME where removing a motion controller from the
    device manager could lead to a Blue Screen of Death - BSOD (BR #86).
  - Fixed bug introduced into the JoyDemo program in release 3.3.0 where for
    controllers other than the MFX-PCI1000 the displays would remain blank.
    Changing the error checking to use the return value of the MCGetStatusEx()
    call fixes the problem (BR #79).
  - A bug in the low-level MCAPI routines that could cause a large reply to
    be truncated has been fixed (affects all controller models except the
    DC2), this is only a problem for programs that use the low-level
    interface (BR #85).



Version 3.3.0
-------------
New Features
  - Added support for MFX-PCI 1000-series Motion Controllers.
  - Improvements to firmware loading of PCI controllers during Windows 98/ME.
    startup (now similar to Windows NT/2000/XP), MCSTART.EXE no longer required.
  - All controllers (except RS232 and GPIB) now installed via the Windows Add
    New Hardware on Plug-and-Play versions of Windows (everything but NT4).
  - Added additional Visual Basic samples to online help (BR #37-#41).
  - The MCSpy Utility (helpful for debugging motion control programs) is now
    included with the MCAPI (installed with the development component).
  - New functions MCGetStatusEx() and MCDecodeStatusEx() to provide support for
    the new status word layout on the DC4-PCI6xx. These functions are backward
    compatible with existing controllers. Also added status word constants
    MC_STAT_PRI_ENC_FAULT, MC_STAT_AUX_ENC_FAULT, MC_STAT_LOOK_AUX_IDX, and
    MC_STAT_AUX_IDX_FND.
  - Added MCEnableInterrupts() for status word interrupts on MFX-PCI.


Bug Fixes
  - Fixed problem with functions that use extended commands (BR #15).
  - Added additional precision to values stored by MCDLG_SaveAxes() so
    that very small values are saved correctly (BR #23).
  - The Output Deadband mnemonic was incorrectly specified in the MCCL.H
    file for DCX series controllers - was OD, now correct as OB (BR #29).
  - Fix for problem with endless loop in select controller dialog on
    PasDemo (BR #31).
  - Fixed error message reporting in VBDemo during select controller
    dialog where no error code was being shown (BR #32).
  - Fixed error message formatting in PasDemo (BR #33).
  - Updated MCAPI reporting of MC360 stepper rates to match current
    product specs (MC362 was already current).
  - Fixed prototype for MCWaitForIndex() in VB and Delphi headers, online
    help (BR #35).
  - Fixed online help formatting (missing tabs) of MCDLG_ControllerInfo() and
    MCDLG_SelectController() (BR #30).
  - Typo's corrected in the online help C/C++ Digital I/O Sample (BR #55).
  - Typo's corrected in the online help C/C++ Capture Data Sample (BR #56).


Version 3.2.1
-------------
New Features
  - Web link added to About Box of sample programs (BR #8).

Bug Fixes
  - Phase selection box in stepper setup dialog (MCDLG_ConfigureAxis()) is
    now enabled for MC360 steppers in closed loop mode (BR #1).
  - Missing prototype for MCSetTorque() has been added to MCAPI.BAS (BR #3).
  - Error in prototype for MCGetCaptureData() corrected in MCAPI.BAS (BR #4).


Version 3.2.0
-------------
New Features
  - Support for MC302 (dual servo) and MC362 (dual stepper) modules.
  - Support added for setting commutation parameters on the MC320 module.
  - New Status panel utility provides full graphical decoding of the status
    word on any axis.
  - Added functions MCEdgeArm(), MCIsEdgefound(), and MCIsIndexfound() to help
    simplify homing of steppers and servos.
  - Closed loop stepper support on DCX-PCI300 and DCX-AT300, including functions
    to set/get module input mode (MCGetModuleInputMode() / MCGetModuleInputMode()).
  - The MCDLG_ConfigureAxis() function supports closed-loop stepper parameters.
  - MCDLG_RestoreAxis() and MCDLG_SaveAxis() now include the integral option and 
    input mode parameters, as well as closed-loop stepper parameters.
  - Support in API and MCDLG for integral option setting on advanced controllers.
  - PasDemo and VBDemo are now identical in feature and operation to the CWDemo
    sample. The ability to select a controller and auto-initialize a motor's
    settings was added to PasDemo and VBDemo.
  - CWDemo, VBDemo, and PasDemo now only set an axis to Position Mode if they
    can't verify the axis is already in Position Mode (uses new MCGetOperatingMode()
    function), making them more useful (fewer unintended consequences) when other
    motion programs are running.

Bug Fixes
  - MCIndexArm() support was fixed for the DCX-PCI100 and DCX-PC100 controllers.
  - An error in MCIsDigitalFilter() when called with the axis number set to
    MC_ALL_AXES has been corrected.
  - An error in the definition of the MCParamEx data structure in MCAPI32.BAS has
    been corrected (the CanChangeRates field had been incorrectly omitted).
  - MCDLG_RestoreAxis() will return an error (MCERR_NOT_FOUND) if data for the
    specified axis cannot be found.


Version 3.1.0
-------------
New Features
  - Support for the PCI-Bus DCX-PCI100 added.
  - Improved multi-threading support for multiple controllers, provides better
    throughput in a multi-threaded / multi-controller applications.
  - Support for the invert limits flag on the DCX-PC100 (ISA-Bus) added.
  - Added support functions for the Digital Filter mode of MC300 series servo
    modules.
  - Added functions for the high speed capture and compare modes of MC3xx series
    modules.
  - CWdemo and WinCtl will now restore controller settings if Auto-Initialize is
    selected and a Reset is performed (using the menu option).

Bug Fixes
  - Further improvements to the DCX-PCI300 firmware download under Windows 98.
  - Improved handling of the DCX-PCI reset to ensure reset has completed before
    programs may proceed.
  - Improved handling of legacy bus controllers under Windows 98 (DCX-AT, DCX-PC).
  - Many corrections and editions to Online Help, improved formatting.


Version 3.0.2
-------------
New Features
  - Improved support for the DCX-PCI300 under Windows 98 / Windows Me.
  - MCAPI driver now logs any errors to MCAPI.LOG (located in the \Windows
    folder) under Windows 98 / Windows Me. It continues to log errors in
    the Event Log for Windows NT/2000.
  - The Installation Program now allows you to install the MCAPI for all
    users under Windows NT/2000.

Bug Fixes
  - MCBlockEnd() was returning MCERR_CONTROLLER when it should have been
    returning MCERR_NOERROR.
  - The new controller wizard would fail to run on Windows NT 4 if that
    had not had an updated copy of Internet Explorer installed.


Version 3.0.1
-------------
New Features
  - Full support for Windows 98, Windows Me, Windows NT, and Windows 2000.
  - Startup menu group program MCStart auto-starts PCI cards under
    Windows 98.

Bug Fixes
  - DCX-PCI300 configuration info was incorrectly reporting the on-board analog
    input channels as four, should have been zero (fixed).
  - Control Panel works correctly under all platforms.


Version 3.0.0
-------------
New Features
  - This version provides support, including Plug and Play, for the new
    PCI-Bus DCX-PCI300 controller.
  - A new extended version of MCGetConfiguration() - MCGetConfigurationEx()
    provides more complete controller configuration information.
  - A function to report static motor axis configuration -
    MCGetAxisConfiguration() has been added.
  - Extended versions of the controller/module description functions have been
    added to the Motion Dialog package.
  - The LED window from the Motion Dialog package has improved drawing code and
    should work better with non-standard (i.e. custom) color schemes.
  - Supports Windows NT4/2000/XP (current beta).
  - This version supports the Plug and Play DCX-PCI300 controller.
  - CWDemo's auto-display precision calculation has been improved and will
    now detect scaling changes without having to restart the program.
  - WinControl supports dragging and dropping of command files.
  - The command line interface of WinControl has been improved and can
    display auto-started command files as they are being processed.
  - Support for 16-bit programming and Windows 3.1 has been dropped - those
    users should continue to use version 2.23.



Upgrading Windows 98/Me
=======================

There is a bug in versions of the Motion Control API older than 3.4.0 that can
lead to a blue-screen if you attempt to uninstall a motion controller. To avoid
the bug and allow the uninstall to complete please use the follwing sequence:
  - Shut the PC down and remove all motion controllers (this will prevent the
    low-level driver from loading.
  - Boot the PC and use the add/remove programs applet in the Windows Control 
    Panel to remove the Motion Control API
  - Restart the PC to complete the un-install
  - Follow the instructions below to install the new MCAPI for Windows 98/Me



Installing The Motion Control API
=================================

NOTE: This version of the Motion Control API (MCAPI) changes the manner in which
legacy ISA-bus controllers are installed. If you are upgrading from an previous
version it is recommended that you use the Motion Control applet in the Windows
Control Panel to uninstall any existing ISA-Bus motion controllers.

It is recommended that you install the Motion Control API before you install
any motion control cards in your PC. Running the Add Hardware wizard with a 
legacy (ISA-bus) Motion Controller already installed may prevent Windows from 
correctly detecting available PC resources, such as shared memory addresses.


I. Installing the Motion Control API Software
---------------------------------------------
  1.  Launch the Setup program located in the folder that contains the MCAPI, if
      you are installing from the MotionCD select Install from the menu to launch
      Setup.
  2.  Setup may prompt you to restart the PC if it was necessary to update the
      Windows Installer software on your PC. You must restart to continue the
      installation, Setup will automatically restart when the PC has restarted.
  3.  Accept the License Agreement to proceed (required).
  4.  Enter your user information (optional).
  5.  Select either the Complete (automatic) or Custom (manual selection)
      installation type. Complete is recommended.
  6.  Near the end of the installation on Windows 98/Me Setup may prompt you with one
      or more "Insert Disk" dialogs for MCAPI driver related files - simply click OK
      to proceed.
  7.  Click Finish to complete the Software installation.


II. Installing a PCI-Bus Motion Controller in Windows XP/2000/Me/98
-------------------------------------------------------------------
  1.  Shut down your PC, on newer PCs you should also unplug the AC Power cord.
  2.  Install the motion controller in an unused slot.
  3.  Reconnect AC Power (if necessary) and boot the computer.
  4.  Windows should automatically detect the controller and find the driver
      installed earlier. If windows prompts for installation options select
      the "Automatic" option.
  5.  Windows 98/Me may prompt for the location of the driver files. MCAPI installs
      copies of the device driver and Motion Controller firmware in a sub-folder
      named "Drivers" in the main MCAPI installation folder. If you installed MCAPI
      using the default settings, that location would be (for English language PCs):

	C:\Program Files\Motion Control\Motion Control API\Drivers

      The MCAPI Setup program should have already added this path to the list of
      recently used locations, allowing you to select it easily from the list.


III. Installing an ISA-Bus Motion Controller in Windows Me/98
-------------------------------------------------------------
  1.  If the motion controller is already installed in your PC shut down the PC, on
      newer PCs you also should unplug the AC Power cord. REMOVE your motion controller
      from the PC. Running the Add Hardware wizard with a legacy (ISA-bus) Motion
      Controller already installed may prevent Windows from correctly detecting
      available PC resources, such as shared memory addresses.
  2.  From the Windows Start Menu select Settings | Control Panel.
  3.  Double click on the "Add New Hardware" icon in the Control Panel.
  4.  Select Next to begin the Wizard.
  5.  Select Next again to start the search for new hardware.
  6.  The wizard will then prompt to search for non Plug-and-Play
      hardware. Select the "No, I want to select the hardware from a list" option
      on the Wizard and click Next to continue.
  7a. If this is the first controller you are installing select "Other Device" from
      the list of device classes (types), otherwise proceed to 6b below. Locate and
      select Precision MicroControl in the list of Manufactures. Select your Motion
      Controller model from the list of models. Skip to step 8.
  7b. If you have already installed a Motion Controller using this version of the
      MCAPI there should be a an entry in the device classes (types) list for 
      "Motion Control." Select it and click Next to view the list of Motion
      Controllers. Select your Motion Controller model from the list of models.
  8.  If the default settings for memory or I/O resources are not acceptable Windows
      will present a suggested range. These non-default settings will require jumper
      or rotary switch position changes on the Motion Controller itself. See your
      User's Manual for specifics.
  9.  Click Next then click Finish to complete the Wizard.
 10.  Shut down the PC (the Wizard may do this for you), on newer PCs you also should
      unplug the AC Power cord. Change the jumpers or rotary switch on the Motion
      Controller (if necessary) and install the card in an available ISA slot. Reboot.


IV. Installing an ISA-Bus Motion Controller in Windows XP/2000
--------------------------------------------------------------
  1.  If the motion controller is already installed in your PC shut down the PC, on
      newer PCs you also should unplug the AC Power cord. REMOVE your motion controller
      from the PC. Running the Add Hardware wizard with a legacy (ISA-bus) Motion
      Controller already installed may prevent Windows from correctly detecting
      available PC resources, such as shared memory addresses.
  2.  From the Windows Start Menu select Settings | Control Panel.
  3.  Double click on the "Add/Remove Hardware" icon in the Control Panel. NOTE that
      this is named simply "Add Hardware" in Windows XP.
  4.  Select Next to begin the Wizard.
  5.  Select the "Add/Troubleshoot device" option (default) and click Next
      to continue.
  6.  Wizard will scan for Plug-and-Play devices and then present you with the "Choose
      Hardware Device" screen. Select "Add a New Device" and click Next to continue.
  7.  Select the "No, I want to select the hardware from a list" option
      on the Wizard and click Next to continue.
  8a. If this is the first controller you are installing select "Other Device" from
      the list of device classes (types), otherwise proceed to 7b below. Locate and
      select Precision MicroControl in the list of Manufactures. Select your Motion
      Controller model from the list of models. Skip to step 9.
  8b. If you have already installed a Motion Controller using this version of the
      MCAPI there should be a an entry in the device classes (types) list for 
      "Motion Control." Select it and click Next to view the list of Motion
      Controllers. Select your Motion Controller model from the list of models.
  9.  If the default settings for memory or I/O resources are not acceptable Windows
      will present a suggested range. These non-default settings will require jumper
      or rotary switch position changes on the Motion Controller itself. See your
      User's Manual for specifics.
 10.  Click Next then click Finish to complete the Wizard.
 11.  Shut down the PC (the Wizard may do this for you), on newer PCs you also should
      unplug the AC Power cord. Change the jumpers or rotary switch on the Motion
      Controller (if necessary) and install the card in an available ISA slot. Reboot.


V. Installating Motion Controllers (all) in Windows NT4
-------------------------------------------------------
  1. Shut down your PC, on newer PCs you should also unplug the AC Power cord.
  2. Install the motion controller in an unused slot
  3. Reconnect AC Power (if necessary) and boot the computer
  4. Navigate to the windows Control Panel and double-click on the Motion Control
     applet.
  5. Click on the "Add..." button in the Motion Control applet and follow the
     wizard to install the drivers for your controller



Syntax Coloring
===============

The Motion Control API includes a keyword file for use with Microsoft's
Developer Studio/Visual Studio User Defined Keyword highlighting feature. User
Defined Keyword highlighting permits you to easily identify specific keywords
in source code files. The included keyword file contains all of the MCAPI C/C++
function names and constants.

To enable syntax highlighting first exit Developer Studio or Visual Studio, if
it is running. Next locate the MCAPI file USERTYPE.DAT. By default USERTYPE.DAT
is installed in \PROGRAM FILES\MOTION CONTROL\MOTION CONTROL API\SOURCES. Copy
this file to the same directory where Developer Studio executable MSDEV.EXE or
DEVENV.EXE is installed:

   Dev. Studio Version 5.0 ('97)    \PROGRAM FILES\DEVSTUDIO\SHAREDIDE\BIN
   Dev. Studio version 6.0          \PROGRAM FILES\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN.
   Visual Studio .NET 2003          \PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\COMMON7\IDE

NOTE: if you already have a USERTYPE.DAT file installed for Developer
Studio 97 you may use a text editor to merge the MCAPI USERTYPE.DAT keywords
with your existing USERTYPE.DAT keyword file.

By default Developer Studio 97 highlights user defined keywords using the same
color that it uses for language keywords (blue). To make the user defined
keywords stand out select Tools | Options from the Developer Studio menu bar.
Click on the Format tab and in the Colors box select User Defined Keywords. Use
the Foreground and Background options to select unique colors for the user
defined keywords.



Contacting Technical Support
============================

Technical support contact information is included in the online help files
supplied with the Motion Control API. 
