Subversion Repositories f9daq

Compare Revisions

No changes between revisions

Ignore whitespace Rev 363 → Rev 364

/cvi/instr/ThorlabsLTS.c
0,0 → 1,679
 
// This example uses the Kinesis C++ API to move and control Thorlabs integrated stepper motor, LTS, K10CR1, and MLJ stages.
/* Default parameters
HS LTS300C 300mm Stage
 
General
 
Name = HS LTS300C 300mm Stage
Stage ID = Unknown
Axis ID = SingleAxis
 
Home Settings
 
HomeDir = MOT_Reverse
HomeLimitSwitch = MOT_ReverseLimitSwitch
HomeVel = 2
HomeZeroOffset = 0,5
 
Jog Settings
 
JogMode = MOT_ExtSingleStep
JogStopMode = MOT_Profiled
JogStepSize = 5,0
JogMinVel = 0,0
JogAccn = 10,0
JogMaxVel = 10,0
 
Control Settings
 
DefMinVel = 0,0
DefAccn = 20,0
DefMaxVel = 20,0
 
Limit Settings
 
CWHardLimit = MOT_LimitSwitchMakeOnContact
CCWHardLimit = MOT_LimitSwitchMakeOnContact
CWSoftLimit = 3,0
CCWSoftLimit = 1,0
SoftLimitMode = MOT_LimitSwitchIgnored
LimitsSoftwareApproachPolicy = DisallowIllegalMoves
 
Physical Settings
 
Pitch = 1,0
StepsPerRev = 200
GearboxRatio = 1
TST101 Stage ID = 0
UseDeviceUnits = False
Units = MOT_Linear
DirSense = MOT_Backwards
MinPos = 0,00
MaxPos = 300,00
MaxAccn = 50,0
MaxVel = 50,0
MaxContinuousVel = 40,0
Factor = 1,0
UnitsTxt = mm
DisplayDP = -1
 
Misc. Settings
 
BacklashDist = 0,05
MoveFactor = 30
RestFactor = 5
 
Stepper Motor Settings
 
Pitch = 1,0
StepsPerRev = 200
GearboxRatio = 1
TST101 Stage ID = 0
UseDeviceUnits = False
Units = MOT_Linear
DirSense = MOT_Backwards
MinPos = 0,00
MaxPos = 300,00
MaxAccn = 50,0
MaxVel = 50,0
MaxContinuousVel = 40,0
Factor = 1,0
UnitsTxt = mm
DisplayDP = -1
 
Velocity Profile Settings
 
BowIndex = 0
 
Button Settings
 
ButtonMode = MOT_JogMode
ButtonPos1 = 10,0
ButtonPos2 = 20,0
 
Potentiometer Settings
 
FPControls = True
PotZeroWnd = 1
PotVel1 = 5,0
PotWnd1 = 50
PotVel2 = 10,0
PotWnd2 = 80
PotVel3 = 15,0
PotWnd3 = 100
PotVel4 = 20,0
 
 
*/
 
//CVI Add dll path to: Options>Environment>Include Path> C:\Program Files\Thorlabs\Kinesis
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <windows.h>
#include <userint.h>
#include <utility.h>
#include "ThorlabsLTS_ui.h"
 
 
#include "ThorlabsMotionControlIntegratedStepperMotors.h"
 
 
void LTS_waitMove(int i, int timeout);
void LTS_waitHome(int i, int timeout);
char serialNumbers[][9] = {"45388004", "45387934","45388034"};
 
// Set number of microsteps, found in APT communications protocol. Should be changed to 136533 if using K10CR1
int StepsPerMm = 409600;
double SingleMove=1; // in mm
 
int LTSTimerOut=0;
int p1_h;
 
 
int CVICALLBACK LTS_Timeout (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
switch (event) {
case EVENT_TIMER_TICK:
LTSTimerOut = 1;
printf("LTS timeout\n");
break;
}
return 0;
}
 
/*
void LTS_Timerast (int signumber) {
LTSTimerOut = 1;
printf("TIMEOUT !!!\n");
SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 0);
}
*/
 
void LTS_Tmlnk (int tout) {
LTSTimerOut = 0;
SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_INTERVAL, (float)tout/1000.);
SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 1);
}
 
void LTS_Tmulk ( void ) {
SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 0);
LTSTimerOut = 0;
}
 
void LTS_Home(int i,int wait){
 
//Set up homing parameters.
MOT_HomingParameters homingParams;
ISC_GetHomingParamsBlock(serialNumbers[i], &homingParams);
homingParams.direction = MOT_Reverse;
ISC_SetHomingParamsBlock(serialNumbers[i], &homingParams);
 
//Clear existing messages in the hardware buffer.
ISC_ClearMessageQueue(serialNumbers[i]);
 
//Home the stage and wait for the return message before continuing.
ISC_Home(serialNumbers[i]);
printf( "Start Homing...\n");
if (wait) LTS_waitHome(i, wait);
// printf( "Homed...\n");
}
 
int LTS_Init(int i){
 
int errorReturn = ISC_Open(serialNumbers[i]);
/*
double stepsPerRev = 200;
double gearBoxRatio = 1;
double pitch = 1;
int err = ISC_SetMotorParamsExt(serialNumbers[i], stepsPerRev, gearBoxRatio, pitch);
err = ISC_GetMotorParamsExt(serialNumbers[i], &stepsPerRev, &gearBoxRatio, &pitch);
// No effect
*/
Sleep(1000);
if (errorReturn == 0){
printf( "Device %d (serial %s) Connected... \n",i, serialNumbers[i]);
//Settings are loaded based on Stage Name. The integrated stepper class holds LTS and K10CR1 Information.
ISC_SetLEDswitches(serialNumbers[i], 0); // disable LED
ISC_StartPolling(serialNumbers[i], 50);
Sleep(1000);
} else {
printf( "Error connecting device %d (%s)\n",i, serialNumbers[i] );
}
return errorReturn;
}
 
void LTS_Close(int i){
//Close the stage
ISC_StopPolling(serialNumbers[i]);
ISC_Close(serialNumbers[i]);
printf( "Device Disconnected...\n");
}
 
void LTS_StopProfiled(int i){
ISC_StopProfiled(serialNumbers[i]);
}
 
void LTS_MoveAbsolute(int i, double position, int wait){
ISC_SetMoveAbsolutePosition(serialNumbers[i], (position*StepsPerMm));
ISC_MoveAbsolute(serialNumbers[i]);
if (wait) LTS_waitMove(i, wait);
}
 
void LTS_MoveRelative(int i, double distance, int wait){
ISC_SetMoveRelativeDistance(serialNumbers[i], (distance*StepsPerMm));
ISC_MoveRelativeDistance(serialNumbers[i]);
if (wait) LTS_waitMove(i, wait);
}
 
 
double LTS_GetPosition(int i){
int device_unit = ISC_GetPosition(serialNumbers[i]); ;
double real_unit = 1.0*device_unit / StepsPerMm;
//const int unitType = 0 ;// 0 .. distance , 1 .. velocity, 2 .. acceleration
// does not work int err = ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit,&real_unit, unitType);
// printf("err = 0x%x pos %d %f\n", err ,device_unit, real_unit);
return real_unit;
}
 
unsigned int LTS_GetStatus(int i){
return ISC_GetStatusBits(serialNumbers[i]);
}
 
 
int LTS_Enable(int i){
return ISC_EnableChannel(serialNumbers[i]);
}
 
 
int LTS_Disable(int i){
return ISC_DisableChannel(serialNumbers[i]);
}
 
 
int LTS_GetNumberPositions(int i){
return ISC_GetNumberPositions(serialNumbers[i]);
}
 
int LTS_Open(){
 
TLI_BuildDeviceList();
TLI_DeviceInfo info;
int err=0;
for (int i=0;i<3;i++){
TLI_GetDeviceInfo(serialNumbers[i], &info);
Sleep(100);
err = LTS_Init(i);
printf("%s err=%x\n", info.description, err);
if (err) return err;
}
return 0;
}
 
 
void LTS_RegisterMessageCallback(int i, void (* functionPointer)()){
ISC_RegisterMessageCallback(serialNumbers[i], functionPointer );
}
 
void LTS_GetRealValueFromDeviceUnit(int i, int device_unit, double *real_unit, int unitType){
ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit, real_unit, unitType);
}
 
void LTS_GetDeviceUnitFromRealValue(int i, double real_unit, int *device_unit, int unitType){
ISC_GetDeviceUnitFromRealValue(serialNumbers[i], real_unit, device_unit, unitType);
}
//Waits should only be used for Home commands. The home command has a different status return.
void LTS_waitHome(int i, int tout)// Waits until a single axis is homed.
{
WORD messageType=0;
WORD messageId=0;
DWORD messageData=0;
int condition=0;
LTS_Tmlnk (tout);
do {
while (!ISC_MessageQueueSize(serialNumbers[i])){
Sleep(250);
if (LTSTimerOut) break;
}
if (LTSTimerOut){
printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
break;
}
ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
condition = (messageType == 2) && (messageId == 0);
} while (!condition || !LTSTimerOut);
LTS_Tmulk();
}
 
void LTS_waitMove(int i, int tout)// Waits until axis is stopped.
{
WORD messageType=0;
WORD messageId=0;
DWORD messageData=0;
int condition=0;
LTS_Tmlnk (tout);
do {
while (!ISC_MessageQueueSize(serialNumbers[i])){
Sleep(250);
if (LTSTimerOut) break;
}
if (LTSTimerOut){
printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
break;
}
ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
condition = (messageType == 2) && (messageId == 1);
} while (!condition);
LTS_Tmulk();
}
//*******************************************************************
 
#ifdef LTS_MAIN
 
 
int rID, tfID;
 
#define MAX_THREADS 10
static CmtThreadPoolHandle poolHandle = 0;
int lid[][14]= {
{P1_L1,P1_L2,P1_L3,P1_L4,P1_L5,P1_L6,P1_L7,P1_L8,P1_L9,P1_L10,P1_L11,P1_L12,P1_L13,P1_L14},
{P1_L1_2,P1_L2_2,P1_L3_2,P1_L4_2,P1_L5_2,P1_L6_2,P1_L7_2,P1_L8_2,P1_L9_2,P1_L10_2,P1_L11_2,P1_L12_2,P1_L13_2,P1_L14_2},
{P1_L1_3,P1_L2_3,P1_L3_3,P1_L4_3,P1_L5_3,P1_L6_3,P1_L7_3,P1_L8_3,P1_L9_3,P1_L10_3,P1_L11_3,P1_L12_3,P1_L13_3,P1_L14_3}};
int dstat[3]={P1_N2,P1_N2_2,P1_N2_3};
int dpos[3]={P1_XP,P1_YP,P1_ZP};
int ctrl_c=0;
 
void LTS_SetStatus(int nid){
 
int status=LTS_GetStatus(nid);
SetCtrlVal (p1_h, dstat[nid], status);
SetCtrlVal (p1_h, lid[nid][12], (status & 0x20000000)>0);
SetCtrlVal (p1_h, lid[nid][13], (status & 0x80000000)>0);
for (int i=0; i<12; i++) {
SetCtrlVal (p1_h, lid[nid][i], status & 1);
status>>=1;
}
}
 
 
 
void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle,
CmtThreadFunctionID functionID, unsigned int event,
int value, void *callbackData ) {
SetCtrlVal (p1_h, P1_SCANLED, 0);
ctrl_c=0;
return ;
 
}
 
int CVICALLBACK daq(void *functionData) {
ctrl_c =0;
SetCtrlVal (p1_h, P1_SCANLED, 1);
int nx,ny,nz;
GetCtrlVal(p1_h,P1_NX, &nx);
GetCtrlVal(p1_h,P1_NY, &ny);
GetCtrlVal(p1_h,P1_NZ, &nz);
double dx,dy,dz;
GetCtrlVal(p1_h,P1_DX, &dx);
GetCtrlVal(p1_h,P1_DY, &dy);
GetCtrlVal(p1_h,P1_DZ, &dz);
double x0,y0,z0;
GetCtrlVal(p1_h,P1_X0, &x0);
GetCtrlVal(p1_h,P1_Y0, &y0);
GetCtrlVal(p1_h,P1_Z0, &z0);
int cbx,cby,cbz;
int timeout=10000; // timeout in ms
GetCtrlVal(p1_h,P1_CBX, &cbx);
GetCtrlVal(p1_h,P1_CBY, &cby);
GetCtrlVal(p1_h,P1_CBZ, &cbz);
if (!cbx) nx=1;
if (!cby) ny=1;
if (!cbz) nz=1;
int nstep=0;
double totalSteps=nx*ny*nz;
for (int iz=0;iz<nz;iz++){
double zposition= z0+ iz*dz;
SetCtrlVal(p1_h,P1_IZ, iz);
SetCtrlVal(p1_h,P1_DAQLED, 1);
LTS_MoveAbsolute(2,zposition,timeout);
SetCtrlVal(p1_h,P1_DAQLED, 0);
for (int iy=0;iy<ny;iy++){
double yposition= y0+ iy*dy;
SetCtrlVal(p1_h,P1_IY, iy);
SetCtrlVal(p1_h,P1_DAQLED, 1);
LTS_MoveAbsolute(1,yposition,timeout);
SetCtrlVal(p1_h,P1_DAQLED, 0);
for (int ix=0;ix<nx;ix++){
double xposition= x0+ ix*dx;
SetCtrlVal(p1_h,P1_IX, ix);
SetCtrlVal(p1_h,P1_DAQLED, 1);
LTS_MoveAbsolute(0,xposition,timeout);
SetCtrlVal(p1_h,P1_DAQLED, 0);
for (int k=0;k<3;k++){
double n2 = LTS_GetPosition(k);
SetCtrlVal (p1_h, dpos[k], n2);
LTS_SetStatus(k);
}
//printf("[%d]\n",nstep++);
nstep++;
double ratio = nstep/totalSteps;
SetCtrlVal(p1_h,P1_PROGRESS, 100.*ratio);
Delay(0.1);
if (ctrl_c) break;
}
if (ctrl_c) break;
}
if (ctrl_c) break;
}
return 0;
}
 
 
void MessageCB(){
//printf("Message %d\n",d[0]);
return;
}
 
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow) {
 
 
int evcontrl,evpanel,ierr;
double n2;
int comled;
int enabled=0;
 
SetSleepPolicy(VAL_SLEEP_MORE);
CmtNewThreadPool (MAX_THREADS, &poolHandle);
SetStdioPort (CVI_STDIO_WINDOW);
if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */
 
p1_h = LoadPanel (0,"ThorlabsLTS_ui.uir", P1);
//p1_h = BuildP1 (0);
ierr = DisplayPanel (p1_h);
ierr = SetActiveCtrl (p1_h,P1_B1);
ierr = SetActiveCtrl (p1_h,P1_B3);
 
GetCtrlVal (p1_h, P1_COMLED, &comled);
if (!comled) {
//GetCtrlVal (p1_h, P1_PORT, &port);
//if (MIKRO_Open (port)) continue;
LTS_Open();
SetCtrlVal (p1_h, P1_COMLED, 1);
for (int i=0;i<3;i++) LTS_RegisterMessageCallback(i, &MessageCB );
}
 
int scanled=0;
while (1) {
ierr = GetUserEvent (1, &evpanel, &evcontrl);
//printf("GetUserEvent %d %d\n", evpanel, evcontrl);
if (evcontrl == P1_STOPSCAN) ctrl_c=1;
GetCtrlVal (p1_h, P1_SCANLED, &scanled);
if (scanled) continue;
if (evcontrl == P1_B1) break;
switch (evcontrl) {
case P1_BL:
LTS_MoveRelative(0,-SingleMove, 0);
break;
case P1_BR:
LTS_MoveRelative(0,+SingleMove, 0);
break;
case P1_BU:
LTS_MoveRelative(1,+SingleMove, 0);
break;
case P1_BD:
LTS_MoveRelative(1,-SingleMove, 0);
break;
case P1_BF:
LTS_MoveRelative(2,+SingleMove, 0);
break;
case P1_BB:
LTS_MoveRelative(2,-SingleMove, 0);
break;
case P1_HO:
LTS_Home(0,0);
break;
case P1_HO_2:
LTS_Home(1,0);
break;
case P1_HO_3:
LTS_Home(2,0);
break;
case P1_GX:
GetCtrlVal (p1_h, P1_XG, &n2);
LTS_MoveAbsolute(0,n2,0);
break;
case P1_GY:
GetCtrlVal (p1_h, P1_YG, &n2);
LTS_MoveAbsolute(1,n2,0);
break;
case P1_GZ:
GetCtrlVal (p1_h, P1_ZG, &n2);
LTS_MoveAbsolute(2,n2,0);
break;
case P1_G:
GetCtrlVal (p1_h, P1_XG, &n2);
LTS_MoveAbsolute(0,n2,0);
GetCtrlVal (p1_h, P1_YG, &n2);
LTS_MoveAbsolute(1,n2,0);
GetCtrlVal (p1_h, P1_ZG, &n2);
LTS_MoveAbsolute(2,n2,0);
break;
case P1_B3: // reset
case P1_B3_2: // reset
case P1_B3_3: // reset
printf("RST Not yet implemented\n");
break;
case P1_STOP:
LTS_StopProfiled(0);
break;
case P1_STOP_2:
LTS_StopProfiled(1);
break;
case P1_STOP_3:
LTS_StopProfiled(2);
break;
case P1_EN:
LTS_Enable(0);
break;
case P1_EN_2:
LTS_Enable(1);
break;
case P1_EN_3:
LTS_Enable(2);
break;
case P1_DIS:
LTS_Disable(0);
break;
case P1_DIS_2:
LTS_Disable(1);
break;
case P1_DIS_3:
LTS_Disable(2);
break;
case P1_TIMER:
for (int k=0;k<3;k++){
double position = LTS_GetPosition(k);
SetCtrlVal (p1_h, dpos[k], position);
LTS_SetStatus(k);
}
break;
case P1_SCAN:
enabled=1;
const int LTS_Enabled = 0x80000000;
for (int i=0;i<3;i++) if (!(LTS_GetStatus(i)& LTS_Enabled)) enabled =0;
if (enabled){
SetCtrlVal(p1_h,P1_DAQLED, 0);
CmtScheduleThreadPoolFunctionAdv (poolHandle, daq, &rID,
DEFAULT_THREAD_PRIORITY,
EndOfThread,
EVENT_TP_THREAD_FUNCTION_END,
NULL, RUN_IN_SCHEDULED_THREAD,
&tfID);
} else {
MessagePopup ("Error", "Enable LTS Stages First");
}
break;
default:
break;
}
Delay(0.001);
}
 
GetCtrlVal (p1_h, P1_COMLED, &comled);
if (comled) for (int i=0;i<3;i++) LTS_Close (i);
 
return 0;
}
 
 
 
 
int CVICALLBACK TimerCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int isrunning;
switch (event)
{
case EVENT_TIMER_TICK:
GetCtrlVal (p1_h, P1_SCANLED, &isrunning);
if (!isrunning) QueueUserEvent (1, p1_h, P1_TIMER);
break;
}
return 0;
}
 
 
#else
// *************************************
 
int main(int argc, char ** argv)
{
//Sets up simulations. Comment in if running on physical hardware.
//TLI_InitializeSimulations();
 
//Input serial number. Change for your specific device.
//serials = ["45388004", "45387934","45388034"]
 
 
//Build Device List and open device.
TLI_BuildDeviceList();
TLI_DeviceInfo info;
int err=0;
for (int i=0;i<3;i++){
TLI_GetDeviceInfo(serialNumbers[i], &info);
printf("%s\n", info.description);
Sleep(1000);
err |= LTS_Init(i);
}
for (int i=0;i<3;i++){
 
//Move the stage and wait for the return message before continuing.
for (int k=0;k<10;k++){
LTS_MoveAbsolute(i,k);
printf( "Moving ...\n");
waitMove(i);
printf( "Move Complete...\n");
}
}
for (int i=0;i<3;i++){
LTS_Close(i);
}
//Closes simulations. Comment if running on physical hardware.
//TLI_UninitializeSimulations();
Delay(10);
return 0;
}
#endif
/cvi/instr/ThorlabsLTS.cws
0,0 → 1,178
[Workspace Header]
Version = 1700
Pathname = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.cws"
CVI Dir = "/c/program files (x86)/national instruments/cvi2017"
CVI Shared Dir = "/C/Program Files (x86)/National Instruments/Shared/CVI"
CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2017"
CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI"
IVI Standard Root Dir = "/C/Program Files (x86)/IVI Foundation/IVI"
IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI"
VXIplug&play Framework Dir = "/C/Program Files (x86)/IVI Foundation/VISA/winnt"
VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64"
Number of Projects = 1
Active Project = 1
Project 0001 = "ThorlabsLTS.prj"
Drag Bar Left = 160
Window Top = 31
Window Left = 63
Window Bottom = 857
Window Right = 1499
Maximized = False
Maximized Children = True
Max32 Number Of Errors = 20
Track Include File Dependencies = True
Prompt For Missing Includes = True
Stop On First Error File = False
Bring Up Err Win At Start = True
Bring Up Err Win For Errors = False
Save Changes Before Running = "Always"
Save Changes Before Compiling = "Always"
Hide Windows = False
Break At First Statement = False
Sort Type = "File Name"
Number of Opened Files = 3
Window Confinement Region Enabled = True
MainColumnWidth = 143
FileDateColumnWidth = 70
FileSizeColumnWidth = 70
 
[Project Header 0001]
Version = 1700
Don't Update DistKit = False
Platform Code = 4
Build Configuration = "Debug64"
Warn User If Debugging Release = 1
Batch Build Release = False
Batch Build Debug = False
 
[File 0001]
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.c"
File Type = "CSource"
Disk Date = 3786866484
In Projects = "1,"
Window Top = 33
Window Left = 10
Window Z-Order = 2
Source Window State = "1,69,69,69,14,17,14,0,0,80,0,221,0,0,0,25,93,0,69,16,349,683,1,17,"
 
[File 0002]
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsMotionControlIntegratedStepperMotors.h"
File Type = "Include"
Disk Date = 3786704048
In Projects = "1,"
Window Top = 95
Window Left = 42
Window Z-Order = 1
Source Window State = "1,580,580,580,26,44,44,0,0,155,0,0,0,0,0,43,3,0,18,24,349,683,1,0,"
 
[File 0003]
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS_ui.uir"
File Type = "User Interface Resource"
Disk Date = 3787116297
In Projects = "1,"
Window Top = 126
Window Left = 58
Window Height = 349
Window Width = 683
Window Z-Order = 3
 
