Subversion Repositories f9daq

Rev

Rev 365 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 365 Rev 368
Line 113... Line 113...
113
#include <stdbool.h>
113
#include <stdbool.h>
114
#include <windows.h> 
114
#include <windows.h> 
115
#include <userint.h>
115
#include <userint.h>
116
#include <utility.h>
116
#include <utility.h>
117
#include "ThorlabsLTS_ui.h" 
117
#include "ThorlabsLTS_ui.h" 
118
 
-
 
119
 
118
 
120
#include "ThorlabsMotionControlIntegratedStepperMotors.h"
119
#include "ThorlabsMotionControlIntegratedStepperMotors.h"
-
 
120
#include "ThorlabsLTS.h"
121
 
121
 
122
 
-
 
123
void LTS_waitMove(int i, int timeout);
-
 
124
void LTS_waitHome(int i, int timeout);
-
 
125
char serialNumbers[][9] = {"45388004", "45387934","45388034"};  
122
char serialNumbers[][9] = {"45388004", "45387934","45388034"};  
126
 
123
 
127
// Set number of microsteps, found in APT communications protocol. Should be changed to 136533 if using K10CR1
124
// Set number of microsteps, found in APT communications protocol. Should be changed to 136533 if using K10CR1
128
int StepsPerMm = 409600;
125
int StepsPerMm = 409600;
129
double SingleMove=1; // in mm
-
 
130
 
126
 
131
int LTSTimerOut=0;
127
int LTSTimerOut=0;
132
int p1_h;
128
int pth=0,tctrl;
133
 
129
 
134
 
130
 
135
int CVICALLBACK LTS_Timeout (int panel, int control, int event,
131
int CVICALLBACK LTS_Timeout (int panel, int control, int event,
136
                             void *callbackData, int eventData1, int eventData2) {
132
                             void *callbackData, int eventData1, int eventData2) {
137
  switch (event) {
133
  switch (event) {
138
    case EVENT_TIMER_TICK:
134
    case EVENT_TIMER_TICK:
139
      LTSTimerOut = 1;
135
      LTSTimerOut = 1;
140
      printf("LTS timeout\n");
136
      printf("LTS timeout\n");
141
      break;
137
      break;
142
  }
138
  }
143
  return 0;
139
  return 0;
144
}
140
}
145
 
141
 
146
/*
142
/*
147
void LTS_Timerast (int signumber) {
143
void LTS_Timerast (int signumber) {
148
  LTSTimerOut = 1;
144
  LTSTimerOut = 1;
149
  printf("TIMEOUT !!!\n");
145
  printf("TIMEOUT !!!\n");
150
  SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 0);
146
  SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 0);
151
}
147
}
152
*/
148
*/
153
 
149
// tout in ms
154
void LTS_Tmlnk (int tout) {
150
void LTS_Tmlnk (int tout) {
-
 
151
  if (!pth) {
-
 
152
          pth = NewPanel (0, "Timeout pannel", 0, 0, 200, 200);
-
 
153
          tctrl = NewCtrl (pth, CTRL_TIMER, "Timeout", 0, 0);
-
 
154
          SetCtrlAttribute (pth, tctrl, ATTR_CALLBACK_FUNCTION_POINTER, LTS_Timeout);
-
 
155
      SetCtrlAttribute (pth, tctrl, ATTR_ENABLED, 0);
-
 
156
          SetCtrlAttribute (pth, tctrl, ATTR_CTRL_MODE, VAL_INDICATOR);
-
 
157
//        SetActiveCtrl (pth, tctrl);
-
 
158
  }
155
  LTSTimerOut = 0;
159
  LTSTimerOut = 0;
156
  SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_INTERVAL, (float)tout/1000.);
160
  SetCtrlAttribute (pth, tctrl, ATTR_INTERVAL, (double)tout/1000.);
157
  SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 1);
161
  SetCtrlAttribute (pth, tctrl, ATTR_ENABLED, 1);
158
}
-
 
159
 
-
 
160
void LTS_Tmulk ( void ) {
-
 
161
  SetCtrlAttribute (p1_h, P1_TIMEOUT, ATTR_ENABLED, 0);
-
 
162
  LTSTimerOut = 0;
-
 
163
}
162
}
164
 
163
 