[File 0004]
Path Line0001 = "/c/Program Files/Thorlabs/Kinesis/Thorlabs.MotionControl.IntegratedStepperMotors"
Path Line0002 = ".lib"
File Type = "Library"
Disk Date = 3781676780
In Projects = "1,"
 
[Tab Order]
Tab 0001 = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.c"
Tab 0002 = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS_ui.uir"
Tab 0003 = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsMotionControlIntegratedStepperMotors.h"
 
[Default Build Config 0001 Debug]
Generate Browse Info = True
Enable Uninitialized Locals Runtime Warning = True
Batch Build = False
Profile = "Disabled"
Debugging Level = "Standard"
Execution Trace = "Disabled"
Command Line Args = ""
Working Directory = ""
Environment Options = ""
External Process Path = ""
 
[Default Build Config 0001 Release]
Generate Browse Info = True
Enable Uninitialized Locals Runtime Warning = True
Batch Build = False
Profile = "Disabled"
Debugging Level = "Standard"
Execution Trace = "Disabled"
Command Line Args = ""
Working Directory = ""
Environment Options = ""
External Process Path = ""
 
[Default Build Config 0001 Debug64]
Generate Browse Info = True
Enable Uninitialized Locals Runtime Warning = True
Batch Build = False
Profile = "Disabled"
Debugging Level = "Standard"
Execution Trace = "Disabled"
Command Line Args = ""
Working Directory = ""
Environment Options = ""
External Process Path = ""
 
[Default Build Config 0001 Release64]
Generate Browse Info = True
Enable Uninitialized Locals Runtime Warning = True
Batch Build = False
Profile = "Disabled"
Debugging Level = "Standard"
Execution Trace = "Disabled"
Command Line Args = ""
Working Directory = ""
Environment Options = ""
External Process Path = ""
 
[Build Dependencies 0001]
Number of Dependencies = 0
 
[Build Options 0001]
Generate Browse Info = True
Enable Uninitialized Locals Runtime Warning = True
Execution Trace = "Disabled"
Profile = "Disabled"
Debugging Level = "Standard"
Break On Library Errors = True
Break On First Chance Exceptions = False
 
[Execution Target 0001]
Execution Target Address = "Local desktop computer"
Execution Target Port = 0
Execution Target Type = 0
 
[SCC Options 0001]
Use global settings = True
SCC Provider = ""
SCC Project = ""
Local Path = ""
Auxiliary Path = ""
Perform Same Action For .h File As For .uir File = "Ask"
Perform Same Action For .cds File As For .prj File = "Ask"
Username = ""
Comment = ""
Use Default Username = False
Use Default Comment = False
Suppress CVI Error Messages = False
Always show confirmation dialog = True
 
[DLL Debugging Support 0001]
External Process Path = ""
 
[Command Line Args 0001]
Command Line Args = ""
Working Directory = ""
Environment Options = ""
 
/cvi/instr/ThorlabsLTS.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/ThorlabsLTS.prj
0,0 → 1,452
[Project Header]
Version = 1700
Pathname = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.prj"
CVI Dir = "/c/program files (x86)/national instruments/cvi2017"
CVI Shared Dir = "/C/Program Files (x86)/National Instruments/Shared/CVI"
CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2017"
CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI"
IVI Standard Root Dir = "/C/Program Files (x86)/IVI Foundation/IVI"
VXIplug&play Framework Dir = "/C/Program Files (x86)/IVI Foundation/VISA/winnt"
IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI"
VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64"
Number of Files = 4
Target Type = "Executable"
Flags = 2064
Copied From Locked InstrDrv Directory = False
Copied from VXIPNP Directory = False
Locked InstrDrv Name = ""
Don't Display Deploy InstrDrv Dialog = False
 
[Folders]
Instrument Files Folder Not Added Yet = True
Folder 0 = "Library Files"
FolderEx 0 = "Library Files"
Folder 1 = "Include Files"
FolderEx 1 = "Include Files"
Folder 2 = "User Interface Files"
FolderEx 2 = "User Interface Files"
Folder 3 = "Source Files"
FolderEx 3 = "Source Files"
 
[File 0001]
File Type = "Library"
Res Id = 1
Path Is Rel = True
Path Rel To = "Project"
Path Rel Path Line0001 = "../../../../Program Files/Thorlabs/Kinesis/Thorlabs.MotionControl.IntegratedStep"
Path Rel Path Line0002 = "perMotors.lib"
Path Line0001 = "/c/Program Files/Thorlabs/Kinesis/Thorlabs.MotionControl.IntegratedStepperMotors"
Path Line0002 = ".lib"
Exclude = False
Project Flags = 0
Folder = "Library Files"
Folder Id = 0
 
[File 0002]
File Type = "Include"
Res Id = 2
Path Is Rel = True
Path Rel To = "Project"
Path Rel Path = "ThorlabsMotionControlIntegratedStepperMotors.h"
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsMotionControlIntegratedStepperMotors.h"
Exclude = False
Project Flags = 0
Folder = "Include Files"
Folder Id = 1
 
[File 0003]
File Type = "User Interface Resource"
Res Id = 3
Path Is Rel = True
Path Rel To = "Project"
Path Rel Path = "ThorlabsLTS_ui.uir"
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS_ui.uir"
Exclude = False
Project Flags = 0
Folder = "User Interface Files"
Folder Id = 2
 
[File 0004]
File Type = "CSource"
Res Id = 4
Path Is Rel = True
Path Rel To = "Project"
Path Rel Path = "ThorlabsLTS.c"
Path = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.c"
Exclude = False
Compile Into Object File = False
Project Flags = 0
Folder = "Source Files"
Folder Id = 3
 
[Custom Build Configs]
Num Custom Build Configs = 0
 
[Default Build Config Debug]
Config Name = "Debug"
Is 64-Bit = False
Is Release = False
Default Calling Convention = "cdecl"
Optimization Level = "Optimize for speed (level 2)"
Require Prototypes = True
Show Warning IDs in Build Output = False
Selected Warning Level = "Common"
Warning List None = ""
Warning List Common = ""
Warning List Extended = ""
Warning List All = ""
Warning Mode = 0
Enable Unreferenced Identifiers Warning = True
Enable Pointer Mismatch Warning = True
Enable Unreachable Code Warning = True
Enable Assignment In Conditional Warning = True
Uninitialized Locals Compile Warning = "Aggressive"
Require Return Values = True
Enable C99 Extensions = True
Enable OpenMP Extensions = False
Stack Size = 250000
Stack Reserve = 1048576
Stack Commit = 4096
Image Base Address = 4194304
Image Base Address x64 = 4194304
Compiler Defines = "/DWIN32_LEAN_AND_MEAN"
Sign = False
Sign Store = ""
Sign Certificate = ""
Sign Timestamp URL = ""
Sign URL = ""
Manifest Embed = False
Icon File Is Rel = False
Icon File = ""
Application Title = ""
Use IVI Subdirectories for Import Libraries = False
Use VXIPNP Subdirectories for Import Libraries = False
Use Dflt Import Lib Base Name = True
Where to Copy DLL = "Do not copy"
Custom Directory to Copy DLL Is Rel = False
Custom Directory to Copy DLL = ""
Generate Source Documentation = "None"
Runtime Support = "Full Runtime Support"
Runtime Binding = "Shared"
Embed Project .UIRs = False
Generate Map File = False
Embed Timestamp = True
Create Console Application = False
Using LoadExternalModule = False
DLL Exports = "Include File Symbols"
Register ActiveX Server = False
Add Type Lib To DLL = False
Include Type Lib Help Links = False
TLB Help Style = "HLP"
Type Lib FP File Is Rel = False
Type Lib FP File = ""
 
[Default Build Config Release]
Config Name = "Release"
Is 64-Bit = False
Is Release = True
Default Calling Convention = "cdecl"
Optimization Level = "Optimize for speed (level 2)"
Require Prototypes = True
Show Warning IDs in Build Output = False
Selected Warning Level = "Common"
Warning List None = ""
Warning List Common = ""
Warning List Extended = ""
Warning List All = ""
Warning Mode = 0
Enable Unreferenced Identifiers Warning = True
Enable Pointer Mismatch Warning = True
Enable Unreachable Code Warning = True
Enable Assignment In Conditional Warning = True
Uninitialized Locals Compile Warning = "Aggressive"
Require Return Values = True
Enable C99 Extensions = True
Enable OpenMP Extensions = False
Stack Size = 250000
Stack Reserve = 1048576
Stack Commit = 4096
Image Base Address = 4194304
Image Base Address x64 = 4194304
Compiler Defines = "/DWIN32_LEAN_AND_MEAN"
Sign = False
Sign Store = ""
Sign Certificate = ""
Sign Timestamp URL = ""
Sign URL = ""
Manifest Embed = False
Icon File Is Rel = False
Icon File = ""
Application Title = ""
Use IVI Subdirectories for Import Libraries = False
Use VXIPNP Subdirectories for Import Libraries = False
Use Dflt Import Lib Base Name = True
Where to Copy DLL = "Do not copy"
Custom Directory to Copy DLL Is Rel = False
Custom Directory to Copy DLL = ""
Generate Source Documentation = "None"
Runtime Support = "Full Runtime Support"
Runtime Binding = "Shared"
Embed Project .UIRs = False
Generate Map File = False
Embed Timestamp = True
Create Console Application = False
Using LoadExternalModule = False
DLL Exports = "Include File Symbols"
Register ActiveX Server = False
Add Type Lib To DLL = False
Include Type Lib Help Links = False
TLB Help Style = "HLP"
Type Lib FP File Is Rel = False
Type Lib FP File = ""
 
[Default Build Config Debug64]
Config Name = "Debug64"
Is 64-Bit = True
Is Release = False
Default Calling Convention = "cdecl"
Optimization Level = "Optimize for speed (level 2)"
Require Prototypes = True
Show Warning IDs in Build Output = False
Selected Warning Level = "Common"
Warning List None = ""
Warning List Common = ""
Warning List Extended = ""
Warning List All = ""
Warning Mode = 0
Enable Unreferenced Identifiers Warning = True
Enable Pointer Mismatch Warning = True
Enable Unreachable Code Warning = True
Enable Assignment In Conditional Warning = True
Uninitialized Locals Compile Warning = "Aggressive"
Require Return Values = True
Enable C99 Extensions = True
Enable OpenMP Extensions = False
Stack Size = 250000
Stack Reserve = 1048576
Stack Commit = 4096
Image Base Address = 4194304
Image Base Address x64 = 4194304
Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DLTS_MAIN"
Sign = False
Sign Store = ""
Sign Certificate = ""
Sign Timestamp URL = ""
Sign URL = ""
Manifest Embed = False
Icon File Is Rel = False
Icon File = ""
Application Title = ""
Use IVI Subdirectories for Import Libraries = False
Use VXIPNP Subdirectories for Import Libraries = False
Use Dflt Import Lib Base Name = True
Where to Copy DLL = "Do not copy"
Custom Directory to Copy DLL Is Rel = False
Custom Directory to Copy DLL = ""
Generate Source Documentation = "HTML"
Runtime Support = "Full Runtime Support"
Runtime Binding = "Shared"
Embed Project .UIRs = False
Generate Map File = False
Embed Timestamp = True
Create Console Application = False
Using LoadExternalModule = False
DLL Exports = "Include File Symbols"
Register ActiveX Server = False
Numeric File Version = "1,0,0,0"
Numeric Prod Version = "1,0,0,0"
Comments = ""
Comments Ex = ""
Company Name = "IJS"
Company Name Ex = "%company"
File Description = "ThorlabsLTS (Debug x64)"
File Description Ex = "%application (%rel_dbg %arch)"
File Version = "1.0"
File Version Ex = "%f1.%f2"
Internal Name = "ThorlabsLTS"
Internal Name Ex = "%basename"
Legal Copyright = "Copyright IJS 2023"
Legal Copyright Ex = "Copyright %company %Y"
Legal Trademarks = ""
Legal Trademarks Ex = ""
Original Filename = "ThorlabsLTS.exe"
Original Filename Ex = "%filename"
Private Build = ""
Private Build Ex = ""
Product Name = "IJS ThorlabsLTS"
Product Name Ex = "%company %application"
Product Version = "1.0"
Product Version Ex = "%p1.%p2"
Special Build = ""
Special Build Ex = ""
Add Type Lib To DLL = False
Include Type Lib Help Links = False
TLB Help Style = "HLP"
Type Lib FP File Is Rel = False
Type Lib FP File = ""
 
[Default Build Config Release64]
Config Name = "Release64"
Is 64-Bit = True
Is Release = True
Default Calling Convention = "cdecl"
Optimization Level = "Optimize for speed (level 2)"
Require Prototypes = True
Show Warning IDs in Build Output = False
Selected Warning Level = "Common"
Warning List None = ""
Warning List Common = ""
Warning List Extended = ""
Warning List All = ""
Warning Mode = 0
Enable Unreferenced Identifiers Warning = True
Enable Pointer Mismatch Warning = True
Enable Unreachable Code Warning = True
Enable Assignment In Conditional Warning = True
Uninitialized Locals Compile Warning = "Aggressive"
Require Return Values = True
Enable C99 Extensions = True
Enable OpenMP Extensions = False
Stack Size = 250000
Stack Reserve = 1048576
Stack Commit = 4096
Image Base Address = 4194304
Image Base Address x64 = 4194304
Compiler Defines = "/DWIN32_LEAN_AND_MEAN"
Sign = False
Sign Store = ""
Sign Certificate = ""
Sign Timestamp URL = ""
Sign URL = ""
Manifest Embed = False
Icon File Is Rel = False
Icon File = ""
Application Title = ""
Use IVI Subdirectories for Import Libraries = False
Use VXIPNP Subdirectories for Import Libraries = False
Use Dflt Import Lib Base Name = True
Where to Copy DLL = "Do not copy"
Custom Directory to Copy DLL Is Rel = False
Custom Directory to Copy DLL = ""
Generate Source Documentation = "None"
Runtime Support = "Full Runtime Support"
Runtime Binding = "Shared"
Embed Project .UIRs = False
Generate Map File = False
Embed Timestamp = True
Create Console Application = False
Using LoadExternalModule = False
DLL Exports = "Include File Symbols"
Register ActiveX Server = False
Add Type Lib To DLL = False
Include Type Lib Help Links = False
TLB Help Style = "HLP"
Type Lib FP File Is Rel = False
Type Lib FP File = ""
 
[Compiler Options]
Default Calling Convention = "cdecl"
Require Prototypes = True
Require Return Values = True
Enable Pointer Mismatch Warning = True
Enable Unreachable Code Warning = True
Enable Unreferenced Identifiers Warning = True
Enable Assignment In Conditional Warning = True
Enable C99 Extensions = True
Uninitialized Locals Compile Warning = "Aggressive"
Precompile Prefix Header = False
Prefix Header File = ""
 
[Run Options]
Stack Size = 250000
Stack Commit = 4096
Image Base Address = 4194304
Image Base Address x64 = 4194304
 
[Compiler Defines]
Compiler Defines = "/DWIN32_LEAN_AND_MEAN"
 
[Include Paths]
Include Path 1 Is Rel = True
Include Path 1 Rel To = "Project"
Include Path 1 Rel Path = "../../../../Program Files/Thorlabs/Kinesis"
Include Path 1 = "/c/Program Files/Thorlabs/Kinesis"
 
[Create Executable]
Executable File_Debug Is Rel = True
Executable File_Debug Rel To = "Project"
Executable File_Debug Rel Path = "ThorlabsLTS.exe"
Executable File_Debug = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.exe"
Executable File_Release Is Rel = True
Executable File_Release Rel To = "Project"
Executable File_Release Rel Path = "ThorlabsLTS.exe"
Executable File_Release = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.exe"
Executable File_Debug64 Is Rel = True
Executable File_Debug64 Rel To = "Project"
Executable File_Debug64 Rel Path = "ThorlabsLTS.exe"
Executable File_Debug64 = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.exe"
Executable File_Release64 Is Rel = True
Executable File_Release64 Rel To = "Project"
Executable File_Release64 Rel Path = "ThorlabsLTS.exe"
Executable File_Release64 = "/c/home/CVI/instr/ThorlabsLTS/ThorlabsLTS.exe"
Icon File Is Rel = False
Icon File = ""
Application Title = ""
DLL Exports = "Include File Symbols"
Use IVI Subdirectories for Import Libraries = False
Use VXIPNP Subdirectories for Import Libraries = False
Use Dflt Import Lib Base Name = True
Where to Copy DLL = "Do not copy"
Custom Directory to Copy DLL Is Rel = False
Custom Directory to Copy DLL = ""
Generate Source Documentation = "None"
Add Type Lib To DLL = False
Include Type Lib Help Links = False
TLB Help Style = "HLP"
Type Lib FP File Is Rel = False
Type Lib FP File = ""
Type Lib Guid = ""
Runtime Support = "Full Runtime Support"
Instrument Driver Support Only = False
Embed Project .UIRs = False
Generate Map File = False
 
[External Compiler Support]
UIR Callbacks File Option = 0
Using LoadExternalModule = False
Create Project Symbols File = True
UIR Callbacks Obj File Is Rel = False
UIR Callbacks Obj File = ""
Project Symbols H File Is Rel = False
Project Symbols H File = ""
Project Symbols Obj File Is Rel = False
Project Symbols Obj File = ""
 
[ActiveX Server Options]
Specification File Is Rel = False
Specification File = ""
Source File Is Rel = False
Source File = ""
Include File Is Rel = False
Include File = ""
IDL File Is Rel = False
IDL File = ""
Register ActiveX Server = False
 
[Signing Info]
Sign = False
Sign Debug Build = False
Store = ""
Certificate = ""
Timestamp URL = ""
URL = ""
 
[Manifest Info]
Embed = False
 
[tpcSection]
tpcEnabled = 0
tpcOverrideEnvironment = 0
tpcEnabled x64 = 0
tpcOverrideEnvironment x64 = 0
 
/cvi/instr/ThorlabsLTS_ui.h
0,0 → 1,144
/**************************************************************************/
/* LabWindows/CVI User Interface Resource (UIR) Include File */
/* */
/* WARNING: Do not add to, delete from, or otherwise modify the contents */
/* of this include file. */
/**************************************************************************/
 
#include <userint.h>
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Panels and Controls: */
 
#define P1 1
#define P1_B1 2 /* control type: command, callback function: (none) */
#define P1_DIS_3 3 /* control type: command, callback function: (none) */
#define P1_EN_3 4 /* control type: command, callback function: (none) */
#define P1_DIS_2 5 /* control type: command, callback function: (none) */
#define P1_EN_2 6 /* control type: command, callback function: (none) */
#define P1_STOP_3 7 /* control type: command, callback function: (none) */
#define P1_STOP_2 8 /* control type: command, callback function: (none) */
#define P1_STOP 9 /* control type: command, callback function: (none) */
#define P1_DIS 10 /* control type: command, callback function: (none) */
#define P1_EN 11 /* control type: command, callback function: (none) */
#define P1_HO_3 12 /* control type: command, callback function: (none) */
#define P1_HO_2 13 /* control type: command, callback function: (none) */
#define P1_HO 14 /* control type: command, callback function: (none) */
#define P1_B3_3 15 /* control type: command, callback function: (none) */
#define P1_B3_2 16 /* control type: command, callback function: (none) */
#define P1_B3 17 /* control type: command, callback function: (none) */
#define P1_N2_3 18 /* control type: numeric, callback function: (none) */
#define P1_N2_2 19 /* control type: numeric, callback function: (none) */
#define P1_N2 20 /* control type: numeric, callback function: (none) */
#define P1_L14_3 21 /* control type: LED, callback function: (none) */
#define P1_L13_3 22 /* control type: LED, callback function: (none) */
#define P1_L12_3 23 /* control type: LED, callback function: (none) */
#define P1_L11_3 24 /* control type: LED, callback function: (none) */
#define P1_L10_3 25 /* control type: LED, callback function: (none) */
#define P1_L9_3 26 /* control type: LED, callback function: (none) */
#define P1_L8_3 27 /* control type: LED, callback function: (none) */
#define P1_L7_3 28 /* control type: LED, callback function: (none) */
#define P1_L6_3 29 /* control type: LED, callback function: (none) */
#define P1_L5_3 30 /* control type: LED, callback function: (none) */
#define P1_L4_3 31 /* control type: LED, callback function: (none) */
#define P1_L3_3 32 /* control type: LED, callback function: (none) */
#define P1_L2_3 33 /* control type: LED, callback function: (none) */
#define P1_L1_3 34 /* control type: LED, callback function: (none) */
#define P1_L14_2 35 /* control type: LED, callback function: (none) */
#define P1_L13_2 36 /* control type: LED, callback function: (none) */
#define P1_L12_2 37 /* control type: LED, callback function: (none) */
#define P1_L11_2 38 /* control type: LED, callback function: (none) */
#define P1_L10_2 39 /* control type: LED, callback function: (none) */
#define P1_L9_2 40 /* control type: LED, callback function: (none) */
#define P1_L8_2 41 /* control type: LED, callback function: (none) */
#define P1_L7_2 42 /* control type: LED, callback function: (none) */
#define P1_L6_2 43 /* control type: LED, callback function: (none) */
#define P1_L5_2 44 /* control type: LED, callback function: (none) */
#define P1_L4_2 45 /* control type: LED, callback function: (none) */
#define P1_L3_2 46 /* control type: LED, callback function: (none) */
#define P1_L2_2 47 /* control type: LED, callback function: (none) */
#define P1_L1_2 48 /* control type: LED, callback function: (none) */
#define P1_L14 49 /* control type: LED, callback function: (none) */
#define P1_L13 50 /* control type: LED, callback function: (none) */
#define P1_L12 51 /* control type: LED, callback function: (none) */
#define P1_L11 52 /* control type: LED, callback function: (none) */
#define P1_L10 53 /* control type: LED, callback function: (none) */
#define P1_L9 54 /* control type: LED, callback function: (none) */
#define P1_L8 55 /* control type: LED, callback function: (none) */
#define P1_L7 56 /* control type: LED, callback function: (none) */
#define P1_L6 57 /* control type: LED, callback function: (none) */
#define P1_L5 58 /* control type: LED, callback function: (none) */
#define P1_L4 59 /* control type: LED, callback function: (none) */
#define P1_L3 60 /* control type: LED, callback function: (none) */
#define P1_L2 61 /* control type: LED, callback function: (none) */
#define P1_L1 62 /* control type: LED, callback function: (none) */
#define P1_BF 63 /* control type: command, callback function: (none) */
#define P1_BD 64 /* control type: command, callback function: (none) */
#define P1_BB 65 /* control type: command, callback function: (none) */
#define P1_BR 66 /* control type: command, callback function: (none) */
#define P1_BU 67 /* control type: command, callback function: (none) */
#define P1_BL 68 /* control type: command, callback function: (none) */
#define P1_XG 69 /* control type: numeric, callback function: (none) */
#define P1_ZG 70 /* control type: numeric, callback function: (none) */
#define P1_ZP 71 /* control type: numeric, callback function: (none) */
#define P1_YG 72 /* control type: numeric, callback function: (none) */
#define P1_XP 73 /* control type: numeric, callback function: (none) */
#define P1_YP 74 /* control type: numeric, callback function: (none) */
#define P1_GZ 75 /* control type: command, callback function: (none) */
#define P1_GY 76 /* control type: command, callback function: (none) */
#define P1_GX 77 /* control type: command, callback function: (none) */
#define P1_G 78 /* control type: command, callback function: (none) */
#define P1_SCANLED 79 /* control type: LED, callback function: (none) */
#define P1_DAQLED 80 /* control type: LED, callback function: (none) */
#define P1_COMLED 81 /* control type: LED, callback function: (none) */
#define P1_TEXTMSG_3 82 /* control type: textMsg, callback function: (none) */
#define P1_TEXTMSG_2 83 /* control type: textMsg, callback function: (none) */
#define P1_TEXTMSG 84 /* control type: textMsg, callback function: (none) */
#define P1_DECORATION_5 85 /* control type: deco, callback function: (none) */
#define P1_DECORATION_2 86 /* control type: deco, callback function: (none) */
#define P1_TIMEOUT 87 /* control type: timer, callback function: LTS_Timeout */
#define P1_TIMER 88 /* control type: timer, callback function: TimerCB */
#define P1_DECORATION_4 89 /* control type: deco, callback function: (none) */
#define P1_STOPSCAN 90 /* control type: command, callback function: (none) */
#define P1_SCAN 91 /* control type: command, callback function: (none) */
#define P1_IZ 92 /* control type: numeric, callback function: (none) */
#define P1_IY 93 /* control type: numeric, callback function: (none) */
#define P1_IX 94 /* control type: numeric, callback function: (none) */
#define P1_NZ 95 /* control type: numeric, callback function: (none) */
#define P1_NY 96 /* control type: numeric, callback function: (none) */
#define P1_NX 97 /* control type: numeric, callback function: (none) */
#define P1_Z0 98 /* control type: numeric, callback function: (none) */
#define P1_Y0 99 /* control type: numeric, callback function: (none) */
#define P1_X0 100 /* control type: numeric, callback function: (none) */
#define P1_DZ 101 /* control type: numeric, callback function: (none) */
#define P1_DY 102 /* control type: numeric, callback function: (none) */
#define P1_DX 103 /* control type: numeric, callback function: (none) */
#define P1_CBZ 104 /* control type: radioButton, callback function: (none) */
#define P1_CBY 105 /* control type: radioButton, callback function: (none) */
#define P1_CBX 106 /* control type: radioButton, callback function: (none) */
#define P1_DECORATION_3 107 /* control type: deco, callback function: (none) */
#define P1_PROGRESS 108 /* control type: scale, callback function: (none) */
 
 
/* Control Arrays: */
 
/* (no control arrays in the resource file) */
 
 
/* Menu Bars, Menus, and Menu Items: */
 
/* (no menu bars in the resource file) */
 
 
/* Callback Prototypes: */
 
int CVICALLBACK LTS_Timeout(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
int CVICALLBACK TimerCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 
 
#ifdef __cplusplus
}
#endif
/cvi/instr/ThorlabsLTS_ui.uir
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/ThorlabsLTS~cvi180841.c
0,0 → 1,319
// C++ Example for Thorlabs LTS stages;
// 2023-09-06;
// 2023-09-06;
// C++20;
// Kinesis 1.14.37;
// ==================
// This example uses the Kinesis C++ API to move and control Thorlabs integrated stepper motor, LTS, K10CR1, and MLJ stages.
 
 
//CVI Add dll path to: Options>Environment>Include Path> C:\Program Files\Thorlabs\Kinesis
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <windows.h>
#include <utility.h>
 
 
#include "ThorlabsMotionControlIntegratedStepperMotors.h"
 
 
void waitMove(char serialNo[]);
void waitHome(char serialNo[]);
char serialNumbers[][9] = {"45388004", "45387934","45388034"};
// Set number of microsteps, found in APT communications protocol. Should be changed to 136533 if using K10CR1
int conversionRate = 409600;
 
void LTS_Home(int i){
 
//Set up homing parameters.
MOT_HomingParameters homingParams;
ISC_GetHomingParamsBlock(serialNumbers[i], &homingParams);
homingParams.direction = MOT_Reverse;
ISC_SetHomingParamsBlock(serialNumbers[i], &homingParams);
 
//Clear existing messages in the hardware buffer.
ISC_ClearMessageQueue(serialNumbers[i]);
 
//Home the stage and wait for the return message before continuing.
ISC_Home(serialNumbers[i]);
printf( "Homing...\n");
waitHome(serialNumbers[i]);
printf( "Homed...\n");
}
 
int LTS_Init(int i){
 
int errorReturn = ISC_Open(serialNumbers[i]);
Sleep(1000);
if (errorReturn == 0){
printf( "Device %d (%s) Connected...\n",i, serialNumbers[i] );
//Settings are loaded based on Stage Name. The integrated stepper class holds LTS and K10CR1 Information.
ISC_StartPolling(serialNumbers[i], 50);
Sleep(1000);
} else {
printf( "Error connecting device %d (%s)\n",i, serialNumbers[i] );
}
return errorReturn;
}
 
void LTS_Close(int i){
//Close the stage
ISC_StopPolling(serialNumbers[i]);
ISC_Close(serialNumbers[i]);
printf( "Device Disconnected...\n");
}
 
void LTS_MoveAbsolute(int i, int position){
ISC_SetMoveAbsolutePosition(serialNumbers[i], conversionRate * position);
ISC_MoveAbsolute(serialNumbers[i]);
}
 
void LTS_MoveRelative(int i, int distance){
ISC_SetMoveRelativeDistance(serialNumbers[i], distance);
ISC_MoveRelativeDistance(serialNumbers[i]);
}
 
 
int LTS_GetPosition(int i){
return ISC_GetPosition(serialNumbers[i]);
}
 
 
//Waits should only be used for Home commands. The home command has a different status return.
void waitHome(char serialNo[])// Waits until a single axis is homed.
{
WORD messageType;
WORD messageId;
DWORD messageData;
ISC_WaitForMessage(serialNo, &messageType, &messageId, &messageData);
while (messageType != 2 || messageId != 0)
{
ISC_WaitForMessage(serialNo, &messageType, &messageId, &messageData);
printf( "pos: %d\n" , ISC_GetPosition(serialNo) );
 
}
}
 
void waitMove(char serialNo[])// Waits until axis is stopped.
{
WORD messageType;
WORD messageId;
DWORD messageData;
ISC_WaitForMessage(serialNo, &messageType, &messageId, &messageData);
while (messageType != 2 || messageId != 1)
{
ISC_WaitForMessage(serialNo, &messageType, &messageId, &messageData);
printf( "pos: %d\n", ISC_GetPosition(serialNo) );
}
}
 
 
 
#ifdef THORLABS_MAIN
 
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow) {
int i,j;
int nlines,atline;
int evcontrl,evpanel,p1_h,ierr,type;
int rstat,n1,n2, n3, nid;
int comled;
int lid[16]= {P1_L1,P1_L2,P1_L3,P1_L4,P1_L5,P1_L6,P1_L7,P1_L8,
P1_L9,P1_L10,P1_L11,P1_L12,P1_L13,P1_L14,P1_L15,P1_L16
};
short int ns2, port;
char tline[80];
 
if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */
 
// p1_h = LoadPanel (0,"ThorlabsLTS_ui.uir", P1);
p1_h = BuildP1 (0);
ierr = DisplayPanel (p1_h);
ierr = SetActiveCtrl (p1_h,P1_B1);
ierr = SetActiveCtrl (p1_h,P1_B2);
ierr = SetActiveCtrl (p1_h,P1_B3);
 
while (1) {
ierr = GetUserEvent (1, &evpanel, &evcontrl);
if (evcontrl == P1_B1) break;
GetCtrlVal (p1_h, P1_COMLED, &comled);
if (!comled) {
GetCtrlVal (p1_h, P1_PORT, &port);
if (MIKRO_Open (port)) continue;
MIKRO_Init(1,0);
MIKRO_Init(2,0);
MIKRO_Init(3,0);
SetCtrlVal (p1_h, P1_COMLED, 1);
}
switch (evcontrl) {
case P1_BL:
MoveRelative(0,1000);
break;
case P1_BR:
MoveRelative(1,1000);
break;
case P1_BU:
MoveRelative(2,1000);
break;
case P1_BD:
MoveRelative(0,-1000);
break;
case P1_BF:
MoveRelative(1,-1000);
break;
case P1_BB:
MoveRelative(2,-1000);
break;
case P1_HO:
ierr = GetCtrlVal (p1_h, P1_N3, &nid);
LTS_Home(nid);
break;
case P1_GX:
GetCtrlVal (p1_h, P1_XG, &n2);
LTS_MoveAbsolute(0,n2);
break;
case P1_GY:
GetCtrlVal (p1_h, P1_YG, &n2);
LTS_MoveAbsolute(1,n2);
break;
case P1_GZ:
GetCtrlVal (p1_h, P1_ZG, &n3);
LTS_MoveAbsolute(2,n2);
break;
case P1_G:
GetCtrlVal (p1_h, P1_XG, &n2);
LTS_MoveAbsolute(0,n2);
GetCtrlVal (p1_h, P1_YG, &n2);
LTS_MoveAbsolute(1,n2);
GetCtrlVal (p1_h, P1_ZG, &n3);
LTS_MoveAbsolute(2,n3);
case P1_B2:
case P1_S1:
/*
ierr = GetCtrlVal (p1_h, P1_S1, MIKRO_Send);
nout = strlen (MIKRO_Send);
MIKRO_Send[nout++]=13;
rstat = FlushInQ (MIKRO_Port);
rstat = ComWrt (MIKRO_Port, MIKRO_Send, nout);
if ((nin = ComRdTerm (MIKRO_Port, MIKRO_Receive, 30, 0xa))!=0)
nin = ComRdTerm (MIKRO_Port, MIKRO_Receive, 30, 0xa);
if (nin!=0) nin--;
MIKRO_Receive[nin]=0;
switch (nin) {
case 0:
ierr = SetCtrlVal (p1_h, P1_N2, 0);
break;
case 9:
nout = sscanf (MIKRO_Receive, "%x %hx", &n1,&ns2);
ierr = SetCtrlVal (p1_h, P1_N2, ns2);
break;
case 13:
nout = sscanf (MIKRO_Receive, "%x %x", &n1,&n2);
ierr = SetCtrlVal (p1_h, P1_N2, n2);
break;
default:
break;
}
ierr = SetCtrlVal (p1_h, P1_N1, nin);
ierr = SetCtrlVal (p1_h, P1_S2, MIKRO_Receive);
*/
break;
case P1_B3: // reset
/*
ierr = GetCtrlVal (p1_h, P1_N3, &nid);
ierr = GetCtrlVal (p1_h, P1_STAGETYPE, &type);
MIKRO_Reset(nid);
rstat = GetNumTextBoxLines (p1_h, P1_T1, &atline);
rstat = InsertTextBoxLine (p1_h, P1_T1, atline, MIKRO_Receive);
MIKRO_Init(nid, type);
*/
break;
case P1_B4: // status
/*
ierr = GetCtrlVal (p1_h, P1_N3, &nid);
n2=MIKRO_GetStat(nid);
ierr = SetCtrlVal (p1_h, P1_N2, n2);
ierr = SetCtrlVal (p1_h, P1_N1, nin);
ierr = SetCtrlVal (p1_h, P1_S2, MIKRO_Receive);
for (i=0; i<16; i++) {
ierr = SetCtrlVal (p1_h, lid[i], n2 & 1);
n2>>=1;
}
*/
break;
case P1_EN:
/*
ierr = GetCtrlVal (p1_h, P1_N3, &nid);
MIKRO_Cmd(nid,"en");
*/
break;
default:
break;
}
Delay(0.1);
n2 = LTS_GetPosition(0);
SetCtrlVal (p1_h, P1_XP, n2);
n2 = LTS_GetPosition(1);
SetCtrlVal (p1_h, P1_YP, n2);
n2 = LTS_GetPosition(2);
SetCtrlVal (p1_h, P1_ZP, n2);
}
 
GetCtrlVal (p1_h, P1_COMLED, &comled);
if (comled) for (int i=0;i<3;i++) LTS_Close (i);
 
return 0;
}
 
 
#else
// *************************************
 
int main(int argc, char ** argv)
{
//Sets up simulations. Comment in if running on physical hardware.
//TLI_InitializeSimulations();
 
//Input serial number. Change for your specific device.
//serials = ["45388004", "45387934","45388034"]
 
 
//Build Device List and open device.
TLI_BuildDeviceList();
TLI_DeviceInfo info;
int err=0;
for (int i=0;i<3;i++){
TLI_GetDeviceInfo(serialNumbers[i], &info);
printf("%s\n", info.description);
Sleep(1000);
err |= LTS_Init(i);
}
for (int i=0;i<3;i++){
 
//Move the stage and wait for the return message before continuing.
for (int k=0;k<10;k++){
LTS_MoveAbsolute(i,k);
printf( "Moving ...\n");
waitMove(serialNumbers[i]);
printf( "Move Complete...\n");
}
}
for (int i=0;i<3;i++){
LTS_Close(i);
}
//Closes simulations. Comment if running on physical hardware.
//TLI_UninitializeSimulations();
Delay(10);
return 0;
}
#endif
/cvi/instr/ThorlabsMotionControlIntegratedStepperMotors.h
0,0 → 1,1868
// summary: Declares the functions class
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the ISC_EXPORTS
// symbol defined on the command line. This symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// ISC_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
 
#pragma once
 
#ifdef ISCDLL_EXPORTS
#define ISC_API __declspec(dllexport)
#else
#define ISC_API __declspec(dllimport)
#endif
 
#include <OaIdl.h>
 
/** @defgroup IntegratedStepperMotors Integrated Stepper Motors
* This section details the Structures and Functions relavent to the @ref ISC000_page "Integrated Stepper Motors"<br />
* For an example of how to connect to the device and perform simple operations use the following links:
* <list type=bullet>
* <item> \ref namespaces_mff_ex_1 "Example of using the Thorlabs.MotionControl.IntegratedStepperMotors.DLL from a C or C++ project."<br />
* This requires the DLL to be dynamical linked. </item>
* <item> \ref namespaces_mff_ex_2 "Example of using the Thorlabs.MotionControl.IntegratedStepperMotors.DLL from a C# project"<br />
* This uses Marshalling to load and access the C DLL. </item>
* </list>
* The Thorlabs.MotionControl.IntegratedStepperMotors.DLL requires the following DLLs
* <list type=bullet>
* <item> Thorlabs.MotionControl.DeviceManager. </item>
* </list>
* @{
*/
 