165
void LTS_Home(int i,int wait){
164
void LTS_Tmulk ( void ) {
166
 
-
 
167
//Set up homing parameters. 
-
 
168
                MOT_HomingParameters homingParams;
-
 
169
                ISC_GetHomingParamsBlock(serialNumbers[i], &homingParams);
165
  SetCtrlAttribute (pth, tctrl, ATTR_ENABLED, 0);
170
                homingParams.direction = MOT_Reverse;
166
  LTSTimerOut = 0;
171
                ISC_SetHomingParamsBlock(serialNumbers[i], &homingParams);
-
 
-
 
167
}
172
 
168
 
-
 
169
//Waits should only be used for Home commands. The home command has a different status return.
173
                //Clear existing messages in the hardware buffer.
170
void LTS_waitHome(int i, int tout)// Waits until a single axis is homed.
-
 
171
{
-
 
172
        WORD messageType=0;
-
 
173
        WORD messageId=0;
-
 
174
        DWORD messageData=0;
-
 
175
        int condition=0;
-
 
176
        LTS_Tmlnk (tout);
-
 
177
        do {
174
                ISC_ClearMessageQueue(serialNumbers[i]);
178
                while (!ISC_MessageQueueSize(serialNumbers[i])){
-
 
179
                  Sleep(250);
-
 
180
                  ProcessSystemEvents();
-
 
181
                  if (LTSTimerOut) break;
-
 
182
                }
-
 
183
                if (LTSTimerOut){
-
 
184
                        printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
185
                        break;
-
 
186
                }
-
 
187
                ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
-
 
188
                printf( "axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
189
                condition = (messageType == 2) && (messageId == 0);
-
 
190
        } while (!condition);
-
 
191
           
-
 
192
        LTS_Tmulk();
-
 
193
}
175
 
194
 
176
                //Home the stage and wait for the return message before continuing.
195
void LTS_waitMove(int i, int tout)// Waits until axis is stopped.
-
 
196
{
-
 
197
        WORD  messageType=0;
-
 
198
        WORD  messageId=0;
-
 
199
        DWORD messageData=0;
-
 
200
        int condition=0;  
-
 
201
        LTS_Tmlnk (tout);
-
 
202
        do {
177
                ISC_Home(serialNumbers[i]);
203
                while (!ISC_MessageQueueSize(serialNumbers[i])){
-
 
204
                  Sleep(250);
178
                printf( "Start Homing...\n");
205
                  ProcessSystemEvents();
179
                if (wait) LTS_waitHome(i, wait);
206
                  if (LTSTimerOut) break;
-
 
207
                }
180
                // printf( "Homed...\n");
208
                if (LTSTimerOut){
-
 
209
                        printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
210
                        break;
-
 
211
                }
-
 
212
                ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
-
 
213
//              printf( "axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
214
                condition = (messageType == 2) && (messageId == 1);
-
 
215
} while (!condition);      
-
 
216
       
-
 
217
         
-
 
218
        LTS_Tmulk();
181
}
219
}
182
 
220
 
183
int LTS_Init(int i){
221
int LTS_Init(int i){
184
 
222
 
185
  int errorReturn = ISC_Open(serialNumbers[i]);
223
  int errorReturn = ISC_Open(serialNumbers[i]);
Line 193... Line 231...
193
  */
231
  */
194
  Sleep(1000);
232
  Sleep(1000);
195
  if (errorReturn == 0){
233
  if (errorReturn == 0){
196
          printf( "Device %d (serial %s) Connected... \n",i, serialNumbers[i]);
234
          printf( "Device %d (serial %s) Connected... \n",i, serialNumbers[i]);
197
          //Settings are loaded based on Stage Name. The integrated stepper class holds LTS and K10CR1 Information.
235
          //Settings are loaded based on Stage Name. The integrated stepper class holds LTS and K10CR1 Information.
198
          ISC_SetLEDswitches(serialNumbers[i], 0); // disable LED 
236
          ISC_SetLEDswitches(serialNumbers[i], 0); // disable LED
-
 
237
          Sleep(100);
199
          ISC_StartPolling(serialNumbers[i], 50);
238
          ISC_StartPolling(serialNumbers[i], 50);
200
          Sleep(1000);
239
          Sleep(1000);
201
  } else {
240
  } else {
202
          printf( "Error connecting device %d (%s)\n",i, serialNumbers[i] );  
241
          printf( "Error connecting device %d (%s)\n",i, serialNumbers[i] );  
203
  }
242
  }
204
  return errorReturn;
243
  return errorReturn;
-
 
244
}
-
 
245
 
-
 
246
int LTS_Open(){
-
 
247
 
-
 
248
  TLI_BuildDeviceList();
-
 
249
  TLI_DeviceInfo info;
-
 
250
  int err=0;
-
 
251
  for (int i=0;i<3;i++){
-
 
252
        TLI_GetDeviceInfo(serialNumbers[i], &info);
-
 
253
        Sleep(100);
-
 
254
        err = LTS_Init(i);
-
 
255
        printf("%s err=%x\n", info.description, err);
-
 
256
        if (err) return err;
-
 
257
  }
-
 
258
  return 0;
205
}
259
}
206
 
260
 
207
void LTS_Close(int i){
261
void LTS_Close(int i){
208
//Close the stage
262
//Close the stage
209
        ISC_StopPolling(serialNumbers[i]);
263
        ISC_StopPolling(serialNumbers[i]);
210
        ISC_Close(serialNumbers[i]);
264
        ISC_Close(serialNumbers[i]);
211
        printf( "Device Disconnected...\n");
265
        printf( "Device Disconnected...\n");
212
}
266
}
-
 
267
 
-
 
268
// wait in ms
-
 
269
void LTS_Home(int i,int wait){
-
 
270
 
-
 
271
//Set up homing parameters. 
-
 
272
                MOT_HomingParameters homingParams;
-
 
273
                ISC_GetHomingParamsBlock(serialNumbers[i], &homingParams);
-
 
274
                homingParams.direction = MOT_Reverse;
-
 
275
                ISC_SetHomingParamsBlock(serialNumbers[i], &homingParams);
-
 
276
 
-
 
277
                //Clear existing messages in the hardware buffer.
-
 
278
                ISC_ClearMessageQueue(serialNumbers[i]);
-
 
279
 
-
 
280
                //Home the stage and wait for the return message before continuing.
-
 
281
                ISC_Home(serialNumbers[i]);
-
 
282
                printf( "Start Homing...\n");
-
 
283
                if (wait) LTS_waitHome(i, wait);
-
 
284
                printf( "Homed...\n");
-
 
285
}
213
 
286
 
214
void LTS_StopProfiled(int i){
287
void LTS_StopProfiled(int i){
215
  ISC_StopProfiled(serialNumbers[i]);
288
  ISC_StopProfiled(serialNumbers[i]);
216
}  
289
}  
217
 
290
 
218
void LTS_MoveAbsolute(int i, double position, int wait){
291
void LTS_MoveAbsolute(int i, double position, int wait){
219
        ISC_SetMoveAbsolutePosition(serialNumbers[i], (position*StepsPerMm));
292
        ISC_SetMoveAbsolutePosition(serialNumbers[i], (position*StepsPerMm));
220
    ISC_MoveAbsolute(serialNumbers[i]);
293
    ISC_MoveAbsolute(serialNumbers[i]);
-
 
294
        //Clear existing messages in the hardware buffer.
-
 
295
        ISC_ClearMessageQueue(serialNumbers[i]);
221
        if (wait) LTS_waitMove(i, wait);
296
        if (wait) LTS_waitMove(i, wait);
222
       
297
       
223
}
298
}
224
 
299
 
225
void LTS_MoveRelative(int i, double distance, int wait){
300
void LTS_MoveRelative(int i, double distance, int wait){
226
        ISC_SetMoveRelativeDistance(serialNumbers[i], (distance*StepsPerMm));
301
        ISC_SetMoveRelativeDistance(serialNumbers[i], (distance*StepsPerMm));
227
    ISC_MoveRelativeDistance(serialNumbers[i]);
302
    ISC_MoveRelativeDistance(serialNumbers[i]);
-
 
303
        //Clear existing messages in the hardware buffer.
-
 
304
        ISC_ClearMessageQueue(serialNumbers[i]);
228
        if (wait) LTS_waitMove(i, wait);
305
        if (wait) LTS_waitMove(i, wait);
229
}
306
}
230
 
307
 
231
 
308
 
232
double LTS_GetPosition(int i){
309
double LTS_GetPosition(int i){
Line 234... Line 311...
234
  double real_unit = 1.0*device_unit / StepsPerMm;
311
  double real_unit = 1.0*device_unit / StepsPerMm;
235
  //const int unitType = 0 ;// 0 .. distance , 1 .. velocity, 2 .. acceleration
312
  //const int unitType = 0 ;// 0 .. distance , 1 .. velocity, 2 .. acceleration
236
  // does not work int err = ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit,&real_unit, unitType);
313
  // does not work int err = ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit,&real_unit, unitType);
237
  // printf("err = 0x%x pos %d %f\n", err ,device_unit, real_unit);
314
  // printf("err = 0x%x pos %d %f\n", err ,device_unit, real_unit);
238
  return real_unit;
315
  return real_unit;
239
}
316
}
240
 
317
 
241
unsigned int LTS_GetStatus(int i){
318
unsigned int LTS_GetStatus(int i){
242
  return ISC_GetStatusBits(serialNumbers[i]);
319
  return ISC_GetStatusBits(serialNumbers[i]);
243
}  
320
}  
244
 
321
 
245
 
322
 
Line 250... Line 327...
250
 
327
 
251
int LTS_Disable(int i){
328
int LTS_Disable(int i){
252
  return ISC_DisableChannel(serialNumbers[i]);
329
  return ISC_DisableChannel(serialNumbers[i]);
253
}
330
}
254
 
331
 
255
 
332
 
256
int LTS_GetNumberPositions(int i){
333
int LTS_GetNumberPositions(int i){
257
  return ISC_GetNumberPositions(serialNumbers[i]);
334
  return ISC_GetNumberPositions(serialNumbers[i]);
258
}
335
}
259
 
-
 
260
int LTS_Open(){
-
 
261
 
-
 
262
  TLI_BuildDeviceList();
-
 
263
  TLI_DeviceInfo info;
-
 
264
  int err=0;
-
 
265
  for (int i=0;i<3;i++){
-
 
266
        TLI_GetDeviceInfo(serialNumbers[i], &info);
-
 
267
        Sleep(100);
-
 
268
        err = LTS_Init(i);
-
 
269
        printf("%s err=%x\n", info.description, err);
-
 
270
        if (err) return err;
-
 
271
  }
-
 
272
  return 0;
-
 
273
}
-
 
274
 
-
 
275
 
336
 
276
void LTS_RegisterMessageCallback(int i, void (* functionPointer)()){
337
void LTS_RegisterMessageCallback(int i, void (* functionPointer)()){
277
  ISC_RegisterMessageCallback(serialNumbers[i], functionPointer );
338
  ISC_RegisterMessageCallback(serialNumbers[i], functionPointer );
278
}
339
}
279
 
340
 
280
void LTS_GetRealValueFromDeviceUnit(int i, int device_unit, double *real_unit, int unitType){
341
void LTS_GetRealValueFromDeviceUnit(int i, int device_unit, double *real_unit, int unitType){
281
  ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit, real_unit, unitType);
342
  ISC_GetRealValueFromDeviceUnit(serialNumbers[i], device_unit, real_unit, unitType);
282
}
343
}
283
 
344
 
284
void LTS_GetDeviceUnitFromRealValue(int i, double real_unit, int *device_unit, int unitType){
345
void LTS_GetDeviceUnitFromRealValue(int i, double real_unit, int *device_unit, int unitType){
285
  ISC_GetDeviceUnitFromRealValue(serialNumbers[i], real_unit, device_unit, unitType);
346
  ISC_GetDeviceUnitFromRealValue(serialNumbers[i], real_unit, device_unit, unitType);
286
}
347
}
287
//Waits should only be used for Home commands. The home command has a different status return.
-
 
288
void LTS_waitHome(int i, int tout)// Waits until a single axis is homed.
-
 
289
{
-
 
290
        WORD messageType=0;
-
 
291
        WORD messageId=0;
-
 
292
        DWORD messageData=0;
-
 
293
        int condition=0;
-
 
294
        LTS_Tmlnk (tout);
-
 
295
        do {
-
 
296
                while (!ISC_MessageQueueSize(serialNumbers[i])){
-
 
297
                  Sleep(250);
-
 
298
                  if (LTSTimerOut) break;
-
 
299
                }
-
 
300
                if (LTSTimerOut){
-
 
301
                        printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
302
                        break;
-
 
303
                }
-
 
304
                ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
-
 
305
                condition = (messageType == 2) && (messageId == 0);
-
 
306
               
-
 
307
        } while (!condition || !LTSTimerOut);
-
 
308
           
-
 
309
        LTS_Tmulk();
-
 
310
}
-
 