extern "C"
{
/// \cond NOT_MASTER
 
/// <summary> Values that represent FT_Status. </summary>
typedef enum FT_Status : short
{
FT_OK = 0x00, /// <OK - no error.
FT_InvalidHandle = 0x01, ///<Invalid handle.
FT_DeviceNotFound = 0x02, ///<Device not found.
FT_DeviceNotOpened = 0x03, ///<Device not opened.
FT_IOError = 0x04, ///<I/O error.
FT_InsufficientResources = 0x05, ///<Insufficient resources.
FT_InvalidParameter = 0x06, ///<Invalid parameter.
FT_DeviceNotPresent = 0x07, ///<Device not present.
FT_IncorrectDevice = 0x08 ///<Incorrect device.
} FT_Status;
 
/// <summary> Values that represent THORLABSDEVICE_API. </summary>
typedef enum MOT_MotorTypes
{
MOT_NotMotor = 0,
MOT_DCMotor = 1,
MOT_StepperMotor = 2,
MOT_BrushlessMotor = 3,
MOT_CustomMotor = 100,
} MOT_MotorTypes;
 
/// <summary> Values that represent Travel Modes. </summary>
typedef enum MOT_TravelModes : int
{
MOT_TravelModeUndefined,///<Undefined
MOT_Linear = 0x01,///<Linear travel, default units are millimeters
MOT_Rotational = 0x02,///<Rotational travel, default units are degrees
} MOT_TravelModes;
 
/// <summary> Values that represent Travel Modes. </summary>
typedef enum MOT_TravelDirection : short
{
MOT_TravelDirectionUndefined,///<Undefined
MOT_Forwards = 0x01,///<Move in a Forward direction
MOT_Reverse = 0x02,///<Move in a Backward / Reverse direction
} MOT_TravelDirection;
 
/// <summary> Values that represent Limit Switch Directions. </summary>
typedef enum MOT_HomeLimitSwitchDirection : short
{
MOT_LimitSwitchDirectionUndefined,///<Undefined
MOT_ReverseLimitSwitch = 0x01,///<Limit switch in forward direction
MOT_ForwardLimitSwitch = 0x04,///<Limit switch in reverse direction
} MOT_HomeLimitSwitchDirection;
 
/// <summary> Values that represent Direction Type. </summary>
typedef enum MOT_DirectionSense : short
{
MOT_Normal = 0x00,///<Move / Jog direction is normal (clockwise).
MOT_Backwards = 0x01,///<Move / Jog direction is reversed (anti clockwise).
} MOT_DirectionSense;
 
/// <summary> Values that represent the motor Jog Modes. </summary>
typedef enum MOT_JogModes : short
{
MOT_JogModeUndefined = 0x00,///<Undefined
MOT_Continuous = 0x01,///<Continuous jogging
MOT_SingleStep = 0x02,///<Jog 1 step at a time
} MOT_JogModes;
 
/// <summary> Values that represent the motor Jog Modes. </summary>
typedef enum MOT_StopModes : short
{
MOT_StopModeUndefined = 0x00,///<Undefined
MOT_Immediate = 0x01,///<Stops immediate
MOT_Profiled = 0x02,///<Stops using a velocity profile
} MOT_StopModes;
 
/// <summary> Values that represent the motor Button Modes. </summary>
typedef enum MOT_ButtonModes : WORD
{
MOT_ButtonModeUndefined = 0x00,///<Undefined
MOT_JogMode = 0x01,///<Jog motor in correct direction for button
MOT_Preset = 0x02,///<Move to preset position
} MOT_ButtonModes;
 
/// <summary> Value that represent action to be taken when motor hits a limit switch. </summary>
typedef enum MOT_LimitSwitchModes : WORD
{
MOT_LimitSwitchModeUndefined = 0x00,///<Undefined
MOT_LimitSwitchIgnoreSwitch=0x01,///<Ignore limit switch
MOT_LimitSwitchMakeOnContact=0x02,///<Switch makes on contact
MOT_LimitSwitchBreakOnContact=0x03,///<Switch breaks on contact
MOT_LimitSwitchMakeOnHome=0x04,///<Switch makes on contact when homing
MOT_LimitSwitchBreakOnHome=0x05,///<Switch breaks on contact when homing
MOT_PMD_Reserved=0x06,///<Reserved for PMD brushless servo controllers
MOT_LimitSwitchIgnoreSwitchSwapped = 0x81,///<Ignore limit switch (swapped)
MOT_LimitSwitchMakeOnContactSwapped = 0x82,///<Switch makes on contact (swapped)
MOT_LimitSwitchBreakOnContactSwapped = 0x83,///<Switch breaks on contact (swapped)
MOT_LimitSwitchMakeOnHomeSwapped = 0x84,///<Switch makes on contact when homing (swapped)
MOT_LimitSwitchBreakOnHomeSwapped = 0x85,///<Switch breaks on contact when homing (swapped)
} MOT_LimitSwitchModes;
 
/// <summary> Value that represent action to be taken when motor hits a limit switch. </summary>
typedef enum MOT_LimitSwitchSWModes : WORD
{
MOT_LimitSwitchSWModeUndefined = 0x00,///<Undefined
MOT_LimitSwitchIgnored=0x01,///<Ignore limit switch
MOT_LimitSwitchStopImmediate=0x02,///<Stop immediately when hitting limit switch
MOT_LimitSwitchStopProfiled=0x03,///<Stop profiled when hitting limit switch
MOT_LimitSwitchIgnored_Rotational=0x81,///<Ignore limit switch (rotational stage)
MOT_LimitSwitchStopImmediate_Rotational=0x82,///<Stop immediately when hitting limit switch (rotational stage)
MOT_LimitSwitchStopProfiled_Rotational=0x83,///<Stop profiled when hitting limit switch (rotational stage)
} MOT_LimitSwitchSWModes;
 
/// <summary> Values that represent MOT_LimitsSoftwareApproachPolicy. </summary>
typedef enum MOT_LimitsSoftwareApproachPolicy : __int16
{
DisallowIllegalMoves = 0,///<Disable any move outside of the current travel range of the stage
AllowPartialMoves,///<Truncate moves to within the current travel range of the stage.
AllowAllMoves,///<Allow all moves, regardless of whether they are within the current travel range of the stage.
} MOT_LimitsSoftwareApproachPolicy;
 
/// <summary> Values that represent DeviceMessageClass message types. </summary>
typedef enum MOT_MovementModes
{
LinearRange = 0x00,///< Fixed Angular Range defined by MinPosition and MaxPosition
RotationalUnlimited = 0x01,///< Unlimited angle
RotationalWrapping = 0x02,///< Angular Range 0 to 360 with wrap around
} MOT_MovementModes;
 
/// <summary> Values that represent DeviceMessageClass message types. </summary>
typedef enum MOT_MovementDirections
{
Quickest = 0x00,///< Uses the shortest travel between two angles
Forwards = 0x01,///< Only rotate in a forward direction
Reverse = 0x02,///< Only rotate in a backward direction
} MOT_MovementDirections;
/// \endcond
 
/// <summary> Information about the device generated from serial number. </summary>
#pragma pack(1)
typedef struct TLI_DeviceInfo
{
/// <summary> The device Type ID, see \ref C_DEVICEID_page "Device serial numbers". </summary>
DWORD typeID;
/// <summary> The device description. </summary>
char description[65];
/// <summary> The device serial number. </summary>
char serialNo[16];
/// <summary> The USB PID number. </summary>
DWORD PID;
 
/// <summary> <c>true</c> if this object is a type known to the Motion Control software. </summary>
bool isKnownType;
/// <summary> The motor type (if a motor).
/// <list type=table>
/// <item><term>MOT_NotMotor</term><term>0</term></item>
/// <item><term>MOT_DCMotor</term><term>1</term></item>
/// <item><term>MOT_StepperMotor</term><term>2</term></item>
/// <item><term>MOT_BrushlessMotor</term><term>3</term></item>
/// <item><term>MOT_CustomMotor</term><term>100</term></item>
/// </list> </summary>
MOT_MotorTypes motorType;
 
/// <summary> <c>true</c> if the device is a piezo device. </summary>
bool isPiezoDevice;
/// <summary> <c>true</c> if the device is a laser. </summary>
bool isLaser;
/// <summary> <c>true</c> if the device is a custom type. </summary>
bool isCustomType;
/// <summary> <c>true</c> if the device is a rack. </summary>
bool isRack;
/// <summary> Defines the number of channels available in this device. </summary>
short maxChannels;
} TLI_DeviceInfo;
 
/// <summary> Structure containing the Hardware Information. </summary>
typedef struct TLI_HardwareInformation
{
/// <summary> The device serial number. </summary>
/// <remarks> The device serial number is a serial number,<br />starting with 2 digits representing the device type<br /> and a 6 digit unique value.</remarks>
DWORD serialNumber;
/// <summary> The device model number. </summary>
/// <remarks> The model number uniquely identifies the device type as a string. </remarks>
char modelNumber[8];
/// <summary> The type. </summary>
/// <remarks> Do not use this value to identify a particular device type. Please use <see cref="TLI_DeviceInfo"/> typeID for this purpose.</remarks>
WORD type;
/// <summary> The device firmware version. </summary>
DWORD firmwareVersion;
/// <summary> The device notes read from the device. </summary>
char notes[48];
/// <summary> The device dependant data. </summary>
BYTE deviceDependantData[12];
/// <summary> The device hardware version. </summary>
WORD hardwareVersion;
/// <summary> The device modification state. </summary>
WORD modificationState;
/// <summary> The number of channels the device provides. </summary>
short numChannels;
} TLI_HardwareInformation;
 
/// <summary> Structure containing the velocity parameters. </summary>
/// <remarks> Moves are performed using a velocity profile.<br />
/// The move starts at the Minimum Velocity (always 0 at present) and accelerated to the Maximum Velocity using the defined Acceleration.<br/>
/// The move is usually completed using a similar deceleration.<br/>
/// For further information see \ref C_MOTOR_sec11 "Positioning" </remarks>
/// <seealso cref="MOT_JogParameters"/>
/// <seealso cref="MOT_HomingParameters"/>
typedef struct MOT_VelocityParameters
{
/// <summary> The minimum velocity in \ref DeviceUnits_page usually 0. </summary>
int minVelocity;
/// <summary> The acceleration in \ref DeviceUnits_page. </summary>
int acceleration;
/// <summary> The maximum velocity in \ref DeviceUnits_page. </summary>
int maxVelocity;
} MOT_VelocityParameters;
 
/// <summary> Structure containing the jog parameters. </summary>
/// <remarks> Jogs are performed using a velocity profile over small fixed distances.<br />
/// The move starts at the Minimum Velocity (always 0 at present) and accelerated to the Maximum Velocity using the defined Acceleration.<br/>
/// The move is usually completed using a similar deceleration.<br/>
/// For further information see \ref C_MOTOR_sec12 "Jogging" </remarks>
/// <seealso cref="MOT_VelocityParameters"/>
/// <seealso cref="MOT_HomingParameters"/>
typedef struct MOT_JogParameters
{
/// <summary> The jogging mode. </summary>
/// <remarks> The mode can be one of the following:
/// <list type=table>
/// <item><term>1</term><term>Continuous Jogging<br />The device will continue moving until the end stop is reached or the device button is raised</term></item>
/// <item><term>2</term><term>Step Jogbr />The device will move by a fixed amount as defined in this structure.</term></item>
/// </list></remarks>
MOT_JogModes mode;
/// <summary> The step size in \ref DeviceUnits_page. </summary>
unsigned int stepSize;
/// <summary> The MOT_VelocityParameters for the jog. </summary>
MOT_VelocityParameters velParams;
/// <summary> The Stop Mode</summary>
/// <remarks> The Stop Mode determines how the jog should stop.
/// <list type=table>
/// <item><term>1</term><term>Immediate</term></item>
/// <item><term>2</term><term>Profiled.</term></item>
/// </list> </remarks>
MOT_StopModes stopMode;
} MOT_JogParameters;
 
/// <summary> Structure containing the homing parameters. </summary>
/// <remarks> Homing is performed using a constant velocity.<br />
/// The home starts moving the motor in the defined direction until the limit switch is detected.<br/>
/// The device will then vback off from the limit switch by the defined offset distance.<br />
/// For further information see \ref C_MOTOR_sec10 "Homing" </remarks>
/// <seealso cref="MOT_VelocityParameters"/>
/// <seealso cref="MOT_JogParameters"/>
typedef struct MOT_HomingParameters
{
/// <summary> The Homing direction sense </summary>
/// <remarks> The Homing Operation will always move in a decreasing position sense, but the actuator gearing may change the actual physical sense<br/>
/// Therefore the homing direction can correct the physical sense.
/// <list type=table>
/// <item><term>1</term><term>Forwards</term></item>
/// <item><term>2</term><term>Backwards.</term></item>
/// </list></remarks>
MOT_TravelDirection direction;
/// <summary> The limit switch direction. </summary>
/// <remarks> The limit switch which will be hit when homing completes.
/// <list type=table>
/// <item><term>1</term><term>Forward Limit Switch</term></item>
/// <item><term>2</term><term>Reverse Limit Switch.</term></item>
/// </list</remarks>
MOT_HomeLimitSwitchDirection limitSwitch;
/// <summary> The velocity in small indivisible units. </summary>
/// <remarks> As the homing operation is performed at a much lower velocity, to achieve accuracy, a profile is not required.</remarks>
unsigned int velocity;
/// <summary> Distance of home from limit in small indivisible units. </summary>
unsigned int offsetDistance;
} MOT_HomingParameters;
 
/// <summary> Structure containing the limit switch parameters. </summary>
typedef struct MOT_LimitSwitchParameters
{
/// <summary> Defines the clockwise hardware limit. </summary>
/// <remarks> The clockwise hardware limit
/// <list type=table>
/// <item><term>0x01</term><term>Ignore limit switch</term></item>
/// <item><term>0x02</term><term>Make on contact.</term></item>
/// <item><term>0x03</term><term>Break on contact.</term></item>
/// <item><term>0x04</term><term>Makes on contact when homing</term></item>
/// <item><term>0x05</term><term>Break on contact when homing.</term></item>
/// <item><term>0x06</term><term>Reserved for PMD brushless servo controllers.</term></item>
/// <item><term>0x80</term><term>Switch mode when using a rotational stage.</term></item>
/// </list> </remarks>
MOT_LimitSwitchModes clockwiseHardwareLimit;
/// <summary> Defines the anticlockwise hardware limit. </summary>
/// <remarks> The anticlockwise hardware limit
/// <list type=table>
/// <item><term>0x01</term><term>Ignore limit switch</term></item>
/// <item><term>0x02</term><term>Make on contact.</term></item>
/// <item><term>0x03</term><term>Break on contact.</term></item>
/// <item><term>0x04</term><term>Makes on contact when homing</term></item>
/// <item><term>0x05</term><term>Break on contact when homing.</term></item>
/// <item><term>0x06</term><term>Reserved for PMD brushless servo controllers.</term></item>
/// <item><term>0x80</term><term>Switch mode when using a rotational stage.</term></item>
/// </list> </remarks>
MOT_LimitSwitchModes anticlockwiseHardwareLimit;
/// <summary> poition of clockwise software limit in \ref DeviceUnits_page. </summary>
DWORD clockwisePosition;
/// <summary> poition of anticlockwise software limit in \ref DeviceUnits_page. </summary>
DWORD anticlockwisePosition;
/// <summary> Actions to take when software limit is detected. </summary>
/// <remarks> The anticlockwise hardware limit
/// <list type=table>
/// <item><term>0x01</term><term>Ignore limit switche.</term></item>
/// <item><term>0x02</term><term>Stop Immediate.</term></item>
/// <item><term>0x03</term><term>Profiled stop.</term></item>
/// <item><term>0x82</term><term>Stop Immediate (rotational stage).</term></item>
/// <item><term>0x83</term><term>Profiled stop (rotational stage).</term></item>
/// </list> </remarks>
MOT_LimitSwitchSWModes softLimitMode;
} MOT_LimitSwitchParameters;
 
/// <summary> Structure containing power settings for the stepper controllers. </summary>
typedef struct MOT_PowerParameters
{
/// <summary> Percentage of full power to give while not moving (0 - 100). </summary>
WORD restPercentage;
/// <summary> Percentage of full power to give while moving (0 - 100). </summary>
WORD movePercentage;
} MOT_PowerParameters;
 
/// <summary> Structure containing the button action definition parameters. </summary>
typedef struct MOT_ButtonParameters
{
/// <summary> Defines the mode of operation of the device buttons </summary>
/// <remarks> The buttons on a Device can be defined to either jog or move to a preset position.
/// <list type=table>
/// <item><term>1</term><term>Jog the device according to the MOT_JogParameters</term></item>
/// <item><term>2</term><term>Move to the preset button positions.</term></item>
/// </list></remarks>
MOT_ButtonModes buttonMode;
/// <summary> Position in encoder counts to go to when left button is pressed. </summary>
int leftButtonPosition;
/// <summary> Position in encoder counts to go to when right button is pressed. </summary>
int rightButtonPosition;
/// <summary> The Time a button needs to be held down for to record the position as a preset. </summary>
/// <remarks> For information only - cannot be set. </remarks>
WORD timeout;
/// <summary> Not Used. </summary>
WORD unused;
} MOT_ButtonParameters;
 
/// <summary> Structure containing the Potentiometer step parameters. </summary>
/// <remarks> MOT_PotentiometerStep define steps in the MOT_PotentiometerSteps structure as a look up table.</remarks>
typedef struct MOT_PotentiometerStep
{
/// <summary> Deflection of potentiometer 0 - 127 from center point which defines step range. </summary>
WORD thresholdDeflection;
/// <summary> The velocity for the defined range. </summary>
DWORD velocity;
} MOT_PotentiometerStep;
 
/// <summary> Structure containing the Potentiometer step look up table. </summary>
/// <remarks> The structure defines a lookup table with 4 discrete steps</remarks>
typedef struct MOT_PotentiometerSteps
{
/// <summary> The 4 defined MOT_PotentiometerStep positions. </summary>
MOT_PotentiometerStep potentiometerStepParameters[4];
} MOT_PotentiometerSteps;
 
#pragma pack()
 
/// <summary> Build the DeviceList. </summary>
/// <remarks> This function builds an internal collection of all devices found on the USB that are not currently open. <br />
/// NOTE, if a device is open, it will not appear in the list until the device has been closed. </remarks>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_BuildDeviceList(void);
 
/// <summary> Gets the device list size. </summary>
/// \include CodeSnippet_identification.cpp
/// <returns> Number of devices in device list. </returns>
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceListSize();
 
/// <summary> Get the entire contents of the device list. </summary>
/// <param name="stringsReceiver"> Outputs a SAFEARRAY of strings holding device serial numbers. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceList(SAFEARRAY** stringsReceiver);
 
/// <summary> Get the contents of the device list which match the supplied typeID. </summary>
/// <param name="stringsReceiver"> Outputs a SAFEARRAY of strings holding device serial numbers. </param>
/// <param name="typeID">The typeID of devices to match, see \ref C_DEVICEID_page "Device serial numbers". </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID);
 
/// <summary> Get the contents of the device list which match the supplied typeIDs. </summary>
/// <param name="stringsReceiver"> Outputs a SAFEARRAY of strings holding device serial numbers. </param>
/// <param name="typeIDs"> list of typeIDs of devices to be matched, see \ref C_DEVICEID_page "Device serial numbers"</param>
/// <param name="length"> length of type list</param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length);
 
/// <summary> Get the entire contents of the device list. </summary>
/// <param name="receiveBuffer"> a buffer in which to receive the list as a comma separated string. </param>
/// <param name="sizeOfBuffer"> The size of the output string buffer. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer);
 
/// <summary> Get the contents of the device list which match the supplied typeID. </summary>
/// <param name="receiveBuffer"> a buffer in which to receive the list as a comma separated string. </param>
/// <param name="sizeOfBuffer"> The size of the output string buffer. </param>
/// <param name="typeID"> The typeID of devices to be matched, see \ref C_DEVICEID_page "Device serial numbers"</param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID);
 
/// <summary> Get the contents of the device list which match the supplied typeIDs. </summary>
/// <param name="receiveBuffer"> a buffer in which to receive the list as a comma separated string. </param>
/// <param name="sizeOfBuffer"> The size of the output string buffer. </param>
/// <param name="typeIDs"> list of typeIDs of devices to be matched, see \ref C_DEVICEID_page "Device serial numbers"</param>
/// <param name="length"> length of type list</param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
ISC_API short __cdecl TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length);
 
/// <summary> Get the device information from the USB port. </summary>
/// <remarks> The Device Info is read from the USB port not from the device itself.<remarks>
/// <param name="serialNo"> The serial number of the device. </param>
/// <param name="info"> The <see cref="TLI_DeviceInfo"/> device information. </param>
/// <returns> 1 if successful, 0 if not. </returns>
/// \include CodeSnippet_identification.cpp
/// <seealso cref="TLI_GetDeviceListSize()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
/// <seealso cref="TLI_GetDeviceListByType(SAFEARRAY** stringsReceiver, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypes(SAFEARRAY** stringsReceiver, int * typeIDs, int length)" />
/// <seealso cref="TLI_GetDeviceListExt(char *receiveBuffer, DWORD sizeOfBuffer)" />
/// <seealso cref="TLI_GetDeviceListByTypeExt(char *receiveBuffer, DWORD sizeOfBuffer, int typeID)" />
/// <seealso cref="TLI_GetDeviceListByTypesExt(char *receiveBuffer, DWORD sizeOfBuffer, int * typeIDs, int length)" />
ISC_API short __cdecl TLI_GetDeviceInfo(char const * serialNo, TLI_DeviceInfo *info);
 
/// <summary> Initialize a connection to the Simulation Manager, which must already be running. </summary>
/// <remarks> Call TLI_InitializeSimulations before TLI_BuildDeviceList at the start of the program to make a connection to the simulation manager.<Br />
/// Any devices configured in the simulation manager will become visible TLI_BuildDeviceList is called and can be accessed using TLI_GetDeviceList.<Br />
/// Call TLI_InitializeSimulations at the end of the program to release the simulator. </remarks>
/// <seealso cref="TLI_UninitializeSimulations()" />
/// <seealso cref="TLI_BuildDeviceList()" />
/// <seealso cref="TLI_GetDeviceList(SAFEARRAY** stringsReceiver)" />
ISC_API void __cdecl TLI_InitializeSimulations();
 
/// <summary> Uninitialize a connection to the Simulation Manager, which must already be running. </summary>
/// <seealso cref="TLI_InitializeSimulations()" />
ISC_API void __cdecl TLI_UninitializeSimulations();
 
/// <summary> Open the device for communications. </summary>
/// <param name="serialNo"> The serial no of the device to be connected. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_connection1.cpp
/// <seealso cref="ISC_Close(char const * serialNo)" />
ISC_API short __cdecl ISC_Open(char const * serialNo);
 
/// <summary> Disconnect and close the device. </summary>
/// <param name="serialNo"> The serial no of the device to be disconnected. </param>
/// \include CodeSnippet_connection1.cpp
/// <seealso cref="ISC_Open(char const * serialNo)" />
ISC_API void __cdecl ISC_Close(char const * serialNo);
 
/// <summary> Check connection. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> true if the USB is listed by the ftdi controller</returns>
/// \include CodeSnippet_CheckConnection.cpp
ISC_API bool __cdecl ISC_CheckConnection(char const * serialNo);
 
/// <summary> Sends a command to the device to make it identify iteself. </summary>
/// <param name="serialNo"> The device serial no. </param>
ISC_API void __cdecl ISC_Identify(char const * serialNo);
 
/// <summary> Get the LED indicator bits on device. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> Sum of: 8 to indicate moving 2 to indicate end of track and 1 to flash on identify command. </returns>
/// <seealso cref="ISC_SetLEDswitches(char const * serialNo, WORD LEDswitches)" />
ISC_API WORD __cdecl ISC_GetLEDswitches(char const * serialNo);
 
/// <summary> Set the LED indicator bits on device. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="LEDswitches"> Sum of: 8 to indicate moving 2 to indicate end of track and 1 to flash on identify command. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetLEDswitches(char const * serialNo)" />
ISC_API short __cdecl ISC_SetLEDswitches(char const * serialNo, WORD LEDswitches);
 
/// <summary> Gets the hardware information from the device. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="modelNo"> Address of a buffer to receive the model number string. Minimum 8 characters </param>
/// <param name="sizeOfModelNo"> The size of the model number buffer, minimum of 8 characters. </param>
/// <param name="type"> Address of a WORD to receive the hardware type number. </param>
/// <param name="numChannels"> Address of a short to receive the number of channels. </param>
/// <param name="notes"> Address of a buffer to receive the notes describing the device. </param>
/// <param name="sizeOfNotes"> The size of the notes buffer, minimum of 48 characters. </param>
/// <param name="firmwareVersion"> Address of a DWORD to receive the firmware version number made up of 4 byte parts. </param>
/// <param name="hardwareVersion"> Address of a WORD to receive the hardware version number. </param>
/// <param name="modificationState"> Address of a WORD to receive the hardware modification state number. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identify.cpp
ISC_API short __cdecl ISC_GetHardwareInfo(char const * serialNo, char * modelNo, DWORD sizeOfModelNo, WORD * type, WORD * numChannels,
char * notes, DWORD sizeOfNotes, DWORD * firmwareVersion, WORD * hardwareVersion, WORD * modificationState);
 
/// <summary> Gets the hardware information in a block. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="hardwareInfo"> Address of a TLI_HardwareInformation structure to receive the hardware information. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// \include CodeSnippet_identify.cpp
ISC_API short __cdecl ISC_GetHardwareInfoBlock(char const * serialNo, TLI_HardwareInformation *hardwareInfo);
 
/// <summary> Gets version number of the device firmware. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The device firmware version number made up of 4 byte parts. </returns>
/// \include CodeSnippet_identify.cpp
ISC_API DWORD __cdecl ISC_GetFirmwareVersion(char const * serialNo);
 
/// <summary> Gets version number of the device software. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The device software version number made up of 4 byte parts. </returns>
/// \include CodeSnippet_identify.cpp
ISC_API DWORD __cdecl ISC_GetSoftwareVersion(char const * serialNo);
 
/// <summary> Set the calibration file for this motor. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="filename"> Filename of the calibration file to load. </param>
/// <param name="enabled"> <c>true</c> to enable, <c>false</c> to disable. </param>
/// <seealso cref="ISC_IsCalibrationActive(char const * serialNo)" />
/// <seealso cref="ISC_GetCalibrationFile(char const * serialNo, char * filename, short sizeOfBuffer)" />
ISC_API void __cdecl ISC_SetCalibrationFile(char const * serialNo, char const *filename, bool enabled);
 
/// <summary> Is a calibration file active for this motor. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> <c>true</c> if A calibration file is active. </returns>
/// <seealso cref="ISC_GetCalibrationFile(char const * serialNo, char * filename, short sizeOfBuffer)" />
/// <seealso cref="ISC_SetCalibrationFile(char const * serialNo, char const *filename, bool enabled)" />
ISC_API bool __cdecl ISC_IsCalibrationActive(char const * serialNo);
 
/// <summary> Get calibration file for this motor. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="filename"> Address of an output buffer to receive the filename. </param>
/// <param name="sizeOfBuffer"> The size of the filename output buffer. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// <seealso cref="ISC_IsCalibrationActive(char const * serialNo)" />
/// <seealso cref="ISC_SetCalibrationFile(char const * serialNo, char const *filename, bool enabled)" />
ISC_API bool __cdecl ISC_GetCalibrationFile(char const * serialNo, char * filename, short sizeOfBuffer);
 
/// <summary> Update device with stored settings. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// \include CodeSnippet_connection1.cpp
ISC_API bool __cdecl ISC_LoadSettings(char const * serialNo);
 
/// <summary> Update device with named settings. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="settingsName"> Name of settings stored away from device. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// \include CodeSnippet_connection1.cpp
ISC_API bool __cdecl ISC_LoadNamedSettings(char const * serialNo, char const *settingsName);
 
/// <summary> persist the devices current settings. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
ISC_API bool __cdecl ISC_PersistSettings(char const * serialNo);
 
/// <summary> Reset the stage settings to defaults. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
ISC_API short __cdecl ISC_ResetStageToDefaults(char const * serialNo);
 
/// <summary> Disable the channel so that motor can be moved by hand. </summary>
/// <remarks> When disabled power is removed from the motor and it can be freely moved.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_EnableChannel(char const * serialNo)" />
ISC_API short __cdecl ISC_DisableChannel(char const * serialNo);
 
/// <summary> Enable channel for computer control. </summary>
/// <remarks> When enabled power is applied to the motor so it is fixed in position.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_DisableChannel(char const * serialNo)" />
ISC_API short __cdecl ISC_EnableChannel(char const * serialNo);
 
/// <summary> Get number of positions. </summary>
/// <remarks> The GetNumberPositions function will get the maximum position reachable by the device.<br />
/// The motor may need to be \ref C_MOTOR_sec10 "Homed" before this parameter can be used. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The number of positions. </returns>
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// <seealso cref="ISC_Home(char const * serialNo)" />
/// \include CodeSnippet_move.cpp
ISC_API int __cdecl ISC_GetNumberPositions(char const * serialNo);
 
/// <summary> Move the device to the specified position (index). </summary>
/// <remarks> The motor may need to be \ref C_MOTOR_sec10 "Homed" before a position can be set<br />
/// see \ref C_MOTOR_sec11 "Positioning" for more detail. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="index"> The position in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if move successfully started. </returns>
/// <seealso cref="ISC_GetNumberPositions(char const * serialNo)" />
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_move.cpp
ISC_API short __cdecl ISC_MoveToPosition(char const * serialNo, int index);
 
/// <summary> Get the current position. </summary>
/// <remarks> The current position is the last recorded position.<br />
/// The current position is updated either by the polling mechanism or<br />
/// by calling <see cref="RequestPosition" /> or <see cref="RequestStatus" />.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The current position in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_GetNumberPositions(char const * serialNo)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_Home(char const * serialNo)" />
/// \include CodeSnippet_move.cpp
ISC_API int __cdecl ISC_GetPosition(char const * serialNo);
 
/// <summary> Can the device perform a Home. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> <c>true</c> if the device can home. </returns>
ISC_API bool __cdecl ISC_CanHome(char const * serialNo);
 
/// \deprecated
/// <summary> Does the device need to be Homed before a move can be performed. </summary>
/// <remarks> superceded by <see cref="ISC_CanMoveWithoutHomingFirst(char const * serialNo)"/> </remarks>
/// <param name="serialNo"> The serial no. </param>
/// <returns> <c>true</c> if the device needs homing. </returns>
ISC_API bool __cdecl ISC_NeedsHoming(char const * serialNo);
 
/// <summary> Can this device be moved without Homing. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> <c>true</c> if the device does not need to be homed before a move can be commanded. </returns>
ISC_API bool __cdecl ISC_CanMoveWithoutHomingFirst(char const * serialNo);
 
/// <summary> Home the device. </summary>
/// <remarks> Homing the device will set the device to a known state and determine the home position,<br />
/// see \ref C_MOTOR_sec10 "Homing" for more detail. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if move successfully started. </returns>
/// <seealso cref="ISC_GetNumberPositions(char const * serialNo)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// \include CodeSnippet_move.cpp
ISC_API short __cdecl ISC_Home(char const * serialNo);
 
/// <summary> Clears the device message queue. </summary>
/// <remarks> see \ref C_MESSAGES_page "Device Messages" for details on how to use messages. </remarks>
/// <param name="serialNo"> The device serial no. </param>
ISC_API void __cdecl ISC_ClearMessageQueue(char const * serialNo);
 
/// <summary> Registers a callback on the message queue. </summary>
/// <remarks> see \ref C_MESSAGES_page "Device Messages" for details on how to use messages. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="functionPointer"> A function pointer to be called whenever messages are received. </param>
/// <seealso cref="ISC_MessageQueueSize(char const * serialNo)" />
/// <seealso cref="ISC_GetNextMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
/// <seealso cref="ISC_WaitForMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
ISC_API void __cdecl ISC_RegisterMessageCallback(char const * serialNo, void (* functionPointer)());
 
/// <summary> Gets the MessageQueue size. </summary>
/// <remarks> see \ref C_MESSAGES_page "Device Messages" for details on how to use messages. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> number of messages in the queue. </returns>
/// <seealso cref="ISC_RegisterMessageCallback(char const * serialNo, void (* functionPointer)())" />
/// <seealso cref="ISC_GetNextMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
/// <seealso cref="ISC_WaitForMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
ISC_API int __cdecl ISC_MessageQueueSize(char const * serialNo);
 
/// <summary> Get the next MessageQueue item. </summary>
/// <remarks> see \ref C_MESSAGES_page "Device Messages" for details on how to use messages. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="messageType"> The address of the parameter to receive the message Type. </param>
/// <param name="messageID"> The address of the parameter to receive the message id. </param>
/// <param name="messageData"> The address of the parameter to receive the message data. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// <seealso cref="ISC_RegisterMessageCallback(char const * serialNo, void (* functionPointer)())" />
/// <seealso cref="ISC_MessageQueueSize(char const * serialNo)" />
/// <seealso cref="ISC_WaitForMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
ISC_API bool __cdecl ISC_GetNextMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData);
 
/// <summary> Wait for next MessageQueue item. </summary>
/// <remarks> see \ref C_MESSAGES_page "Device Messages" for details on how to use messages. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="messageType"> The address of the parameter to receive the message Type. </param>
/// <param name="messageID"> The address of the parameter to receive the message id. </param>
/// <param name="messageData"> The address of the parameter to receive the message data. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// <seealso cref="ISC_RegisterMessageCallback(char const * serialNo, void (* functionPointer)())" />
/// <seealso cref="ISC_MessageQueueSize(char const * serialNo)" />
/// <seealso cref="ISC_GetNextMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData)" />
ISC_API bool __cdecl ISC_WaitForMessage(char const * serialNo, WORD * messageType, WORD * messageID, DWORD *messageData);
 
/// <summary> Requests the homing parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetHomingVelocity(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
ISC_API short __cdecl ISC_RequestHomingParams(char const * serialNo);
 
/// <summary> Gets the homing velocity. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The homing velocity in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_SetHomingVelocity(char const * serialNo, unsigned int velocity)" />
/// <seealso cref="ISC_RequestHomingParams(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
/// <seealso cref="ISC_SetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
ISC_API unsigned int __cdecl ISC_GetHomingVelocity(char const * serialNo);
 
/// <summary> Sets the homing velocity. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="velocity"> The homing velocity in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestHomingParams(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingVelocity(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
/// <seealso cref="ISC_SetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
ISC_API short __cdecl ISC_SetHomingVelocity(char const * serialNo, unsigned int velocity);
 
/// <summary> Move the motor by a relative amount. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="displacement"> Signed displacement in \ref DeviceUnits_page.</param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetNumberPositions(char const * serialNo)" />
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_move.cpp
ISC_API short __cdecl ISC_MoveRelative(char const * serialNo, int displacement);
 
/// <summary> Requests the jog parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="SISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="SISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="SISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="SISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_RequestJogParams(const char * serialNo);
 
/// <summary> Gets the jog mode. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="mode"> The address of the short mode to recieve the Mode.
/// <list type=table>
/// <item><term>Jog step</term><term>1</term></item>
/// <item><term>Continuous</term><term>2</term></item>
/// </list> </param>
/// <param name="stopMode"> The address of the short stopMode to recieve the StopMode.
/// <list type=table>
/// <item><term>Immediate Stop</term><term>1</term></item>
/// <item><term>Profiled Stop</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_RequestJogParams(char const * serialNo)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode);
 
/// <summary> Sets the jog mode. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="mode"> The jog mode.
/// <list type=table>
/// <item><term>Jog step</term><term>1</term></item>
/// <item><term>Continuous</term><term>2</term></item>
/// </list> </param>
/// <param name="stopMode"> The StopMode.
/// <list type=table>
/// <item><term>Immediate Stop</term><term>1</term></item>
/// <item><term>Profiled Stop</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode);
 
/// <summary> Gets the distance to move when jogging. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The step in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_RequestJogParams(char const * serialNo)" />
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API unsigned int __cdecl ISC_GetJogStepSize(char const * serialNo);
 
/// <summary> Sets the distance to move on jogging. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="stepSize"> The step in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize);
 
/// <summary> Gets the jog velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="acceleration"> Address of the parameter to receive the acceleration in \ref DeviceUnits_page. </param>
/// <param name="maxVelocity"> Address of the parameter to receive the velocity in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestJogParams(char const * serialNo)" />
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity);
 
/// <summary> Sets jog velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="acceleration"> The acceleration in \ref DeviceUnits_page. </param>
/// <param name="maxVelocity"> The maximum velocity in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity);
 
/// <summary> Perform a jog. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="jogDirection"> The jog direction
/// <list type=table>
/// <item><term>Forwards</term><term>1</term></item>
/// <item><term>Backwards</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// \include CodeSnippet_jog.cpp
ISC_API short __cdecl ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection);
 
/// <summary> Requests the velocity parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
ISC_API short __cdecl ISC_RequestVelParams(char const * serialNo);
 
/// <summary> Gets the move velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec11 "Positioning" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="acceleration"> Address of the parameter to receive the acceleration value in \ref DeviceUnits_page. </param>
/// <param name="maxVelocity"> Address of the parameter to receive the maximum velocity value in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_RequestVelParams(char const * serialNo)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_movepars.cpp
ISC_API short __cdecl ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity);
 
/// <summary> Sets the move velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec11 "Positioning" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="acceleration"> The new acceleration value in \ref DeviceUnits_page. </param>
/// <param name="maxVelocity"> The new maximum velocity value in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_movepars.cpp
ISC_API short __cdecl ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity);
 
/// <summary> Start moving at the current velocity in the specified direction. </summary>
/// <remarks> see \ref C_MOTOR_sec11 "Positioning" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="direction"> The required direction of travel.
/// <list type=table>
/// <item><term>Forwards</term><term>1</term></item>
/// <item><term>Backwards</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// \include CodeSnippet_move.cpp
ISC_API short __cdecl ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction);
 
/// <summary> Sets the motor direction sense. </summary>
/// <remarks> This function is used because some actuators use have directions of motion reversed.<br />
/// This parameter will tell the system to reverse the direction sense whnd moving, jogging etc. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="reverse"> if <c>true</c> then directions will be swapped on these moves. </param>
ISC_API void __cdecl ISC_SetDirection(char const * serialNo, bool reverse);
 
/// <summary> Stop the current move immediately (with risk of losing track of position). </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_StopProfiled(char const * serialNo)" />
ISC_API short __cdecl ISC_StopImmediate(char const * serialNo);
 
/// <summary> Stop the current move using the current velocity profile. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_StopImmediate(char const * serialNo)" />
ISC_API short __cdecl ISC_StopProfiled(char const * serialNo);
 
/// <summary> Requests the backlash. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetBacklash(char const * serialNo)" />
/// <seealso cref="ISC_SetBacklash(char const * serialNo, long distance)" />
ISC_API short __cdecl ISC_RequestBacklash(char const * serialNo);
 
/// <summary> Get the backlash distance setting (used to control hysteresis). </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The backlash distance in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_RequestBacklash(char const * serialNo)" />
/// <seealso cref="ISC_SetBacklash(char const * serialNo, long distance)" />
ISC_API long __cdecl ISC_GetBacklash(char const * serialNo);
 
/// <summary> Sets the backlash distance (used to control hysteresis). </summary>
/// <param name="serialNo"> The serial no. </param>
/// <param name="distance"> The distance in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestBacklash(char const * serialNo)" />
/// <seealso cref="ISC_GetBacklash(char const * serialNo)" />
ISC_API short __cdecl ISC_SetBacklash(char const * serialNo, long distance);
 
/// <summary> Get the Position Counter. </summary>
/// <remarks> The position counter is identical to the position parameter.<br />
/// The position counter is set to zero when homing is complete.<br />
/// The position counter can also be set using <see cref="ISC_SetPositionCounter(char const * serialNo, short channel, long count)" /> <br />
/// if homing is not to be perforned</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> Position Counter in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// <seealso cref="ISC_SetPositionCounter(char const * serialNo, long count)" />
ISC_API long __cdecl ISC_GetPositionCounter(char const * serialNo);
 
/// <summary> Set the Position Counter. </summary>
/// <remarks> Setting the position counter will locate the current position. <br />
/// Setting the position counter will effectively define the home position of a motor. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="count"> Position count in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetPositionCounter(char const * serialNo)" />
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
ISC_API short __cdecl ISC_SetPositionCounter(char const * serialNo, long count);
 
/// <summary> Requests the limit switch parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes * clockwiseHardwareLimit, MOT_LimitSwitchModes * anticlockwiseHardwareLimit, unsigned int * clockwisePosition, unsigned int * anticlockwisePosition, MOT_LimitSwitchSWModes * softLimitMode)" />
/// <seealso cref="ISC_GetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
ISC_API short __cdecl ISC_RequestLimitSwitchParams(char const * serialNo);
 
/// <summary> Gets the limit switch parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="clockwiseHardwareLimit"> The clockwise hardware limit mode.
/// <list type=table>
/// <item><term> Ignore switch or switch not present. </term><term>1</term></item>
/// <item><term> Switch makes on contact. </term><term>2</term></item>
/// <item><term> Switch breaks on contact. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
/// <param name="anticlockwiseHardwareLimit"> The anticlockwise hardware limit mode
/// <list type=table>
/// <item><term> Ignore switch or switch not present. </term><term>1</term></item>
/// <item><term> Switch makes on contact. </term><term>2</term></item>
/// <item><term> Switch breaks on contact. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
///
/// <param name="clockwisePosition"> The poition of the clockwise software limit in \ref DeviceUnits_page. </param>
/// <param name="anticlockwisePosition"> The position of the anticlockwise software limit in \ref DeviceUnits_page. </param>
/// <param name="softLimitMode"> The soft limit mode
/// <list type=table>
/// <item><term> Ignore limit. </term><term>1</term></item>
/// <item><term> Immediate Stop. </term><term>2</term></item>
/// <item><term> SProfiled stop. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes clockwiseHardwareLimit, MOT_LimitSwitchModes anticlockwiseHardwareLimit, unsigned int clockwisePosition, unsigned int anticlockwisePosition, MOT_LimitSwitchSWModes softLimitMode)" />
/// <seealso cref="ISC_SetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
/// <seealso cref="ISC_RequestLimitSwitchParams(char const * serialNo)" />
/// <seealso cref="ISC_GetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
ISC_API short __cdecl ISC_GetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes * clockwiseHardwareLimit, MOT_LimitSwitchModes * anticlockwiseHardwareLimit, unsigned int * clockwisePosition, unsigned int * anticlockwisePosition, MOT_LimitSwitchSWModes * softLimitMode);
 
/// <summary> Sets the limit switch parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="clockwiseHardwareLimit"> The clockwise hardware limit mode.
/// <list type=table>
/// <item><term> Ignore switch or switch not present. </term><term>1</term></item>
/// <item><term> Switch makes on contact. </term><term>2</term></item>
/// <item><term> Switch breaks on contact. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
/// <param name="anticlockwiseHardwareLimit"> The anticlockwise hardware limit mode
/// <list type=table>
/// <item><term> Ignore switch or switch not present. </term><term>1</term></item>
/// <item><term> Switch makes on contact. </term><term>2</term></item>
/// <item><term> Switch breaks on contact. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
///
/// <param name="clockwisePosition"> The poition of the clockwise software limit in \ref DeviceUnits_page. </param>
/// <param name="anticlockwisePosition"> The position of the anticlockwise software limit in \ref DeviceUnits_page. </param>
/// <param name="softLimitMode"> The soft limit mode
/// <list type=table>
/// <item><term> Ignore limit. </term><term>1</term></item>
/// <item><term> Immediate Stop. </term><term>2</term></item>
/// <item><term> SProfiled stop. </term><term>3</term></item>
/// </list> <remarks> If these are bitwise-ORed with 0x0080 then the limits are swapped. </remarks> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestLimitSwitchParams(char const * serialNo)" />
/// <seealso cref="ISC_GetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes * clockwiseHardwareLimit, MOT_LimitSwitchModes * anticlockwiseHardwareLimit, unsigned int * clockwisePosition, unsigned int * anticlockwisePosition, MOT_LimitSwitchSWModes * softLimitMode)" />
/// <seealso cref="ISC_SetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
/// <seealso cref="ISC_GetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
ISC_API short __cdecl ISC_SetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes clockwiseHardwareLimit, MOT_LimitSwitchModes anticlockwiseHardwareLimit, unsigned int clockwisePosition, unsigned int anticlockwisePosition, MOT_LimitSwitchSWModes softLimitMode);
 
/// <summary> Gets the software limits mode. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The software limits mode <list type=table>
/// <item><term> Disable any move outside of the current travel range of the stage. </term><term>0</term></item>
/// <item><term> Truncate moves to within the current travel range of the stage. </term><term>1</term></item>
/// <item><term> Allow all moves, regardless of whether they are within the current travel range of the stage. </term><term>2</term></item>
/// </list>. </returns>
/// <returns> The software limits mode. </returns>
/// <seealso cref="ISC_SetLimitsSoftwareApproachPolicy(const char * serialNo, MOT_LimitsSoftwareApproachPolicy limitsSoftwareApproachPolicy)" />
ISC_API MOT_LimitsSoftwareApproachPolicy __cdecl ISC_GetSoftLimitMode(char const * serialNo);
 
/// <summary> Sets the software limits mode. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="limitsSoftwareApproachPolicy"> The soft limit mode
/// <list type=table>
/// <item><term> Disable any move outside of the current travel range of the stage. </term><term>0</term></item>
/// <item><term> Truncate moves to within the current travel range of the stage. </term><term>1</term></item>
/// <item><term> Allow all moves, regardless of whether they are within the current travel range of the stage. </term><term>2</term></item>
/// </list> </param>
/// <seealso cref="ISC_GetSoftLimitMode(const char * serialNo)" />
ISC_API void __cdecl ISC_SetLimitsSoftwareApproachPolicy(char const * serialNo, MOT_LimitsSoftwareApproachPolicy limitsSoftwareApproachPolicy);
 
// Button Parameters
 
/// <summary> Requests the LTS button parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetButtonParams(char const * serialNo, MOT_ButtonModes * buttonMode, int * leftButtonPosition, int * rightButtonPosition, short * timeout)" />
/// <seealso cref="ISC_SetButtonParams(char const * serialNo, MOT_ButtonModes buttonMode, int leftButtonPosition, int rightButtonPosition)" />
/// <seealso cref="ISC_GetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
/// <seealso cref="ISC_SetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
ISC_API short __cdecl ISC_RequestButtonParams(char const * serialNo);
 
/// <summary> Gets the LTS button parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="buttonMode"> Address of the parameter to receive the button mode.
/// <list type=table>
/// <item><term> Jogging Mode. </term><term>1</term></item>
/// <item><term> Preset Mode. </term><term>2</term></item>
/// </list> </param>
/// <param name="leftButtonPosition"> Address of the parameter to receive the Preset position in \ref DeviceUnits_page for the left button (when in preset mode). </param>
/// <param name="rightButtonPosition"> Address of the parameter to receive the Preset position in \ref DeviceUnits_page for the right button (when in preset mode). </param>
/// <param name="timeout"> The time that buttons need to be pressed in order to go home or to recored a preset buttons defined position. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetButtonParams(char const * serialNo, MOT_ButtonModes buttonMode, int leftButtonPosition, int rightButtonPosition)" />
/// <seealso cref="ISC_SetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
/// <seealso cref="ISC_RequestButtonParams(char const * serialNo)" />
/// <seealso cref="ISC_GetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
ISC_API short __cdecl ISC_GetButtonParams(char const * serialNo, MOT_ButtonModes * buttonMode, int * leftButtonPosition, int * rightButtonPosition, short * timeout);
 
/// <summary> Sets the LTS button parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="buttonMode"> The button mode.
/// <list type=table>
/// <item><term> Jogging Mode. </term><term>1</term></item>
/// <item><term> Preset Mode. </term><term>2</term></item>
/// </list> </param>
/// <param name="leftButtonPosition"> The Preset position in \ref DeviceUnits_page for the left button (when in preset mode). </param>
/// <param name="rightButtonPosition"> The Preset position in \ref DeviceUnits_page for the right button (when in preset mode). </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestButtonParams(char const * serialNo)" />
/// <seealso cref="ISC_GetButtonParams(char const * serialNo, MOT_ButtonModes * buttonMode, int * leftButtonPosition, int * rightButtonPosition, short * timeout)" />
/// <seealso cref="ISC_SetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
/// <seealso cref="ISC_GetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
ISC_API short __cdecl ISC_SetButtonParams(char const * serialNo, MOT_ButtonModes buttonMode, int leftButtonPosition, int rightButtonPosition);
 
/// <summary> Requests the potentiometer parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetPotentiometerParams(char const * serialNo, short index, WORD * thresholdDeflection, DWORD * velocity)" />
/// <seealso cref="ISC_SetPotentiometerParams(char const * serialNo, short index, WORD thresholdDeflection, DWORD velocity)" />
ISC_API short __cdecl ISC_RequestPotentiometerParams(char const * serialNo);
 
/// <summary> Gets the potentiometer parameters for the LTS. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="index"> The potentiometer index to be read. </param>
/// <param name="thresholdDeflection"> Address of the parameter to recieve the potentiometer threshold, range 0 to 127. </param>
/// <param name="velocity"> Address of the parameter to recieve the velocity in \ref DeviceUnits_page for the current potentiometer threshold. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestPotentiometerParams(char const * serialNo)" />
/// <seealso cref="ISC_SetPotentiometerParams(char const * serialNo, short index, WORD thresholdDeflection, DWORD velocity)" />
ISC_API short __cdecl ISC_GetPotentiometerParams(char const * serialNo, short index, WORD * thresholdDeflection, DWORD * velocity);
 
/// <summary> Sets the potentiometer parameters for the LTS. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="index"> The potentiometer index to be stored. </param>
/// <param name="thresholdDeflection"> The potentiometer threshold, range 0 to 127. </param>
/// <param name="velocity"> The velocity in \ref DeviceUnits_page for the current potentiometer threshold. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestPotentiometerParams(char const * serialNo)" />
/// <seealso cref="ISC_GetPotentiometerParams(char const * serialNo, short index, WORD * thresholdDeflection, DWORD * velocity)" />
ISC_API short __cdecl ISC_SetPotentiometerParams(char const * serialNo, short index, WORD thresholdDeflection, DWORD velocity);
 
 
/// <summary> Get the move velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec11 "Positioning" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="velocityParams"> Address of the MOT_VelocityParameters to recieve the velocity parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestVelParams(char const * serialNo)" />
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_SetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_movepars.cpp
ISC_API short __cdecl ISC_GetVelParamsBlock(const char * serialNo, MOT_VelocityParameters *velocityParams);
 
/// <summary> Set the move velocity parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec11 "Positioning" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="velocityParams"> The address of the MOT_VelocityParameters holding the new velocity parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_SetVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetVelParamsBlock(char const * serialNo, MOT_VelocityParameters *velocityParams)" />
/// <seealso cref="ISC_MoveToPosition(char const * serialNo, int index)" />
/// <seealso cref="ISC_MoveRelative(char const * serialNo, int displacement)" />
/// <seealso cref="ISC_MoveAtVelocity(char const * serialNo, MOT_TravelDirection direction)" />
/// \include CodeSnippet_movepars.cpp
ISC_API short __cdecl ISC_SetVelParamsBlock(const char * serialNo, MOT_VelocityParameters *velocityParams);
 
/// <summary> Sets the move absolute position. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="position"> The absolute position in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestMoveAbsolutePosition(char const * serialNo)" />
/// <seealso cref="ISC_GetMoveAbsolutePosition(const char * serialNo)" />
/// <seealso cref="ISC_MoveAbsolute(const char * serialNo)" />
ISC_API short __cdecl ISC_SetMoveAbsolutePosition(const char * serialNo, int position);
 