311
 
348
 
312
void LTS_waitMove(int i, int tout)// Waits until axis is stopped.
-
 
313
{
-
 
314
        WORD  messageType=0;
-
 
315
        WORD  messageId=0;
-
 
316
        DWORD messageData=0;
-
 
317
        int condition=0;  
-
 
318
        LTS_Tmlnk (tout);
-
 
319
        do {
-
 
320
                while (!ISC_MessageQueueSize(serialNumbers[i])){
-
 
321
                  Sleep(250);
-
 
322
                  if (LTSTimerOut) break;
-
 
323
                }
-
 
324
                if (LTSTimerOut){
-
 
325
                        printf( "Timeout in axis [%d] pos: %f messageType %d, messageId %d\n",i,LTS_GetPosition(i), messageType, messageId);
-
 
326
                        break;
-
 
327
                }
-
 
328
                ISC_GetNextMessage(serialNumbers[i], &messageType, &messageId, &messageData);
-
 
329
                condition = (messageType == 2) && (messageId == 1);
-
 
330
               
-
 
331
        } while (!condition);      
-
 
332
       
-
 
333
         
-
 
334
        LTS_Tmulk();
-
 
335
}
-
 
336
//*******************************************************************
349
//*******************************************************************
337
 
350
 
338
#ifdef LTS_MAIN
351
#ifdef LTS_MAIN
339
 