/// <summary> Requests the position of next absolute move. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMoveAbsolutePosition(const char * serialNo)" />
/// <seealso cref="ISC_SetMoveAbsolutePosition(const char * serialNo, int position)" />
/// <seealso cref="ISC_MoveAbsolute(const char * serialNo)" />
ISC_API short __cdecl ISC_RequestMoveAbsolutePosition(char const * serialNo);
 
/// <summary> Gets the move absolute position. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The move absolute position in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_RequestMoveAbsolutePosition(char const * serialNo)" />
/// <seealso cref="ISC_SetMoveAbsolutePosition(const char * serialNo, int position)" />
/// <seealso cref="ISC_MoveAbsolute(const char * serialNo)" />
ISC_API int __cdecl ISC_GetMoveAbsolutePosition(const char * serialNo);
 
/// <summary> Moves the device to the position defined in the SetMoveAbsolute command. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestMoveAbsolutePosition(char const * serialNo)" />
/// <seealso cref="ISC_SetMoveAbsolutePosition(const char * serialNo, int position)" />
/// <seealso cref="ISC_GetMoveAbsolutePosition(const char * serialNo)" />
ISC_API short __cdecl ISC_MoveAbsolute(const char * serialNo);
 
/// <summary> Sets the move relative distance. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="distance"> The relative distance in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestMoveRelativeDistance(char const * serialNo)" />
/// <seealso cref="ISC_GetMoveRelativeDistance(const char * serialNo)" />
/// <seealso cref="ISC_MoveRelativeDistance(const char * serialNo)" />
ISC_API short __cdecl ISC_SetMoveRelativeDistance(const char * serialNo, int distance);
 
/// <summary> Requests the relative move distance. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMoveRelativeDistance(const char * serialNo)" />
/// <seealso cref="ISC_SetMoveRelativeDistance(const char * serialNo, int distance)" />
/// <seealso cref="ISC_MoveRelativeDistance(const char * serialNo)" />
ISC_API short __cdecl ISC_RequestMoveRelativeDistance(char const * serialNo);
 
/// <summary> Gets the move relative distance. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The move relative distance in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_RequestMoveRelativeDistance(char const * serialNo)" />
/// <seealso cref="ISC_SetMoveRelativeDistance(const char * serialNo, int distance)" />
/// <seealso cref="ISC_MoveRelativeDistance(const char * serialNo)" />
ISC_API int __cdecl ISC_GetMoveRelativeDistance(const char * serialNo);
 
/// <summary> Moves the device by a relative distancce defined by SetMoveRelativeDistance. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestMoveRelativeDistance(char const * serialNo)" />
/// <seealso cref="ISC_SetMoveRelativeDistance(const char * serialNo, int distance)" />
/// <seealso cref="ISC_GetMoveRelativeDistance(const char * serialNo)" />
ISC_API short __cdecl ISC_MoveRelativeDistance(const char * serialNo);
 
/// <summary> Get the homing parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec10 "Homing" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="homingParams"> Address of the MOT_HomingParameters to recieve the homing parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestHomingParams(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingVelocity(char const * serialNo)" />
/// <seealso cref="ISC_SetHomingVelocity(char const * serialNo, unsigned int velocity)" />
/// <seealso cref="ISC_SetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
ISC_API short __cdecl ISC_GetHomingParamsBlock(const char * serialNo, MOT_HomingParameters *homingParams);
 
/// <summary> Set the homing parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec10 "Homing" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="homingParams"> Address of the new homing parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestHomingParams(char const * serialNo)" />
/// <seealso cref="ISC_GetHomingVelocity(char const * serialNo)" />
/// <seealso cref="ISC_SetHomingVelocity(char const * serialNo, unsigned int velocity)" />
/// <seealso cref="ISC_GetHomingParamsBlock(char const * serialNo, MOT_HomingParameters *homingParams)" />
ISC_API short __cdecl ISC_SetHomingParamsBlock(const char * serialNo, MOT_HomingParameters *homingParams);
 
/// <summary> Get the jog parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="jogParams"> The address of the MOT_JogParameters block to recieve the jog parameters </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestJogParams(char const * serialNo)" />
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_SetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_GetJogParamsBlock(const char * serialNo, MOT_JogParameters *jogParams);
 
/// <summary> Set the jog parameters. </summary>
/// <remarks> see \ref C_MOTOR_sec12 "Jogging" for more detail.<remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="jogParams"> The address of the new MOT_JogParameters block. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetJogMode(char const * serialNo, MOT_JogModes * mode, MOT_StopModes * stopMode)" />
/// <seealso cref="ISC_SetJogMode(char const * serialNo, MOT_JogModes mode, MOT_StopModes stopMode)" />
/// <seealso cref="ISC_GetJogStepSize(char const * serialNo)" />
/// <seealso cref="ISC_SetJogStepSize(char const * serialNo, unsigned int stepSize)" />
/// <seealso cref="ISC_SetJogVelParams(char const * serialNo, int acceleration, int maxVelocity)" />
/// <seealso cref="ISC_GetJogVelParams(char const * serialNo, int * acceleration, int * maxVelocity)" />
/// <seealso cref="ISC_GetJogParamsBlock(char const * serialNo, MOT_JogParameters *jogParams)" />
/// <seealso cref="ISC_MoveJog(char const * serialNo, MOT_TravelDirection jogDirection)" />
/// \include CodeSnippet_jogpars.cpp
ISC_API short __cdecl ISC_SetJogParamsBlock(const char * serialNo, MOT_JogParameters *jogParams);
 
/// <summary> Get the limit switch parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="limitSwitchParams"> Address of the MOT_LimitSwitchParameters parameter to recieve the limit switch parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes clockwiseHardwareLimit, MOT_LimitSwitchModes anticlockwiseHardwareLimit, unsigned int clockwisePosition, unsigned int anticlockwisePosition, MOT_LimitSwitchSWModes softLimitMode)" />
/// <seealso cref="ISC_RequestLimitSwitchParams(char const * serialNo)" />
/// <seealso cref="ISC_GetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes * clockwiseHardwareLimit, MOT_LimitSwitchModes * anticlockwiseHardwareLimit, unsigned int * clockwisePosition, unsigned int * anticlockwisePosition, MOT_LimitSwitchSWModes * softLimitMode)" />
/// <seealso cref="ISC_SetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
ISC_API short __cdecl ISC_GetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams);
 
/// <summary> Set the limit switch parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="limitSwitchParams"> Address of the MOT_LimitSwitchParameters parameter containing the new limit switch parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestLimitSwitchParams(char const * serialNo)" />
/// <seealso cref="ISC_GetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes * clockwiseHardwareLimit, MOT_LimitSwitchModes * anticlockwiseHardwareLimit, unsigned int * clockwisePosition, unsigned int * anticlockwisePosition, MOT_LimitSwitchSWModes * softLimitMode)" />
/// <seealso cref="ISC_SetLimitSwitchParams(char const * serialNo, MOT_LimitSwitchModes clockwiseHardwareLimit, MOT_LimitSwitchModes anticlockwiseHardwareLimit, unsigned int clockwisePosition, unsigned int anticlockwisePosition, MOT_LimitSwitchSWModes softLimitMode)" />
/// <seealso cref="ISC_GetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams)" />
ISC_API short __cdecl ISC_SetLimitSwitchParamsBlock(const char * serialNo, MOT_LimitSwitchParameters *limitSwitchParams);
 
/// <summary> Get the button parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="buttonParams"> Address of the MOT_ButtonParameters parameter to recieve the button parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
/// <seealso cref="ISC_SetButtonParams(char const * serialNo, MOT_ButtonModes buttonMode, int leftButtonPosition, int rightButtonPosition)" />
/// <seealso cref="ISC_RequestButtonParams(char const * serialNo)" />
/// <seealso cref="ISC_GetButtonParams(char const * serialNo, MOT_ButtonModes * buttonMode, int * leftButtonPosition, int * rightButtonPosition, short * timeout)" />
ISC_API short __cdecl ISC_GetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams);
 
/// <summary> Set the button parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="buttonParams"> Address of the MOT_ButtonParameters parameter containing the new button parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestButtonParams(char const * serialNo)" />
/// <seealso cref="ISC_GetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams)" />
/// <seealso cref="ISC_GetButtonParams(char const * serialNo, MOT_ButtonModes * buttonMode, int * leftButtonPosition, int * rightButtonPosition, short * timeout)" />
/// <seealso cref="ISC_SetButtonParams(char const * serialNo, MOT_ButtonModes buttonMode, int leftButtonPosition, int rightButtonPosition)" />
ISC_API short __cdecl ISC_SetButtonParamsBlock(const char * serialNo, MOT_ButtonParameters *buttonParams);
 
/// <summary> Get the potentiometer parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="potentiometerSteps"> Address of the MOT_PotentiometerSteps parameter to recieve the potentiometer parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetPotentiometerParamsBlock(const char * serialNo, MOT_PotentiometerSteps *potentiometerSteps)" />
/// <seealso cref="ISC_SetPotentiometerParams(char const * serialNo, short index, WORD thresholdDeflection, DWORD velocity)" />
/// <seealso cref="ISC_RequestPotentiometerParams(char const * serialNo)" />
/// <seealso cref="ISC_GetPotentiometerParams(char const * serialNo, short index, WORD * thresholdDeflection, DWORD * velocity)" />
ISC_API short __cdecl ISC_GetPotentiometerParamsBlock(const char * serialNo, MOT_PotentiometerSteps *potentiometerSteps);
 
/// <summary> Set the potentiometer parameters. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="potentiometerSteps"> Address of the MOT_PotentiometerSteps parameter containing the new potentiometer parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestPotentiometerParams(char const * serialNo)" />
/// <seealso cref="ISC_GetPotentiometerParamsBlock(const char * serialNo, MOT_PotentiometerSteps *potentiometerSteps)" />
/// <seealso cref="ISC_SetPotentiometerParams(char const * serialNo, short index, WORD thresholdDeflection, DWORD velocity)" />
/// <seealso cref="ISC_GetPotentiometerParams(char const * serialNo, short index, WORD * thresholdDeflection, DWORD * velocity)" />
ISC_API short __cdecl ISC_SetPotentiometerParamsBlock(const char * serialNo, MOT_PotentiometerSteps *potentiometerSteps);
 
/// <summary> Requests the power parameters. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams)" />
/// <seealso cref="ISC_SetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams)" />
ISC_API short __cdecl ISC_RequestPowerParams(char const * serialNo);
 
/// <summary> Gets the power parameters for the stepper motor. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="powerParams"> Address of the MOT_PowerParameters parameter to recieve the power parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestPowerParams(char const * serialNo)" />
/// <seealso cref="ISC_SetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams)" />
ISC_API short __cdecl ISC_GetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams);
 
/// <summary> Sets the power parameters for the stepper motor. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="powerParams"> Address of the MOT_PowerParameters parameter containing the new power parameters. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestPowerParams(char const * serialNo)" />
/// <seealso cref="ISC_GetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams)" />
ISC_API short __cdecl ISC_SetPowerParams(const char * serialNo, MOT_PowerParameters *powerParams);
 
/// <summary> Requests the stepper motor bow index. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetBowIndex(const char * serialNo)" />
/// <seealso cref="ISC_SetBowIndex(const char * serialNo, short bowIndex)" />
ISC_API short __cdecl ISC_RequestBowIndex(char const * serialNo);
 
/// <summary> Gets the stepper motor bow index. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The bow index. </returns>
/// <seealso cref="ISC_RequestBowIndex(char const * serialNo)" />
/// <seealso cref="ISC_SetBowIndex(const char * serialNo, short bowIndex)" />
ISC_API short __cdecl ISC_GetBowIndex(const char * serialNo);
 
/// <summary> Sets the stepper motor bow index. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="bowIndex"> The bow index. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestBowIndex(char const * serialNo)" />
/// <seealso cref="ISC_GetBowIndex(const char * serialNo)" />
ISC_API short __cdecl ISC_SetBowIndex(const char * serialNo, short bowIndex);
 
/// <summary> Requests, gets or sets trigger switch bits for Cage Rotator only. </summary>
 
/// <summary> Requests the trigger switch bits. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="BMC_GetTriggerSwitches(const char * serialNo)" />
/// <seealso cref="BMC_SetTriggerSwitches(char const * serialNo, byte indicatorBits)" />
ISC_API short __cdecl ISC_RequestTriggerSwitches(char const * serialNo);
 
/// <summary> Gets the trigger switch bits. </summary>
/// <param name="serialNo"> The controller serial no. </param>
/// <returns> 8 bits indicating action on trigger input and events to trigger electronic output. </returns>
/// <seealso cref="ISC_RequestTriggerSwitches(char const * serialNo)" />
/// <seealso cref="ISC_SetTriggerSwitches(char const * serialNol, byte indicatorBits)" />
ISC_API byte __cdecl ISC_GetTriggerSwitches(char const * serialNo);
 
/// <summary> Sets the trigger switch bits. </summary>
/// <param name="serialNo"> The controller serial no. </param>
/// <param name="indicatorBits"> Sets the 8 bits indicating action on trigger input and events to trigger electronic output. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_RequestTriggerSwitches(char const * serialNo)" />
/// <seealso cref="ISC_GetTriggerSwitches(char const * serialNo)" />
ISC_API short __cdecl ISC_SetTriggerSwitches(char const * serialNo, byte indicatorBits);
 
/// <summary> Requests the current position. </summary>
/// <remarks> This needs to be called to get the device to send it's current position.<br />
/// NOTE this is called automatically if Polling is enabled for the device using <see cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successfully requested. </returns>
/// \include CodeSnippet_move.cpp
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
ISC_API short __cdecl ISC_RequestPosition(char const * serialNo);
/// <summary> Request the status bits which identify the current motor state. </summary>
/// <remarks> This needs to be called to get the device to send it's current status bits.<br />
/// NOTE this is called automatically if Polling is enabled for the device using <see cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successfully requested. </returns>
/// <seealso cref="ISC_GetStatusBits(char const * serialNo)" />
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
ISC_API short __cdecl ISC_RequestStatusBits(char const * serialNo);
 
/// <summary> Request position and status bits. </summary>
/// <remarks> This needs to be called to get the device to send it's current status.<br />
/// NOTE this is called automatically if Polling is enabled for the device using <see cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successfully requested. </returns>
/// <seealso cref="ISC_RequestPosition(char const * serialNo)" />
/// <seealso cref="ISC_RequestStatusBits(char const * serialNo)" />
/// <seealso cref="ISC_GetPosition(char const * serialNo)" />
/// <seealso cref="ISC_GetStatusBits(char const * serialNo)" />
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
ISC_API short __cdecl ISC_RequestStatus(char const * serialNo);
 
/// <summary>Get the current status bits. </summary>
/// <remarks> This returns the latest status bits received from the device.<br />
/// To get new status bits, use <see cref="ISC_RequestStatusBits(char const * serialNo)" />
/// or use <see cref="ISC_RequestStatus(char const * serialNo)" />
/// or use the polling functions, <see cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />. </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The status bits from the device <list type=table>
/// <item><term>0x00000001</term><term>CW hardware limit switch (0=No contact, 1=Contact).</term></item>
/// <item><term>0x00000002</term><term>CCW hardware limit switch (0=No contact, 1=Contact).</term></item>
/// <item><term>0x00000004</term><term>CW software limit switch (0=No contact, 1=Contact).</term></item>
/// <item><term>0x00000008</term><term>CCW software limit switch (0=No contact, 1=Contact).</term></item>
/// <item><term>0x00000010</term><term>Motor shaft moving clockwise (1=Moving, 0=Stationary).</term></item>
/// <item><term>0x00000020</term><term>Motor shaft moving counterclockwise (1=Moving, 0=Stationary).</term></item>
/// <item><term>0x00000040</term><term>Shaft jogging clockwise (1=Moving, 0=Stationary).</term></item>
/// <item><term>0x00000080</term><term>Shaft jogging counterclockwise (1=Moving, 0=Stationary).</term></item>
/// <item><term>0x00000100</term><term>Motor connected (1=Connected, 0=Not connected).</term></item>
/// <item><term>0x00000200</term><term>Motor homing (1=Homing, 0=Not homing).</term></item>
/// <item><term>0x00000400</term><term>Motor homed (1=Homed, 0=Not homed).</term></item>
/// <item><term>0x00000800</term><term>For Future Use.</term></item>
/// <item><term>0x00001000</term><term>Not applicable.</term></item>
/// <item><term>0x00002000</term><term></term></item>
/// <item><term>...</term><term></term></item>
/// <item><term>0x00080000</term><term></term></item>
/// <item><term>0x00100000</term><term>Digital input 1 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x00200000</term><term>Digital input 2 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x00400000</term><term>Digital input 3 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x00800000</term><term>Digital input 4 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x01000000</term><term>Digital input 5 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x02000000</term><term>Digital input 6 state (1=Logic high, 0=Logic low).</term></item>
/// <item><term>0x04000000</term><term>For Future Use.</term></item>
/// <item><term>0x08000000</term><term>For Future Use.</term></item>
/// <item><term>0x10000000</term><term>For Future Use.</term></item>
/// <item><term>0x20000000</term><term>Active (1=Active, 0=Not active).</term></item>
/// <item><term>0x40000000</term><term>For Future Use.</term></item>
/// <item><term>0x80000000</term><term>Channel enabled (1=Enabled, 0=Disabled).</term></item>
/// </list> <remarks> Bits 21 to 26 (Digital Input States) are only applicable if the associated digital input is fitted to your controller - see the relevant handbook for more details. </remarks> </returns>
/// <seealso cref="ISC_RequestStatusBits(char const * serialNo)" />
/// <seealso cref="ISC_RequestStatus(char const * serialNo)" />
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
ISC_API DWORD __cdecl ISC_GetStatusBits(char const * serialNo);
 
/// <summary> Starts the internal polling loop which continuously requests position and status. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="milliseconds">The milliseconds polling rate. </param>
/// <returns> <c>true</c> if successful, false if not. </returns>
/// <seealso cref="ISC_StopPolling(char const * serialNo)" />
/// <seealso cref="ISC_PollingDuration(char const * serialNo)" />
/// <seealso cref="ISC_RequestStatusBits(char const * serialNo)" />
/// <seealso cref="ISC_RequestPosition(char const * serialNo)" />
/// \include CodeSnippet_connection1.cpp
ISC_API bool __cdecl ISC_StartPolling(char const * serialNo, int milliseconds);
 
/// <summary> Gets the polling loop duration. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The time between polls in milliseconds or 0 if polling is not active. </returns>
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
/// <seealso cref="ISC_StopPolling(char const * serialNo)" />
/// \include CodeSnippet_connection1.cpp
ISC_API long __cdecl ISC_PollingDuration(char const * serialNo);
 
/// <summary> Stops the internal polling loop. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <seealso cref="ISC_StartPolling(char const * serialNo, int milliseconds)" />
/// <seealso cref="ISC_PollingDuration(char const * serialNo)" />
/// \include CodeSnippet_connection1.cpp
ISC_API void __cdecl ISC_StopPolling(char const * serialNo);
 
/// <summary> Gets the time in milliseconds since tha last message was received from the device. </summary>
/// <remarks> This can be used to determine whether communications with the device is still good</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="lastUpdateTimeMS"> The time since the last message was received in milliseconds. </param>
/// <returns> True if monitoring is enabled otherwize False. </returns>
/// <seealso cref="ISC_EnableLastMsgTimer(char const * serialNo, bool enable, __int32 lastMsgTimeout )" />
/// <seealso cref="ISC_HasLastMsgTimerOverrun(char const * serialNo)" />
/// \include CodeSnippet_connectionMonitoring.cpp
ISC_API bool __cdecl ISC_TimeSinceLastMsgReceived(char const * serialNo, __int64 *lastUpdateTimeMS ); //***
 
/// <summary> Enables the last message monitoring timer. </summary>
/// <remarks> This can be used to determine whether communications with the device is still good</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="enable"> True to enable monitoring otherwise False to disable. </param>
/// <param name="lastMsgTimeout"> The last message error timeout in ms. 0 to disable. </param>
/// <seealso cref="ISC_TimeSinceLastMsgReceived(char const * serialNo, __int64 &lastUpdateTimeMS )" />
/// <seealso cref="ISC_HasLastMsgTimerOverrun(char const * serialNo)" />
/// \include CodeSnippet_connectionMonitoring.cpp
ISC_API void __cdecl ISC_EnableLastMsgTimer(char const * serialNo, bool enable, __int32 lastMsgTimeout );
 
/// <summary> Queries if the time since the last message has exceeded the lastMsgTimeout set by <see cref="ISC_EnableLastMsgTimer(char const * serialNo, bool enable, __int32 lastMsgTimeout )"/>. </summary>
/// <remarks> This can be used to determine whether communications with the device is still good</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> True if last message timer has elapsed, False if monitoring is not enabled or if time of last message received is less than lastMsgTimeout. </returns>
/// <seealso cref="ISC_TimeSinceLastMsgReceived(char const * serialNo, __int64 &lastUpdateTimeMS )" />
/// <seealso cref="ISC_EnableLastMsgTimer(char const * serialNo, bool enable, __int32 lastMsgTimeout )" />
/// \include CodeSnippet_connectionMonitoring.cpp
ISC_API bool __cdecl ISC_HasLastMsgTimerOverrun(char const * serialNo);
 
/// <summary> Requests that all settings are download from device. </summary>
/// <remarks> This function requests that the device upload all it's settings to the DLL.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successfully requested. </returns>
ISC_API short __cdecl ISC_RequestSettings(char const * serialNo);
 
/// <summary> Gets the LTS Motor minimum stage position. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The Minimum position in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_SetStageAxisLimits(char const * serialNo, int minPosition, int maxPosition)" />
/// <seealso cref="ISC_GetStageAxisMaxPos(char const * serialNo)" />
ISC_API int __cdecl ISC_GetStageAxisMinPos(char const * serialNo);
 
/// <summary> Gets the LTS Motor maximum stage position. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The Maximum position in \ref DeviceUnits_page. </returns>
/// <seealso cref="ISC_SetStageAxisLimits(char const * serialNo, int minPosition, int maxPosition)" />
/// <seealso cref="ISC_GetStageAxisMinPos(char const * serialNo)" />
ISC_API int __cdecl ISC_GetStageAxisMaxPos(char const * serialNo);
 
/// <summary> Sets the stage axis position limits. </summary>
/// <remarks> This function sets the limits of travel for the stage.<Br />
/// The implementation will depend upon the nature of the travel being requested and the Soft Limits mode which can be obtained using <see cref="ISC_GetSoftLimitMode(char const * serialNo)" />. <Br />
/// <B>MoveAbsolute</B>, <B>MoveRelative</B> and <B>Jog (Single Step)</B> will obey the Soft Limit Mode.
/// If the target position is outside the limits then either a full move, a partial move or no move will occur.<Br />
/// <B>Jog (Continuous)</B> and <B>Move Continuous</B> will attempt to obey the limits, but as these moves rely on position information feedback from the device to detect if the travel is exceeding the limits, the device will stop, but it is likely to overshoot the limit, especially at high velocity.<Br />
/// <B>Home</B> will always ignore the software limits.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="minPosition"> The minimum position in \ref DeviceUnits_page. </param>
/// <param name="maxPosition"> The maximum position in \ref DeviceUnits_page. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetStageAxisMinPos(char const * serialNo)" />
/// <seealso cref="ISC_GetStageAxisMaxPos(char const * serialNo)" />
ISC_API short __cdecl ISC_SetStageAxisLimits(char const * serialNo, int minPosition, int maxPosition);
 
/// <summary> Set the motor travel mode. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="travelMode"> The travel mode.
/// <list type=table>
/// <item><term>Linear motion</term><term>1</term></item>
/// <item><term>Rotational motion</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMotorTravelMode(char const * serialNo)" />
ISC_API short __cdecl ISC_SetMotorTravelMode(char const * serialNo, MOT_TravelModes travelMode);
 
/// <summary> Get the motor travel mode. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The travel mode.
/// <list type=table>
/// <item><term>Linear motion</term><term>1</term></item>
/// <item><term>Rotational motion</term><term>2</term></item>
/// </list> </returns>
/// <seealso cref="ISC_SetMotorTravelMode(char const * serialNo, int travelMode)" />
ISC_API MOT_TravelModes __cdecl ISC_GetMotorTravelMode(char const * serialNo);
 
/// \deprecated
/// <summary> Sets the motor stage parameters. </summary>
/// <remarks> superceded by <see cref="ISC_SetMotorParamsExt(char const * serialNo, double stepsPerRevolution, double gearboxRatio, double pitch)"/> </remarks>
/// <remarks> These parameters, when combined define the stage motion in terms of \ref RealWorldUnits_page. (mm or degrees)<br />
/// The real world unit is defined from stepsPerRev * gearBoxRatio / pitch.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="stepsPerRev"> The steps per revolution. </param>
/// <param name="gearBoxRatio"> The gear box ratio. </param>
/// <param name="pitch"> The pitch. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMotorParams(char const * serialNo, long *stepsPerRev, long *gearBoxRatio, float *pitch)" />
ISC_API short __cdecl ISC_SetMotorParams(char const * serialNo, long stepsPerRev, long gearBoxRatio, float pitch);
 
/// \deprecated
/// <summary> Gets the motor stage parameters. </summary>
/// <remarks> superceded by <see cref="ISC_GetMotorParamsExt(char const * serialNo, double *stepsPerRevolution, double *gearboxRatio, double *pitch)"/> </remarks>
/// <remarks> These parameters, when combined define the stage motion in terms of \ref RealWorldUnits_page. (mm or degrees)<br />
/// The real world unit is defined from stepsPerRev * gearBoxRatio / pitch.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="stepsPerRev"> Address of the parameter to receive the steps per revolution. </param>
/// <param name="gearBoxRatio"> Address of the parameter to receive the gear box ratio. </param>
/// <param name="pitch"> Address of the parameter to receive the pitch. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetMotorParams(char const * serialNo, long stepsPerRev, long gearBoxRatio, float pitch)" />
ISC_API short __cdecl ISC_GetMotorParams(char const * serialNo, long *stepsPerRev, long *gearBoxRatio, float *pitch);
 
/// <summary> Sets the motor stage parameters. </summary>
/// <remarks> These parameters, when combined define the stage motion in terms of \ref RealWorldUnits_page. (mm or degrees)<br />
/// The real world unit is defined from stepsPerRev * gearBoxRatio / pitch.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="stepsPerRev"> The steps per revolution. </param>
/// <param name="gearBoxRatio"> The gear box ratio. </param>
/// <param name="pitch"> The pitch. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMotorParamsExt(char const * serialNo, long *stepsPerRev, long *gearBoxRatio, float *pitch)" />
ISC_API short __cdecl ISC_SetMotorParamsExt(char const * serialNo, double stepsPerRev, double gearBoxRatio, double pitch);
 
/// <summary> Gets the motor stage parameters. </summary>
/// <remarks> These parameters, when combined define the stage motion in terms of \ref RealWorldUnits_page. (mm or degrees)<br />
/// The real world unit is defined from stepsPerRev * gearBoxRatio / pitch.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="stepsPerRev"> Address of the parameter to receive the steps per revolution. </param>
/// <param name="gearBoxRatio"> Address of the parameter to receive the gear box ratio. </param>
/// <param name="pitch"> Address of the parameter to receive the pitch. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetMotorParamsExt(char const * serialNo, long stepsPerRev, long gearBoxRatio, float pitch)" />
ISC_API short __cdecl ISC_GetMotorParamsExt(char const * serialNo, double *stepsPerRev, double *gearBoxRatio, double *pitch);
 
/// \deprecated
/// <summary> Sets the absolute maximum velocity and acceleration constants for the current stage. </summary>
/// <remarks> These parameters are maintained for user info only and do not reflect the current stage parameters.<Br />
/// The absolute maximum velocity and acceleration constants are initialized from the stage settings..</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="maxVelocity"> The absolute maximum velocity in real world units. </param>
/// <param name="maxAcceleration"> The absolute maximum acceleration in real world units. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMotorVelocityLimits(char const * serialNo, double *maxVelocity, double *maxAcceleration)" />
ISC_API short __cdecl ISC_SetMotorVelocityLimits(char const * serialNo, double maxVelocity, double maxAcceleration);
 
/// <summary> Gets the absolute maximum velocity and acceleration constants for the current stage. </summary>
/// <remarks> These parameters are maintained for user info only and do not reflect the current stage parameters.<Br />
/// The absolute maximum velocity and acceleration constants are initialized from the stage settings..</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="maxVelocity"> Address of the parameter to receive the absolute maximum velocity in real world units. </param>
/// <param name="maxAcceleration"> Address of the parameter to receive the absolute maximum acceleration in real world units. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetMotorVelocityLimits(char const * serialNo, double maxVelocity, double maxAcceleration)" />
ISC_API short __cdecl ISC_GetMotorVelocityLimits(char const * serialNo, double *maxVelocity, double *maxAcceleration);
 
/// <summary> Reset the rotation modes for a rotational device. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetRotationModes(char const * serialNo, MOT_MovementModes mode, MOT_MovementDirections direction)" />
ISC_API short __cdecl ISC_ResetRotationModes(char const * serialNo);
 
/// <summary> Set the rotation modes for a rotational device. </summary>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="mode"> The rotation mode.<list type=table>
/// <item><term>Linear Range (Fixed Limit, cannot rotate)</term><term>0</term></item>
/// <item><term>RotationalUnlimited (Ranges between +/- Infinity)</term><term>1</term></item>
/// <item><term>Rotational Wrapping (Ranges between 0 to 360 with wrapping)</term><term>2</term></item>
/// </list> </param>
/// <param name="direction"> The rotation direction when moving between two angles.<list type=table>
/// <item><term>Quickets (Always takes the shortedt path)</term><term>0</term></item>
/// <item><term>Forwards (Always moves forwards)</term><term>1</term></item>
/// <item><term>Backwards (Always moves backwards)</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_ResetRotationModes(char const * serialNo)" />
ISC_API short __cdecl ISC_SetRotationModes(char const * serialNo, MOT_MovementModes mode, MOT_MovementDirections direction);
 
/// \deprecated
/// <summary> Sets the absolute minimum and maximum travel range constants for the current stage. </summary>
/// <remarks> These parameters are maintained for user info only and do not reflect the current travel range of the stage.<Br />
/// The absolute minimum and maximum travel range constants are initialized from the stage settings. These values can be adjusted to relative positions based upon the Home Offset.<Br />
/// <Br />
/// To set the working travel range of the stage use the function <see cref="ISC_SetStageAxisLimits(char const * serialNo, int minPosition, int maxPosition)" /><Br />
/// Use the following to convert between real worl and device units.<Br />
/// <see cref="ISC_GetRealValueFromDeviceUnit(char const * serialNo, int device_unit, double *real_unit, int unitType)" /><Br />
/// <see cref="ISC_GetDeviceUnitFromRealValue(char const * serialNo, double real_unit, int *device_unit, int unitType)" /> </remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="minPosition"> The absolute minimum position in real world units. </param>
/// <param name="maxPosition"> The absolute maximum position in real world units. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetMotorTravelLimits(char const * serialNo, double *minPosition, double *maxPosition)" />
ISC_API short __cdecl ISC_SetMotorTravelLimits(char const * serialNo, double minPosition, double maxPosition);
 
/// <summary> Gets the absolute minimum and maximum travel range constants for the current stage. </summary>
/// <remarks> These parameters are maintained for user info only and do not reflect the current travel range of the stage.<Br />
/// The absolute minimum and maximum travel range constants are initialized from the stage settings. These values can be adjusted to relative positions based upon the Home Offset.</remarks>
/// <param name="serialNo"> The device serial no. </param>
/// <param name="minPosition"> Address of the parameter to receive the absolute minimum position in real world units. </param>
/// <param name="maxPosition"> Address of the parameter to receive the absolute maximum position in real world units. </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_SetMotorTravelLimits(char const * serialNo, double minPosition, double maxPosition)" />
ISC_API short __cdecl ISC_GetMotorTravelLimits(char const * serialNo, double *minPosition, double *maxPosition);
 
/// <summary> Converts a device unit to a real world unit. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <param name="device_unit"> The device unit. </param>
/// <param name="real_unit"> The real unit. </param>
/// <param name="unitType"> Type of the unit.<list type=table>
/// <item><term>Distance</term><term>0</term></item>
/// <item><term>Velocity</term><term>1</term></item>
/// <item><term>Acceleration</term><term>2</term></item>
/// </list> </param>
/// <returns> The error code (see \ref C_DLL_ERRORCODES_page "Error Codes") or zero if successful. </returns>
/// <seealso cref="ISC_GetDeviceUnitFromRealValue(char const * serialNo, double real_unit, int *device_unit, int unitType)" />
ISC_API short __cdecl ISC_GetRealValueFromDeviceUnit(char const * serialNo, int device_unit, double *real_unit, int unitType);
 
/// <summary> Converts a device unit to a real world unit. </summary>
/// <param name="serialNo"> The serial no. </param>
/// <param name="device_unit"> The device unit. </param>
/// <param name="real_unit"> The real unit. </param>
/// <param name="unitType"> Type of the unit.<list type=table>
/// <item><term>Distance</term><term>0</term></item>
/// <item><term>Velocity</term><term>1</term></item>
/// <item><term>Acceleration</term><term>2</term></item>
/// </list> </param>
/// <returns> Success. </returns>
/// <seealso cref="ISC_GetRealValueFromDeviceUnit(char const * serialNo, int device_unit, double *real_unit, int unitType)" />
ISC_API short __cdecl ISC_GetDeviceUnitFromRealValue(char const * serialNo, double real_unit, int *device_unit, int unitType);
}
 
/** @} */ // IntegratedStepperMotors
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/BuildStep.bat
0,0 → 1,5
@call %1.bat > %1.out
@if %errorlevel% neq 0 (
@echo Build Step failed for %1
@exit %errorlevel%)
@echo Build Step complete for %1
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/CC_no_dep_options.txt
0,0 → 1,0
-force-include-file "ThorlabsLTS.c";"c:\home\CVI\instr\ThorlabsLTS\ThorlabsLTS.c" -force-include-file "ThorlabsMotionControlIntegratedStepperMotors.h";"c:\home\CVI\instr\ThorlabsLTS\ThorlabsMotionControlIntegratedStepperMotors.h"
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/CC_options.txt
0,0 → 1,0
-triple amd64-pc-win32 -mstack-alignment=16 -fno-caret-diagnostics -fno-gnu-keywords -fms-compatibility -mms-bitfields -fmath-errno -Wno-everything -Werror=gnu -Werror=pointer-arith -Werror=invalid-return -mdisable-fp-elim -Wpointer-sign -Wunreachable-code -Wparentheses -Wunused-variable -Wuninitialized -Wdivision-by-zero -Warray-bounds -Wnull-dereference -Wignored-qualifiers -Wreturn-type -Wpanel-handle -Wchar-init -Wvisibility -Womp-nested-parallel -Womp-repeated-ordered -Wpointer-int-conv -Wint-conversion -Wpointer-conv -Wmissing-return-value -Winvalid-return -Wduplicate-decl-specifier -Wknr-promoted-parameter -Wsequence-point -Wassign-enum -Wsizeof-array-argument -Wcovered-switch-default -Wloop-analysis -Wstrncat-size -Winvalid-source-encoding -Wdisabled-macro-expansion -fdiagnostics-show-option -cvi-debugging=standard -Werror=implicit-function-declaration -Wuninitialized-runtime -I "c:\Program Files\Thorlabs\Kinesis" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\activex\word" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\activex\excel" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\custctrl" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\custctrl\custsupp" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\cvirtsup" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\datasock" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\daqUtil" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\printing" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\toolbox" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\reportgen" -I "c:\program files (x86)\national instruments\cvi2017\toolslib\localui" -I "c:\program files (x86)\national instruments\cvi2017\instr" -I "C:\Program Files (x86)\National Instruments\Shared\CVI\toolslib\custctrl" -I "C:\Program Files (x86)\National Instruments\Shared\CVI\toolslib\custctrl\custsupp" -I "C:\Program Files (x86)\National Instruments\Shared\CVI\instr" -I "C:\ProgramData\National Instruments\CVI2017\instr" -I "c:\program files (x86)\national instruments\cvi2017\include" -I "C:\Program Files (x86)\National Instruments\Shared\CVI\include" -I "C:\ProgramData\National Instruments\CVI2017\include" -I "C:\ProgramData\National Instruments\CVI\include" -I "c:\program files (x86)\national instruments\cvi2017\include\ansi" -I "c:\program files (x86)\national instruments\cvi2017\include\clang\3.3" -I "C:\Program Files\IVI Foundation\IVI\Include" -I "C:\Program Files\IVI Foundation\VISA\win64\include" -I "C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\SDKHeaderFiles\8.1" -I "c:\Program Files (x86)\National Instruments\CVI2017\bin" -I "c:\ProgramData\National Instruments\CVI2017\bin" -I "c:\Program Files (x86)\National Instruments\Shared\CVI\Bin"
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/CallCC.bat
0,0 → 1,22
@set INCLUDE=
@set LIB=
@set FileNum=%1
@shift
@set SrcFileName=%1
@shift
@set ObjFileName=%1
@shift
@set DefProts=%1
@shift
@set OutFileName=%1
@shift
@set REST=%1 %2 %3 %4 %5 %6 %7 %8 %9
@rem c:\home\CVI\instr\ThorlabsLTS
@echo Compiling %FileNum% %SrcFileName%
@"c:\program files (x86)\national instruments\cvi2017\bin\clang\3.3\clang.exe" -cc1 -nostdsysteminc -fno-builtin-include-notes -emit-obj -add-plugin cvi-emit-defprots -plugin-arg-cvi-emit-defprots %DefProts% -target-cpu x86-64 %REST% -std=c99 @"CC_no_dep_options.txt" @"CC_options.txt" -D_CVI_="1700" -D_NI_x64_="1" -D_NI_mswin_="1" -D_NI_mswin64_="1" -D_CVI_DEBUG_="1" -D_CVI_EXE_="1" -D_LINK_CVIRTE_="1" -D_CVI_FDS_="1" -D_CVI_USE_FUNCS_FOR_VARS_="1" -D__DEFALIGN="8" -D_NI_VC_="220" -D_WIN32="1" -D_WIN64="1" -DWIN32="1" -DWIN64="1" -D__WIN32__="1" -D__WIN64__="1" -D_WINDOWS="1" -D__NT__="1" -D_M_X64="1" -D_M_AMD64="1" -D__FLAT__="1" -D_PUSHPOP_SUPPORTED="1" -D_CVI_C99_EXTENSIONS_="1" -D_CVI_PROFILE_LEVEL_="0" -D_TARGET_FILE_VERSION_="\"1.0.0.0\"" -D_TARGET_PRODUCT_VERSION_="\"1.0.0.0\"" -D_CVI_CONFIGURATION_NAME_="\"Debug64\"" -D_CVI_RTE_SHARED_="1" -DWIN32_LEAN_AND_MEAN -DLTS_MAIN -o %ObjFileName% %SrcFileName% > %OutFileName% 2>&1
@if errorlevel 1 goto err
@echo Compile succeeded for %FileNum% %SrcFileName%
@exit 0
:err
@echo Compile failed for %FileNum% %SrcFileName%
@exit 1
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/CallLink.bat
0,0 → 1,9
@"c:\program files (x86)\national instruments\cvi2017\bin\cvilink.exe" -cmd:link_options.txt -flags:0 -expiry:0 > Link.out 2>&1
@if errorlevel 1 goto err
@echo Link success
@echo Link complete
@exit 0
:err
@echo Link complete
@echo Link failed
@exit 1
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/CallRC.bat
0,0 → 1,8
@echo "C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\BuildTools\8.1\rc.exe" /d _CVI_ /i "C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\SDKHeaderFiles\8.1" /fo %2 %1
@"C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\BuildTools\8.1\rc.exe" /d _CVI_ /i "C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\SDKHeaderFiles\8.1" /fo %2 %1 > Rc.out 2>&1
@if errorlevel 1 goto err
@echo RC complete
@exit 0
:err
@echo RC failed
@exit 1
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/Jamfile
0,0 → 1,45
CCFLAGS = -g ;
HDRS = "c:\\Program Files\\Thorlabs\\Kinesis"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\activex\\word"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\activex\\excel"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\custctrl"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\custctrl\\custsupp"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\cvirtsup"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\datasock"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\daqUtil"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\printing"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\toolbox"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\reportgen"
"c:\\program files (x86)\\national instruments\\cvi2017\\toolslib\\localui"
"c:\\program files (x86)\\national instruments\\cvi2017\\instr"
"C:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\toolslib\\custctrl"
"C:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\toolslib\\custctrl\\custsupp"
"C:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\instr"
"C:\\ProgramData\\National Instruments\\CVI2017\\instr"
"c:\\program files (x86)\\national instruments\\cvi2017\\include"
"C:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\include"
"C:\\ProgramData\\National Instruments\\CVI2017\\include"
"C:\\ProgramData\\National Instruments\\CVI\\include"
"c:\\program files (x86)\\national instruments\\cvi2017\\include\\ansi"
"c:\\program files (x86)\\national instruments\\cvi2017\\include\\clang\\3.3"
"C:\\Program Files\\IVI Foundation\\IVI\\Include"
"C:\\Program Files\\IVI Foundation\\VISA\\win64\\include"
"C:\\Program Files (x86)\\National Instruments\\Shared\\MSDTRedistributables\\SDKHeaderFiles\\8.1"
"c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin"
"c:\\ProgramData\\National Instruments\\CVI2017\\bin"
"c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin"
;
include Jamfile_instr ;
LOCATE on "ThorlabsLTS.c" = "c:\\home\\CVI\\instr\\ThorlabsLTS" ;
LOCATE on "ThorlabsMotionControlIntegratedStepperMotors.h" = "c:\\home\\CVI\\instr\\ThorlabsLTS" ;
Object "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\ThorlabsLTS.c" ;
FILENUM on "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" = 1 ;
DEFPROTS on "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" = "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj.cvidefprots" ;
OUTFILE on "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" = "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj.out" ;
PrjObjects += "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" ;
Object "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\resources.res" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\resources.in.rc" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\resources.res" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\manifest.xml" ;
MainFromObjects "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : $(PrjObjects) $(InstrObjects) ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\link_options.txt" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\resources.res" ;
Depends all : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" ;
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/Jamfile_instr
0,0 → 1,43
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.obj" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\advapi32.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\advapi32.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\ProgramData\\National Instruments\\CVI2017\\bin\\msvc64\\analysis.lib" ;
NoCare "c:\\ProgramData\\National Instruments\\CVI2017\\bin\\msvc64\\analysis.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cviauto.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cviauto.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvidotnet.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvidotnet.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvinetstreams.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvinetstreams.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvinetv.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvinetv.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvintwrk.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvintwrk.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvitdms.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\cvitdms.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\gdi32.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\gdi32.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\gpib.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\gpib.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\ivi.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\ivi.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\kernel32.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\kernel32.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\NIDAQmx.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\NIDAQmx.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\nisyscfg.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\nisyscfg.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\omp.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\bin\\msvc64\\omp.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files\\Thorlabs\\Kinesis\\Thorlabs.MotionControl.IntegratedStepperMotors.lib" ;
NoCare "c:\\Program Files\\Thorlabs\\Kinesis\\Thorlabs.MotionControl.IntegratedStepperMotors.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\CVI2017\\toolslib\\toolbox\\msvc64\\toolbox.obj" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\CVI2017\\toolslib\\toolbox\\msvc64\\toolbox.obj" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\user32.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\user32.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\uuid.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\uuid.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\visa.lib" ;
NoCare "c:\\Program Files (x86)\\National Instruments\\Shared\\CVI\\Bin\\msvc64\\visa.lib" ;
Depends "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\ThorlabsLTS.exe" : "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\winmm.lib" ;
NoCare "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64\\winmm.lib" ;
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/ThorlabsLTS.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/ThorlabsLTS.obj
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/ThorlabsLTS.obj.cvidefprots
0,0 → 1,104
[LTS_Timeout]
Class="Function"
Prototype="int LTS_Timeout(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);"
 
[LTS_Tmlnk]
Class="Function"
Prototype="void LTS_Tmlnk(int tout);"
 
[LTS_Tmulk]
Class="Function"
Prototype="void LTS_Tmulk();"
 
[LTS_Home]
Class="Function"
Prototype="void LTS_Home(int i, int wait);"
 
[LTS_Init]
Class="Function"
Prototype="int LTS_Init(int i);"
 
[LTS_Close]
Class="Function"
Prototype="void LTS_Close(int i);"
 
[LTS_StopProfiled]
Class="Function"
Prototype="void LTS_StopProfiled(int i);"
 
[LTS_MoveAbsolute]
Class="Function"
Prototype="void LTS_MoveAbsolute(int i, double position, int wait);"
 
[LTS_MoveRelative]
Class="Function"
Prototype="void LTS_MoveRelative(int i, double distance, int wait);"
 