352
 
340
 
353
 
-
 
354
int p1_h;
341
int rID, tfID;
355
int rID, tfID;
342
 
356
 
343
#define MAX_THREADS 10
357
#define MAX_THREADS 10
344
static CmtThreadPoolHandle poolHandle = 0;
358
static CmtThreadPoolHandle poolHandle = 0;
345
int lid[][14]= {
359
int lid[][14]= {
Line 460... Line 474...
460
 
474
 
461
  int evcontrl,evpanel,ierr;
475
  int evcontrl,evpanel,ierr;
462
  double n2;
476
  double n2;
463
  int comled;
477
  int comled;
464
  int enabled=0;
478
  int enabled=0;
-
 
479
  double SingleMove=1; // in mm
465
 
480
 
466
 
481
 
467
  SetSleepPolicy(VAL_SLEEP_MORE);
482
  SetSleepPolicy(VAL_SLEEP_MORE);
468
  CmtNewThreadPool (MAX_THREADS,  &poolHandle);
483
  CmtNewThreadPool (MAX_THREADS,  &poolHandle);
469
  SetStdioPort (CVI_STDIO_WINDOW);
484
  SetStdioPort (CVI_STDIO_WINDOW);
470
  if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */
485
  if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; // out of memory
471
 
486
 
472
  p1_h = LoadPanel (0,"ThorlabsLTS_ui.uir", P1);
487
  p1_h = LoadPanel (0,"ThorlabsLTS_ui.uir", P1);
473
  //p1_h = BuildP1 (0);
488
  //p1_h = BuildP1 (0);
474
  ierr = DisplayPanel (p1_h);
489
  ierr = DisplayPanel (p1_h);
475
  ierr = SetActiveCtrl (p1_h,P1_B1);
490
  ierr = SetActiveCtrl (p1_h,P1_B1);
Line 513... Line 528...
513
        break;
528
        break;
514
      case P1_BB:
529
      case P1_BB:
515
        LTS_MoveRelative(2,-SingleMove, 0);
530
        LTS_MoveRelative(2,-SingleMove, 0);
516
        break;
531
        break;
517
      case P1_HO:
532
      case P1_HO:
518
        LTS_Home(0,0);
533
        LTS_Home(0,180000);
519
        break;
534
        break;
520
          case P1_HO_2:
535
          case P1_HO_2:
521
        LTS_Home(1,0);
536
        LTS_Home(1,180000);
522
        break;
537
        break;
523
          case P1_HO_3:
538
          case P1_HO_3:
524
        LTS_Home(2,0);
539
        LTS_Home(2,180000);
525
        break;
540
        break;
526
      case P1_GX:
541
      case P1_GX:
527
        GetCtrlVal (p1_h, P1_XG, &n2);
542
        GetCtrlVal (p1_h, P1_XG, &n2);
528
                LTS_MoveAbsolute(0,n2,0);
543
                LTS_MoveAbsolute(0,n2,15000);
529
        break;
544
        break;
530
      case P1_GY:
545
      case P1_GY:
531
        GetCtrlVal (p1_h, P1_YG, &n2);
546
        GetCtrlVal (p1_h, P1_YG, &n2);
532
        LTS_MoveAbsolute(1,n2,0);
547
        LTS_MoveAbsolute(1,n2,15000);
533
        break;
548
        break;
534
      case P1_GZ:
549
      case P1_GZ:
535
        GetCtrlVal (p1_h, P1_ZG, &n2);
550
        GetCtrlVal (p1_h, P1_ZG, &n2);
536
        LTS_MoveAbsolute(2,n2,0);
551
        LTS_MoveAbsolute(2,n2,15000);
537
        break;
552
        break;
538
      case P1_G:
553
      case P1_G:
539
        GetCtrlVal (p1_h, P1_XG, &n2);
554
        GetCtrlVal (p1_h, P1_XG, &n2);
540
        LTS_MoveAbsolute(0,n2,0);
555
        LTS_MoveAbsolute(0,n2,15000);
541
        GetCtrlVal (p1_h, P1_YG, &n2);
556
        GetCtrlVal (p1_h, P1_YG, &n2);
542
        LTS_MoveAbsolute(1,n2,0);
557
        LTS_MoveAbsolute(1,n2,15000);
543
        GetCtrlVal (p1_h, P1_ZG, &n2);
558
        GetCtrlVal (p1_h, P1_ZG, &n2);
544
        LTS_MoveAbsolute(2,n2,0);
559
        LTS_MoveAbsolute(2,n2,15000);
545
                break;
560
                break;
546
      case P1_B3: // reset
561
      case P1_B3: // reset
547
      case P1_B3_2: // reset
562
      case P1_B3_2: // reset
548
          case P1_B3_3: // reset
563
          case P1_B3_3: // reset
549
                printf("RST Not yet implemented\n");
564
                printf("RST Not yet implemented\n");
Line 631... Line 646...
631
 
646
 
632
 
647
 
633
#else
648
#else
634
// *************************************
649
// *************************************
635
 
650
 
-
 
651
/*
636
int main(int argc, char ** argv)
652
int main(int argc, char ** argv)
637
{
653
{
638
        //Sets up simulations. Comment in if running on physical hardware. 
654
        //Sets up simulations. Comment in if running on physical hardware.
639
        //TLI_InitializeSimulations();
655
        //TLI_InitializeSimulations();
640
 
656
 
Line 658... Line 674...
658
 
674
 
659
                //Move the stage and wait for the return message before continuing.
675
                //Move the stage and wait for the return message before continuing.
660
                for (int k=0;k<10;k++){
676
                for (int k=0;k<10;k++){
661
                  LTS_MoveAbsolute(i,k);
677
                  LTS_MoveAbsolute(i,k);
662
                  printf( "Moving ...\n");
678
                  printf( "Moving ...\n");
663
                  waitMove(i);
679
                  LTS_waitMove(i);
664
                  printf( "Move Complete...\n");
680
                  printf( "Move Complete...\n");
665
                }
681
                }
666
               
682
               
667
         
683
         
668
        }
684
        }
669
               
685
               
670
        for (int i=0;i<3;i++){
686
        for (int i=0;i<3;i++){
671
           LTS_Close(i);
687
           LTS_Close(i);
672
        }
688
        }
673
       
689
       
674
        //Closes simulations. Comment if running on physical hardware. 
690
        //Closes simulations. Comment if running on physical hardware.
675
        //TLI_UninitializeSimulations();
691
        //TLI_UninitializeSimulations();
676
        Delay(10);
692
        Delay(10);
677
        return 0;
693
        return 0;
678
}
694
}
-
 
695
*/
679
#endif
696
#endif