[LTS_GetPosition]
Class="Function"
Prototype="double LTS_GetPosition(int i);"
 
[LTS_GetStatus]
Class="Function"
Prototype="unsigned int LTS_GetStatus(int i);"
 
[LTS_Enable]
Class="Function"
Prototype="int LTS_Enable(int i);"
 
[LTS_Disable]
Class="Function"
Prototype="int LTS_Disable(int i);"
 
[LTS_GetNumberPositions]
Class="Function"
Prototype="int LTS_GetNumberPositions(int i);"
 
[LTS_Open]
Class="Function"
Prototype="int LTS_Open();"
 
[LTS_RegisterMessageCallback]
Class="Function"
Prototype="void LTS_RegisterMessageCallback(int i, void (*functionPointer)());"
 
[LTS_GetRealValueFromDeviceUnit]
Class="Function"
Prototype="void LTS_GetRealValueFromDeviceUnit(int i, int device_unit, double *real_unit, int unitType);"
 
[LTS_GetDeviceUnitFromRealValue]
Class="Function"
Prototype="void LTS_GetDeviceUnitFromRealValue(int i, double real_unit, int *device_unit, int unitType);"
 
[LTS_waitHome]
Class="Function"
Prototype="void LTS_waitHome(int i, int tout);"
 
[LTS_waitMove]
Class="Function"
Prototype="void LTS_waitMove(int i, int tout);"
 
[LTS_SetStatus]
Class="Function"
Prototype="void LTS_SetStatus(int nid);"
 
[EndOfThread]
Class="Function"
Prototype="void EndOfThread(long long poolhandle, int functionID, unsigned int event, int value, void *callbackData);"
 
[daq]
Class="Function"
Prototype="int daq(void *functionData);"
 
[MessageCB]
Class="Function"
Prototype="void MessageCB();"
 
[WinMain]
Class="Function"
Prototype="int WinMain(struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance, char *lpszCmdLine, int nCmdShow);"
 
[TimerCB]
Class="Function"
Prototype="int TimerCB(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);"
 
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/dlldependencies.txt
0,0 → 1,8
cvi.lib
cvirte.dll
kernel32.lib
KERNEL32.dll
Thorlabs.MotionControl.IntegratedStepperMotors.lib
Thorlabs.MotionControl.IntegratedStepperMotors.dll
user32.lib
USER32.dll
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/link_options.txt
0,0 → 1,38
-nologo
-out:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\ThorlabsLTS.exe
-arch:x64
-timestamp
-debug:2
-res:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\resources.res
-entry:CVIWinMainStartupCodeForDebugging
-base:0x400000
-linked:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\linkersummary.txt
-dlldeps:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\dlldependencies.txt
-licensing:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\linkerlicensing.txt
-browsedeps:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\moduledependencies.txt
-stackreserve:1048576
-stackcommit:4096
-in:c:\home\CVI\instr\ThorlabsLTS\cvibuild.ThorlabsLTS\Debug64\ThorlabsLTS.obj
-more:c:\program files (x86)\national instruments\cvi2017\bin\msvc64\cvistart.lib
-more:c:\program files (x86)\national instruments\cvi2017\bin\msvc64\cvi.lib
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\advapi32.lib
-more:c:\ProgramData\National Instruments\CVI2017\bin\msvc64\analysis.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cviauto.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cvidotnet.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cvinetstreams.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cvinetv.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cvintwrk.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\cvitdms.lib
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\gdi32.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\gpib.lib
-more:c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\msvc64\ivi.lib
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\kernel32.lib
-more:c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\msvc64\NIDAQmx.lib
-more:c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\msvc64\nisyscfg.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\bin\msvc64\omp.lib
-more:c:\Program Files\Thorlabs\Kinesis\Thorlabs.MotionControl.IntegratedStepperMotors.lib
-more:c:\Program Files (x86)\National Instruments\CVI2017\toolslib\toolbox\msvc64\toolbox.obj
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\user32.lib
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\uuid.lib
-more:c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\msvc64\visa.lib
-more:C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\winmm.lib
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/linkerlicensing.txt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/linkersummary.txt
0,0 → 1,9
ThorlabsLTS.obj
cvi.lib
cvistart.lib
kernel32.lib
Thorlabs.MotionControl.IntegratedStepperMotors.lib
user32.lib
EXE Symbol Module
Exports Module
Resource Module
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/manifest.xml
0,0 → 1,7
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>False</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/moduledependencies.txt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/resources.in.rc
0,0 → 1,39
#include "C:\Program Files (x86)\National Instruments\Shared\MSDTRedistributables\SDKHeaderFiles\8.1\winver.h"
 
2 ICON "c:\\program files (x86)\\national instruments\\cvi2017\\bin\\default.ico"
1 24 "c:\\home\\CVI\\instr\\ThorlabsLTS\\cvibuild.ThorlabsLTS\\Debug64\\manifest.xml"
 
 
STRINGTABLE DISCARDABLE
BEGIN
65535 "ThorlabsLTS"
END
 
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0x1L
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "IJS\0"
VALUE "FileDescription", "ThorlabsLTS (Debug x64)\0"
VALUE "FileVersion", "1.0\0"
VALUE "InternalName", "ThorlabsLTS\0"
VALUE "LegalCopyright", "Copyright IJS 2024\0"
VALUE "OriginalFilename", "ThorlabsLTS.exe\0"
VALUE "ProductName", "IJS ThorlabsLTS\0"
VALUE "ProductVersion", "1.0\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 0x4b0
END
END
/cvi/instr/cvibuild.ThorlabsLTS/Debug64/resources.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS.hhp
0,0 → 1,11
[ALIAS]
IDH_ThorlabsLTS_html_main_file=ThorlabsLTS.html
 
[MAP]
#define IDH_ThorlabsLTS_html_main_file 1
 
[FILES]
ThorlabsLTS.html
ThorlabsLTS_files\Alphabetical Function Index.html
ThorlabsLTS_files\Hierarchical Function Index.html
ThorlabsLTS_files\htmlhelp.css
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS.html
0,0 → 1,16
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="ThorlabsLTS_files/htmlhelp.css" type="text/css">
<title>ThorlabsLTS</title>
</head>
<body>
<h1>ThorlabsLTS</h1>
<h2>References</h2>
<p class="body">
<a href="ThorlabsLTS_files/Alphabetical%20Function%20Index.html">Alphabetical Function Index</a><br/>
<a href="ThorlabsLTS_files/Hierarchical%20Function%20Index.html">Hierarchical Function Index</a><br/>
</p>
</body>
</html>
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS_files/Alphabetical Function Index.html
0,0 → 1,13
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="htmlhelp.css" type="text/css">
<title>Alphabetical Function Index</title>
</head>
<body>
<h1>Alphabetical Function Index</h1>
<ul class="list-index">
</ul>
</body>
</html>
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS_files/Hierarchical Function Index.html
0,0 → 1,13
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="htmlhelp.css" type="text/css">
<title>Hierarchical Function Index</title>
</head>
<body>
<h1>Hierarchical Function Index</h1>
<ul class="list-index">
</ul>
</body>
</html>
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS_files/ThorlabsLTS.html
0,0 → 1,16
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="htmlhelp.css" type="text/css">
<title>ThorlabsLTS</title>
</head>
<body>
<h1>ThorlabsLTS</h1>
<h2>References</h2>
<p class="body">
<a href="Alphabetical%20Function%20Index.html">Alphabetical Function Index</a><br/>
<a href="Hierarchical%20Function%20Index.html">Hierarchical Function Index</a><br/>
</p>
</body>
</html>
/cvi/instr/cvicomments.ThorlabsLTS/Debug64/ThorlabsLTS_files/htmlhelp.css
0,0 → 1,281
/***************************************************/
/* MINIMAL STYLES */
/* The following section defines styles that every HTML Help project should need. */
 
/* Specifies White Background color */
body {background-color:#ffffff}
 
/* The default style of P is red to alert you that you need to apply a style class, such as Body. */
P { margin-top:6.00pt; margin-bottom:6.00pt; font-family:Verdana, sans-serif; font-size:8pt; color: #000000; }
 
BR { font-size:4.00pt; }
 
H1,H2,H3,H4,H5,H6 { color:#000000 }
 
/* Use H1 for all topic headings. */
H1 { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:12pt; font-weight:bold; }
 
/* not in minimal.css; LabWindows/CVI-specific */
H1.function{ margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:12pt; font-weight:bold; color:#000000; }
 
/* Use H2 for second-level headings. */
H2 { margin-top:9.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:10pt; font-weight:bold; }
 
/* not in minimal.css; LabWindows/CVI-specific */
H2.purpose{ margin-top:9.00pt; margin-bottom:3.00pt; font-family:Verdana; font-size:10pt; font-weight:bold; color:#000000; }
 
/* not in minimal.css; LabWindows/CVI-specific */
H2.code{ font-family:"Courier New"; font-size:10pt; color:#000000;}
 
/* Use H3 for third-level headings. */
H3 { margin-top:6.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; }
 
/* Use H4 for fourth-level headings. */
H4 { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; }
 
/* H5 and H6 have the same definition as H4 because you should not need this level of heading in one topic. If you need to use H5 or H6, consider breaking up your topic into more than one topic. */
H5 { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; }
H6 { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; }
 
/* Use the Body style class for normal paragraphs. */
P.Body { margin-top:6.00pt; margin-bottom:6.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
 
/* Not in minimal.css; LabWindows/CVI-specific. */
P.Equation { margin-top:6.00pt; margin-bottom:6.00pt; font-family:Times; font-size:10pt; color:#000000; }
 
/* Not in minimal.css; LabWindows/CVI-specific. */
P.list{font-family:Verdana, sans-serif;
font-size:8 pt;
line-height:1.4;
color:black;}
 
/* not in minimal.css; LabWindows/CVI-specific */
P.syntax{ text-align:left; text-indent:-65pt; margin-top:9pt; margin-bottom:0pt; margin-right:0pt; margin-left:65pt; font-size:8pt; font-weight:medium; font-style:Regular; font-family:"Courier New"; text-decoration:none; vertical-align:baseline; text-transform:none; color:#000000;}
/* Use the Anchor style class for graphic references on a line by themselves. */
P.Anchor { margin-top:6.00pt; margin-bottom:6.00pt; font-family:Verdana, sans-serif; font-size:10pt; color:#000000; }
 
/* Use the Indent style classes to indent a paragraph. If you need to indent text below a list item, use <br><br> to start the new paragraph within the same set of <li></li> tags. If you need to indent a list within another list, nest the indented list within the first list's set of <ol></ol> or <ul></ul> tags. */
/* Indent is not in minimal.css; LabWindows/CVI-specific. Used in only a few places.*/
P.Indent {text-indent:2em; margin-top:6.00pt; margin-bottom:3.00pt; font-size:8pt; color:#000000;}
P.Indent1 { margin-left:12.00pt; margin-top:6.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif;font-size:8pt; color:#000000; }
P.Indent2 { margin-left:24.00pt; margin-top:6.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
P.Indent3 { margin-left:36.00pt; margin-top:6.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
 
/*not in minimal.css; LabWindows/CVI-specific */
P.advanonly { margin-top:6.00pt; margin-bottom:6.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
 
/*not in minimal.css; LabWindows/CVI-specific. With P.ObsoleteContent, this style is used to mark obsolete functions. */
P.Obsolete {font-family:Verdana, sans-serif; font-size:10pt; color:#000000; border-width: 1.5pt;
border-style: solid; border-color: #800000; border-bottom:0px; margin-bottom:0px; margin-top:15px; padding:3px; font-weight:bold; }
 
/*not in minimal.css; LabWindows/CVI-specific. With P.Obsolete, this style is used to mark obsolete functions. */
P.ObsoleteContent {font-family:Verdana, sans-serif; font-size:8pt; color:#800000; border-width: 1.5pt; border-style: solid; border-color: #800000; border-top:0px; margin-bottom:15px; margin-top:0px; padding:3px; }
 
/* Use the LI style for all list items. */
LI { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
 
 
/* Use the OL style for numbered lists. You do not have to type the number for each list item in a numbered list. */
OL { margin-left:18.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: decimal; }
 
/* Use the OL style for numbered lists. Nested lists will use the bullet types according to the nesting scheme below */
ol ol {list-style-type:lower-alpha}
ol ol ol {list-style-type:decimal}
ol ol ol ol {list-style-type:lower-alpha}
ol ol ol ol ol {list-style-type:decimal}
ol ol ol ol ol ol {list-style-type:lower-alpha}
ol ol ol ol ol ol ol {list-style-type:decimal}
ol ol ol ol ol ol ol ol {list-style-type:lower-alpha}
 
 
/* Use the EquationNum style class for numbered lists of equations. You do not have to type the number for each list item in a numbered list. */
OL.EquationNum { margin-left:36.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: decimal; }
 
/* Use the List-abc style class for lettered lists. You do not have to type the letter for each list item in a lettered list. */
OL.List-abc { margin-left:18.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type:lower-alpha; }
 
/* Use the UL style for bulleted lists. You do not have to type the bullet for each list item in a bulleted list. */
UL { margin-left:12.00pt; text-indent:0pt; margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: disc; }
 
/* Use the UL style for bulleted lists. Nested lists will use the bullet types according to the nesting scheme below. NOTE: hyphen.gif required in same directory as minimal.css */
ul ul {list-style-image:url(hyphen.gif)}
ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul {list-style-image:url(hyphen.gif)}
ul ul ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul ul ul {list-style-image:url(hyphen.gif)}
ul ul ul ul ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul ul ul ul ul ul{list-style-image:url(hyphen.gif)}
 
/* Use the List-Index style class for list without bullets. */
UL.List-Index { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: none; }
 
/* Use the List-Box style class for bulleted lists with boxes instead of bullets. You do not have to type the box for each list item in a the list. */
UL.List-Box { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: square; }
 
/* Use the List-Circle style class for bulleted lists with circles instead of bullets. You do not have to type the circle for each list item in a the list. */
UL.List-Circle { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: circle; }
 
/* Use the List-Diamond style class for bulleted lists with diamonds instead of bullets. You do not have to type the diamond for each list item in a diamond list. */
UL.List-Diamond { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-image:url(diamond.gif); }
 
/* Use the List-Hyphen style class for bulleted lists with hyphens instead of bullets. You do not have to type the hyphen for each list item in a hyphen list. */
UL.List-Hyphen { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-image:url(hyphen.gif); }
 
/* Use the Borderless style class for tables that do not need borders, such as for 2-column or 3-column lists with no headings. */
Table.Borderless { border:none; }
 
/* Use the Bordered style class for tables that need borders. */
Table.Bordered { border-width: 1pt; border-style: solid; border-color: #000000; border-collapse: collapse; }
 
/* Use the Borderless-Wide style class for tables that do not need borders and that you want to stretch to fill the entire topic width. */
Table.Borderless-Wide { border:none; width:100%; }
 
/* Use the Bordered-Wide style class for tables that need borders and that you want to stretch to fill the entire topic width. */
Table.Bordered-Wide { border-width: 1pt; border-style: solid; border-color: #000000; width:100%; border-collapse: collapse; }
 
/* Use the TD style for table cells in Borderless or Borderless-Wide tables. Added margin values to the minimal style. */
TD { font-family:Verdana, sans-serif; font-size:8pt; color:#000000; vertical-align:top; padding:3px; margin-top:3.00pt; margin-bottom:3.00pt; }
 
/* not in minimal.css; LabWindows/CVI-specific */
TD.tablehead{ margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; color:#000000; vertical-align:top; padding:3px; text-align:left; }
 
TD.paramName { margin-top:3.00pt; margin-bottom:3.00pt; font-family:Verdana, sans-serif; font-size:8pt; font-weight:bold; color:#000000; vertical-align:top; padding:3px; }
 
 
/* Use the Bordered style class for table cells in Bordered or Bordered-Wide tables. Added the margin values to minimal style. */
TD.Bordered { font-family:Verdana, sans-serif; font-size:8pt; color:#000000; vertical-align:top; border-width: 1pt; border-style: solid; border-color: #000000; margin-top:3.00pt; margin-bottom:3.00pt; padding:3px; }
 
/* TD indent styles not in minimal.css; LabWindows/CVI-specific */
TD.indent{ valign:"top"; text-indent:2em; margin-left:65pt; }
 
TD.indent2{ text-indent:3em; margin-left:75pt; }
 
TD.indent3{ text-indent:4em; margin-left:85pt; }
 
/* Use the Icon style class for table cells that contain note, caution, warning, or tip icons, or LabVIEW datatype terminals. */
TD.Icon { width:40px; vertical-align:top; }
 
/* Use the Table-cell-8pt style class for table cells in tables that contain a lot of information and need smaller text to fit it all on one screen to prevent a horizontal scroll bar from appearing. */
TD.Table-cell-8pt { font-family:Verdana, sans-serif; font-size:7pt; color:#000000; }
 
/* Use the TH style for table heading cells in Borderless or Borderless-Wide tables. */
TH { font-family:Verdana, sans-serif; font-size:8pt; color:#000000; font-weight:bold; padding:3px; }
 
/* Use the Bordered style class for table heading cells in Bordered or Bordered-Wide tables. */
TH.Bordered { font-family:Verdana, sans-serif; font-size:8pt; color:#000000; font-weight:bold; border-width: 1pt; border-style: solid; border-color: #000000; }
 
/* Use the Table-cell-8pt style class for table heading cells in tables that contain a lot of information and need smaller text to fit it all on one screen to prevent a horizontal scroll bar from appearing. */
TH.Table-Head-8pt { font-family:Verdana, sans-serif; font-size:7pt; color:#000000; font-weight:bold; }
 
/* Use the Left-Align style class for table heading cells that you want to left align instead of center align. */
TH.Left-Align { font-family:Verdana, sans-serif; font-size:8pt; color:#000000; font-weight:bold; padding:3px; text-align:left; }
 
/* This style applies only to Samples */
A.Sample{font-family:"Courier New";
font-size:8pt;
cursor:hand;
text-decoration:underline;
color:green;}
 
/* this style is for use only in Samples and Toolslib; not in minimal.css */
P.BodyAfter{margin-top:0.00pt;
margin-bottom:6.00pt;
font-family:Verdana, sans-serif;
font-size:8pt;
color:black;}
 
/* this style is for use only in Samples and Toolslib; not in minimal.css */
P.BodyBefore{margin-top:12.00pt;
margin-bottom:0.00pt;
font-family:"Courier New";
font-size:8pt;
color:black;}
 
/***************************************************/
/* CHARACTER FORMATS */
/* The following section defines character formats that every HTML Help project should need. */
 
/* Use the Dark-Red format for warnings or cautions. */
#Dark-Red { color: #800000 }
 
/* Use the Monospace format for code or syntax examples. */
#Monospace { font-family: Courier New; font-size: 8pt; }
 
/* Use the Monospace-Bold format for messages and responses that the computer automatically prints to the screen. */
#Monospace-Bold { font-family: Courier New; font-size: 8pt; font-weight: bold; }
 
/* Use the Monospace-Italic format to denote text that is a placeholder for a word or value that the user must supply. */
#Monospace-Italic { font-family: Courier New; font-size: 8pt; font-style: italic; }
 
/* Use the Platform format to denote a specific platform. */
#Platform { color: #0000FF; font-weight: bold; }
 
/* Use the Symbol format for characters not in the Verdana character set. Use this format sparingly. When possible, you should use the correct ASCII code for the symbol or use a graphic to recreate the symbol. */
#Symbol { font-family: Symbol; font-size: 8pt; }
 
/* CHARACTER FORMATS Updated to conform with the CSE HTML Validator Pro */
/* The following section defines character formats that every HTML Help project should need. */
 
/* Use the Dark-Red format for warnings or cautions. */
.Dark-Red { color: #800000 }
 
/* Use the Monospace format for code or syntax examples. */
.Monospace { font-family: Courier New; font-size: 8pt; }
 
/* Use the Monospace-Bold format for messages and responses that the computer automatically prints to the screen. */
.Monospace-Bold { font-family: Courier New; font-size: 8pt; font-weight: bold; }
 
/* Use the Monospace-Italic format to denote text that is a placeholder for a word or value that the user must supply. */
.Monospace-Italic { font-family: Courier New; font-size: 8pt; font-style: italic; }
 
/* Use the Platform format to denote a specific platform. */
.Platform { color: #0000FF; font-weight: bold; }
 
/* Use the Symbol format for characters not in the Verdana character set. Use this format sparingly. When possible, you should use the correct ASCII code for the symbol or use a graphic to recreate the symbol. */
.Symbol { font-family: Symbol; font-size: 8pt; }
 
/* Use the Red-text format to call attention to text that needs information added or edited by techcomm */
.Red-text {color: #FF0000;}
 
/* Use the Green-Underline format for the green defintion in the conventions topic */
.Green-Underline {color: #007700; text-decoration : underline;}
 
/* Use the glossButton format for the glossary buttons used in the glossary topic */
.glossButton { font-family:Verdana, sans-serif; font-size:12px; color:black; }
 
/* Use for text sections and hyphenated words that should not break at line wraps */
span.nobreak{white-space:nowrap}
 
/* The following styles define the color of links. */
a:link { color: #007700; font-family:Verdana, sans-serif;}
a:hover { color: #FF0000; font-family:Verdana, sans-serif;}
a:active { color: #FF0000; font-family:Verdana, sans-serif;}
a:visited { color: #7F007F; font-family:Verdana, sans-serif;}
 
/***************************************************/
/* ACTIVITY STYLES */
/* The following section defines styles that only tutorial-style HTML Help projects should need. */
 
/* Use the Activity-Objective style class for the objective at the beginning of an activity topic. */
H3.Activity-Objective { color: #800000; }
 
/***************************************************/
/* CODE STYLES */
/* The following section defines styles that you need to format entire sections of code or syntax examples. If you have just a few words you need to format as a code or syntax example, use the Monospace character format. */
 
P.Code { margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
P.Code1 { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
P.Code2 { margin-left:24.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
P.Code3 { margin-left:36.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
 
/***************************************************/
/* FUNCTION STYLES */
/* The following section defines styles that you might need to format function reference help. */
 
P.F-VI-Code4 { margin-left:48.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
P.F-VI-Code5 { margin-left:60.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family:Courier New; font-size:8pt; color:#000000; }
P.F-VI-Equation { margin-top:9.00pt; margin-bottom:9.00pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; }
 
OL.F-VI-EquationNum { margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; font-family:Verdana, sans-serif; font-size:8pt; color:#000000; list-style-type: decimal; }