SDC C-Project CF Review 프로그램
LYW
2021-07-08 630eb072cca33a7c633f6429a0b5a531d1b83268
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
/*************************************************************************
  File: runtime.cpp - Dynamic link functions.
 
HISTORY
 
  02/02/1996  DES created.
 
**************************************************************************/
 
//#ifdef _MSC
  #include "stdafx.h"
//#endif
 
#pragma hdrstop
 
#define NO_EXTERN
#include "runtime.h"
#undef  NO_EXTERN
 
//************************************************************************
// Function instants for runtime linking
//************************************************************************
HINSTANCE hPmacLib = NULL;
BOOL DO_NC_FUNCTIONS = true;// TRUE by default
 
//----------------------------------------------------------------------------
void DoNCFunctions(BOOL yesno)
{
  DO_NC_FUNCTIONS = yesno;
}
//----------------------------------------------------------------------------
FARPROC GetFuncAddress(HMODULE hModule,LPCSTR lpProcName)
{
 //TCHAR tmp[256];
 FARPROC adr;
 
 adr = GetProcAddress(hModule,lpProcName);
 if (adr == NULL)
   {
   // sprintf(tmp, _T("Error in loading library function: %s"),lpProcName);
   // MessageBox(NULL,tmp, _T(""),MB_ICONSTOP | MB_OK);
   }
 return adr;
}
 
//----------------------------------------------------------------------------
void CloseRuntimeLink()
{
 if (hPmacLib != NULL)
   {
    FreeLibrary(hPmacLib);
    hPmacLib = NULL;
   }
}
 
// Macro to make things consistant and easier
#define DLL_LINK(var,type,name)  var=(type)GetFuncAddress(hPmacLib,name); \
                                 if (var==NULL) goto load_err
 
//----------------------------------------------------------------------------
HINSTANCE OpenRuntimeLink()
{
  // Get handle to PComm32.DLL
  hPmacLib = LoadLibrary(DRIVERNAME);
 
  if (hPmacLib == NULL)
  {
    MessageBox(NULL, _T("Error in loading PMAC library."), _T("PMAC"),MB_ICONSTOP | MB_OK | MB_TOPMOST);
    return NULL;
  }
  else
  {
// Get all COMM the function handles required
DLL_LINK(DeviceDPRPCITest              ,PMACDPRPCITEST           ,"PmacDPRPCITest");
DLL_LINK(DeviceOpen                    ,OPENPMACDEVICE           ,"OpenPmacDevice");
DLL_LINK(DeviceSelect                  ,SELECTPMACDEVICE         ,"PmacSelect");
DLL_LINK(DeviceNumberOfDevices         ,NUMBEROFDEVICES          ,"DrvNumberOfDevices");
DLL_LINK(DeviceClose                   ,CLOSEPMACDEVICE          ,"ClosePmacDevice");
DLL_LINK(DeviceSetLanguage             ,PMACSETLANGUAGE          ,"PmacSetLanguage");
DLL_LINK(DeviceLMH                     ,PMACLMH                  ,"PmacLMH");
DLL_LINK(DeviceSetWindow               ,PMACSETWINDOW            ,"PmacSetWindow");
DLL_LINK(DeviceSetLanguageModule       ,SETLANGUAGEMODULE        ,"SetLanguageModule");
DLL_LINK(DeviceConfigure               ,CONFIGURE                ,"PmacConfigure");
DLL_LINK(DeviceLoadString              ,SZLOADSTRINGA            ,"szLoadStringA");
DLL_LINK(DeviceReadReady               ,READREADY                ,"PmacReadReady");
DLL_LINK(DeviceSendLine                ,SENDLINEA                ,"PmacSendLineA");
DLL_LINK(DeviceGetLine                 ,GETLINEA                 ,"PmacGetLineA");
DLL_LINK(DeviceGetLineEx               ,GETLINEEXA               ,"PmacGetLineExA");
DLL_LINK(DeviceSendChar                ,SENDCHARA                ,"PmacSendCharA");
DLL_LINK(DeviceGetResponse             ,GETRESPONSEA             ,"PmacGetResponseA");
DLL_LINK(DeviceGetResponseEx           ,GETRESPONSEEXA           ,"PmacGetResponseExA");
DLL_LINK(DeviceGetControlResponse      ,GETCONTROLRESPONSEA      ,"PmacGetControlResponseA");
DLL_LINK(DeviceGetControlResponseEx    ,GETCONTROLRESPONSEEXA    ,"PmacGetControlResponseExA");
DLL_LINK(DeviceGetAsciiComm            ,GETASCIICOMM             ,"PmacGetAsciiComm");
DLL_LINK(DeviceSetAsciiComm            ,SETASCIICOMM             ,"PmacSetAsciiComm");
DLL_LINK(DeviceGetPmacLocation         ,GETLOCATION              ,"PmacGetLocation");
DLL_LINK(DeviceGetPmacEnumeration      ,GETENUMERATION           ,"PmacGetEnumeration");
DLL_LINK(DeviceGetError                ,GETERROR                 ,"PmacGetError");
DLL_LINK(DeviceDownload                ,DOWNLOADA                ,"PmacDownloadA");
DLL_LINK(DeviceDownloadThread          ,DOWNLOADTHREADA          ,"PmacThreadDownloadA");
DLL_LINK(DeviceDownloadProgress        ,DOWNLOAD_SHOWPROGRESS    ,"PmacDownloadProgress");
DLL_LINK(DeviceINTRTerminate           ,INTRTERMINATE            ,"PmacINTRTerminate");
DLL_LINK(DeviceINTRWndMsgInit          ,INTRWNDMSGINIT           ,"PmacINTRWndMsgInit");
DLL_LINK(DeviceINTRSetupMask           ,INTRSETUPMASK            ,"PmacINTRSetupMask");
DLL_LINK(DeviceINTRFuncCallInit        ,INTRFUNCCALLINIT         ,"PmacINTRFuncCallInit");
DLL_LINK(DeviceLock                    ,LOCKPMAC                 ,"LockPmac");
DLL_LINK(DeviceRelease                 ,RELEASEPMAC              ,"ReleasePmac");
DLL_LINK(DeviceSetCriticalIVars        ,SETCRITICALIVARS         ,"PmacSetCriticalIVars");
DLL_LINK(DeviceGetRomDate              ,GETROMDATEA              ,"PmacGetRomDateA");
DLL_LINK(DeviceGetRomVersion           ,GETROMVERSIONA           ,"PmacGetRomVersionA");
DLL_LINK(DeviceGetErrorStr             ,GETERRORSTRA             ,"PmacGetErrorStrA");
DLL_LINK(DeviceMultiDownload           ,MULTIDOWNLOADA           ,"PmacMultiDownloadA");
DLL_LINK(DeviceAddDownloadFile         ,ADDDOWNLOADFILEA         ,"PmacAddDownloadFileA");
DLL_LINK(DeviceRemoveDownloadFile      ,REMOVEDOWNLOADFILEA      ,"PmacRemoveDownloadFileA");
DLL_LINK(DeviceRenumberFiles           ,RENUMBERFILESA           ,"PmacRenumberFilesA");
DLL_LINK(DeviceRemoveDownloadFile      ,REMOVEDOWNLOADFILEA      ,"PmacRemoveDownloadFileA");
DLL_LINK(DeviceInBootStrapMode         ,INBOOTSTRAP              ,"PmacInBootStrapMode");
DLL_LINK(DeviceGetBuffer               ,GETBUFFERA               ,"PmacGetBufferA");
DLL_LINK(DevicePmacConfigure           ,PMACCONFIGURE            ,"PmacConfigure");
DLL_LINK(DeviceTestDPRAM               ,TESTDPRAM                ,"PmacDPRTest");
DLL_LINK(DeviceTestDPRAMAbort          ,TESTDPRABORT             ,"PmacAbortDPRTest");
DLL_LINK(DeviceDPRAvailable            ,DPRAVAILABLE             ,"PmacGetDpramAvailable");
//DLL_LINK(DeviceDPRGetPtr               ,DPRGETPTR                ,"PmacDPRGetPtr");
 
DLL_LINK(DeviceRestoreLinkList         ,RESTORELINKLIST           ,"RestoreLinkList");
DLL_LINK(DeviceDoChecksums             ,DOCHECKSUMS               ,"PmacDoChecksums");
 
DLL_LINK(DeviceStoreUSResponse         ,STOREUSRESPONSE           ,"StoreUSResponse");
DLL_LINK(DeviceGetUSResponse           ,GETUSRESPONSE             ,"GetUSResponse");
DLL_LINK(DeviceUSReadReady             ,USREADREADY               ,"USReadReady");
 
DLL_LINK(DeviceChangeGet           ,CHANGEGET                 ,"ChangeGet");
DLL_LINK(DeviceChangeStore         ,CHANGESTORE               ,"ChangeStore");
DLL_LINK(DeviceChangeReadReady     ,CHANGEREADREADY           ,"ChangeReadReady");
 
DLL_LINK(DeviceMapDeviceNumToEnumAndLocation  ,MAPDEVICENUMTOENUANDLOC  ,"MapDeviceNumToEnumAndLocation");
DLL_LINK(DeviceMapLocAndEnumFromDeviceNum  ,MAPLOCANDENUMFROMDEVICENUM,"MapLocAndEnumFromDeviceNum");
DLL_LINK(DeviceShutdownPmac,DEVICESHUTDOWNPMAC,"ShutdownPmacDevice");
 
 
 
// Checksum communication rouitnes
DLL_LINK(DeviceSERDoChecksums          ,SERDOCHECKSUMS           ,"PmacSERDoChecksums");
DLL_LINK(DeviceSERCheckSendLineA       ,SERCHECKSENDLINEA        ,"PmacSERCheckSendLineA");
DLL_LINK(DeviceSERCheckGetLineA        ,SERCHECKGETLINEA         ,"PmacSERCheckGetLineA");
DLL_LINK(DeviceSERCheckResponseA       ,SERCHECKRESPONSEA        ,"PmacSERCheckResponseA");
DLL_LINK(DeviceSERCheckAllWentWell     ,SERCHECKALLWENTWELL      ,"PmacSerCheckAllWentWell");
 
DLL_LINK(DeviceAbortDownload           ,ABORTDOWNLOAD            ,"PmacAbortDownload");
DLL_LINK(DeviceSetMaxDownloadErrors    ,SETMAXDOWNLOADERRORS     ,"PmacSetMaxDownloadErrors");
DLL_LINK(DeviceDPRRotBufClear          ,DPRROTBUFCLEAR           ,"PmacDPRRotBufClr");
DLL_LINK(DeviceDPRRotBufPut            ,DPRROTBUFPUT             ,"PmacDPRrotput");
 
DLL_LINK(DevicePmacIsTurbo             ,PMACISTURBO              ,"bPMACIsTurbo");
 
// Turbo Setup
DLL_LINK(DeviceAmpEnabled              ,AMPENABLED               ,"PmacAmpEnabled");
DLL_LINK(DeviceAmpFault                ,AMPFAULT                 ,"PmacAmpFault");
DLL_LINK(DeviceOnNegativeLimit         ,ONNEGATIVELIMIT          ,"PmacOnNegativeLimit");
DLL_LINK(DeviceOnPositiveLimit         ,ONPOSITIVELIMIT          ,"PmacOnPositiveLimit");
DLL_LINK(DeviceFatalFError             ,FATALFERROR              ,"PmacFatalFError");
DLL_LINK(DeviceFollowError             ,FOLLOWERROR              ,"PmacFollowError");
DLL_LINK(DevicePhasedMotor             ,PHASEDMOTOR              ,"PmacPhasedMotor");
DLL_LINK(DeviceGetMotorStatus          ,GETMOTORSTATUS           ,"PmacGetMotorStatus");
// Data Gathering
DLL_LINK(DeviceGetGatherPeriod         ,GETGATHERPERIOD          ,"PmacGetGatherPeriod");
DLL_LINK(DeviceGetGatherSampleTime     ,GETGATHERSAMPLETIME      ,"PmacGetGatherSampleTime");
DLL_LINK(DeviceSetGatherSampleTime     ,SETGATHERSAMPLETIME      ,"PmacSetGatherSampleTime");
DLL_LINK(DeviceGetNumGatherSources     ,GETNUMGATHERSOURCES      ,"PmacGetNumGatherSources");
DLL_LINK(DeviceGetNumGatherSamples     ,GETNUMGATHERSAMPLES      ,"PmacGetNumGatherSamples");
DLL_LINK(DeviceSetGatherPeriod         ,SETGATHERPERIOD          ,"PmacSetGatherPeriod");
DLL_LINK(DeviceSetGatherEnable         ,SETGATHERENABLE          ,"PmacSetGatherEnable");
DLL_LINK(DeviceGetGatherEnable         ,GETGATHERENABLE          ,"PmacGetGatherEnable");
DLL_LINK(DeviceSetCurrentGather        ,SETCURRENTGATHER         ,"PmacSetCurrentGather");
DLL_LINK(DeviceSetGather               ,SETGATHER                ,"PmacSetGather");
DLL_LINK(DeviceSetQuickGather          ,SETQUICKGATHER           ,"PmacSetQuickGather");
DLL_LINK(DeviceSetQuickGatherEx        ,SETQUICKGATHEREX         ,"PmacSetQuickGatherEx");
DLL_LINK(DeviceSetQGWithDirectCur      ,SETQGWITHDIRECTCUR       ,"PmacSetQuickGatherWithDirectCurrent");
DLL_LINK(DeviceSetQGWithDirectCurEx    ,SETQGWITHDIRECTCUREX     ,"PmacSetQuickGatherWithDirectCurrentEx");
DLL_LINK(DeviceGetGather               ,GETGATHER                ,"PmacGetGather");
DLL_LINK(DeviceClearGather             ,CLEARGATHER              ,"PmacClearGather");
DLL_LINK(DeviceInitGather              ,INITGATHER               ,"PmacInitGather");
DLL_LINK(DeviceClearGatherData         ,CLEARGATHERDATA          ,"PmacClearGatherData");
DLL_LINK(DeviceCollectGatherData       ,COLLECTGATHERDATA        ,"PmacCollectGatherData");
DLL_LINK(DeviceGetGatherPoint          ,GETGATHERPOINT           ,"PmacGetGatherPoint");
DLL_LINK(DeviceGetGatherSamples        ,GETGATHERSAMPLES         ,"PmacGetGatherSamples");
DLL_LINK(DeviceStartGather             ,STARTGATHER              ,"PmacStartGather");
DLL_LINK(DeviceStopGather              ,STOPGATHER               ,"PmacStopGather");
 
// MACRO Station
DLL_LINK(DeviceUltraLightAnalyze       ,ULTRALIGHTANALYZE        ,"UltraLightAnalyze");
DLL_LINK(DeviceMACROGetIVariableLong   ,MACROGETIVARIABLELONG    ,"MACROGetIVariableLong");
DLL_LINK(DeviceMACROUploadConfig       ,MACROUPLOADCONFIG        ,"MACROUploadConfig");
 
DLL_LINK(DeviceMACROSetIVariableString ,MACROSETIVARIABLESTRING  ,"MACROSetIVariableString");
DLL_LINK(DeviceMACROGetIVariableString ,MACROGETIVARIABLESTRING  ,"MACROGetIVariableString");
 
DLL_LINK(DeviceGetVariableStr          ,GETVARIABLESTRA          ,"PmacGetVariableStrA");
DLL_LINK(DeviceGetVariableLong         ,GETVARIABLELONG          ,"PmacGetVariableLong");
DLL_LINK(DeviceGetVariableDouble       ,GETVARIABLEDOUBLE        ,"PmacGetVariableDouble");
//++ Added
DLL_LINK(DeviceSetVariable                ,SETVARIABLE            ,"PmacSetVariable");
DLL_LINK(DeviceSetVariableLong            ,SETVARIABLELONG        ,"PmacSetVariableLong");
DLL_LINK(DeviceSetVariableDouble        ,SETVARIABLEDOUBLE        ,"PmacSetVariableDouble");
// by DTK
 
DLL_LINK(DeviceGetIVariableLong        ,GETIVARIABLELONG         ,"PmacGetIVariableLong");
DLL_LINK(DeviceGetIVariableDouble      ,GETIVARIABLEDOUBLE       ,"PmacGetIVariableDouble");
DLL_LINK(DeviceSetIVariableLong        ,SETIVARIABLELONG         ,"PmacSetIVariableLong");
DLL_LINK(DeviceSetIVariableDouble      ,SETIVARIABLEDOUBLE       ,"PmacSetIVariableDouble");
DLL_LINK(DeviceFlush                   ,FLUSH                    ,"PmacFlush");
DLL_LINK(DeviceGetPlcStatus            ,GETPLCSTATUS             ,"PmacGetPlcStatus");
DLL_LINK(DeviceIsAnyPLCRunning         ,ISANYPLCRUNNING          ,"PmacIsAnyPLCRunning");
 
DLL_LINK(DeviceGetUserHandle           ,GETUSERHANDLE            ,"PmacGetUserHandle");
DLL_LINK(DeviceGetPmacType             ,GETPMACTYPE              ,"PmacGetPmacType");
DLL_LINK(DeviceWhyMotorNotMoving       ,WHYMOTORNOTMOVING        ,"whyMotorNotMoving");
DLL_LINK(DeviceWhyMotorNotMovingTURBO  ,WHYMOTORNOTMOVINGTURBO   ,"whyMotorNotMovingStringTURBO");
DLL_LINK(DeviceWhyMotorNotMovingString ,WHYMOTORNOTMOVINGSTRING  ,"whyMotorNotMovingString");
DLL_LINK(DeviceWhyMotorNotMovingStringTURBO   ,WHYMOTORNOTMOVINGSTRINGTURBO  ,"whyMotorNotMovingStringTURBO");
DLL_LINK(DeviceWhyCsNotMovingString    ,WHYCSNOTMOVINGSTRING     ,"whyCSNotMovingString");
DLL_LINK(DeviceWhyCsNotMoving          ,WHYCSNOTMOVING           ,"whyCSNotMoving");
DLL_LINK(DeviceWhyCsNotMovingStringTURBO,WHYCSNOTMOVINGSTRINGTURBO,"whyCSNotMovingStringTURBO");
DLL_LINK(DeviceWhyCsNotMovingTURBO     ,WHYCSNOTMOVINGTURBO      ,"whyCSNotMovingTURBO");
DLL_LINK(DeviceGetBitValue             ,GETBITVALUE              ,"getBitValue");
DLL_LINK(DeviceHexLong2                ,HEXLONG2                 ,"hex_long2");
DLL_LINK(DeviceInBufferedMode          ,INBUFFEREDMODE           ,"InBufferedMode");
 
DLL_LINK(DeviceSERGetPort              ,SERGETPORT               ,"PmacSERGetPort");
//DLL_LINK(DeviceSERSetPort              ,SERSETPORT               ,"PmacSERSetPort");
DLL_LINK(DeviceSERGetBaudrate          ,SERGETBAUDRATE           ,"PmacSERGetBaudrate");
//DLL_LINK(DeviceSERSetBaudrate          ,SERSETBAUDRATE           ,"PmacSERSetBaudrate");
 
DLL_LINK(DeviceDPRBufLast              ,DPRBUFLAST               ,"PmacDPRBufLast");
DLL_LINK(DeviceDPRRotBuf               ,DPRROTBUF                ,"PmacDPRRotBuf");
DLL_LINK(DeviceDPRAsciiStrToRot        ,DPRASCIISTRTOROTA        ,"PmacDPRAsciiStrToRotA");
DLL_LINK(DeviceDPRAsciiStrToRotEx      ,DPRASCIISTRTOROTEX       ,"PmacDPRAsciiStrToRotEx");
DLL_LINK(DeviceDPRRotBufInit           ,DPRROTBUFINIT            ,"PmacDPRRotBufInit");
DLL_LINK(DeviceDPRRotBufRemove         ,DPRROTBUFREMOVE          ,"PmacDPRRotBufRemove");
DLL_LINK(DeviceDPRRotBufChange         ,DPRROTBUFCHANGE          ,"PmacDPRRotBufChange");
DLL_LINK(DeviceDPRGetVBGServoTimer     ,DPRGETVBGSERVOTIMER      ,"PmacDPRGetVBGServoTimer");
DLL_LINK(DeviceDPRRealTime             ,DPRREALTIME              ,"PmacDPRRealTime");
//DLL_LINK(DeviceDPRSetHostBusyBit       ,DPRSETHOSTBUSYBIT        ,"PmacDPRSetHostBusyBit");
//DLL_LINK(DeviceDPRGetHostBusyBit       ,DPRGETHOSTBUSYBIT        ,"PmacDPRGetHostBusyBit");
//DLL_LINK(DeviceDPRGetPMACBusyBit       ,DPRGETPMACBUSYBIT        ,"PmacDPRGetPmacBusyBit");
DLL_LINK(DeviceDPRGetServoTimer        ,DPRGETSERVOTIMER         ,"PmacDPRGetServoTimer");
DLL_LINK(DeviceDPRSetMotors            ,DPRSETMOTORS             ,"PmacDPRSetMotors");
DLL_LINK(DeviceDPRGetCommandedPos      ,DPRGETCOMMANDEDPOS       ,"PmacDPRGetCommandedPos");
DLL_LINK(DeviceDPRPosition             ,DPRPOSITION              ,"PmacDPRPosition");
DLL_LINK(DeviceDPRNetActualPosition    ,DPRNETACTUALPOSITION        ,"PmacNetActualPosition");
DLL_LINK(DeviceDPRFollowError          ,DPRFOLLOWERROR           ,"PmacDPRFollowError");
DLL_LINK(DeviceDPRGetVel               ,DPRGETVEL                ,"PmacDPRGetVel");
DLL_LINK(DeviceDPRGetMasterPos         ,DPRGETMASTERPOS          ,"PmacDPRGetMasterPos");
DLL_LINK(DeviceDPRGetCompensationPos   ,DPRGETCOMPENSATIONPOS    ,"PmacDPRGetCompensationPos");
DLL_LINK(DeviceDPRGetPrevDAC           ,DPRGETPREVDAC            ,"PmacDPRGetPrevDAC");
DLL_LINK(DeviceDPRGetMoveTime          ,DPRGETMOVETIME           ,"PmacDPRGetMoveTime");
//DLL_LINK(DeviceDPRResetDataReadyBit    ,DPRRESETDATAREADYBIT     ,"PmacDPRResetDataReadyBit");
//DLL_LINK(DeviceDPRGetDataReadyBit      ,DPRGETDATAREADYBIT       ,"PmacDPRGetDataReadyBit");
DLL_LINK(DeviceDPRUpdateRealtime       ,DPRUPDATEREALTIME        ,"PmacDPRUpdateRealTime");
//DLL_LINK(DeviceDPRMotorServoStatusTurbo,DPRMOTORSERVOSTATUSTURBO ,"PmacDPRMotorServoStatusTurbo");
DLL_LINK(DeviceDPRRealTimeEx           ,DPRREALTIMEEX            ,"PmacDPRRealTimeEx");
DLL_LINK(DeviceDPRRealTimeSetMotor     ,DPRREALTIMESETMOTOR      ,"PmacDPRRealTimeSetMotor");
DLL_LINK(DeviceDPRBackground           ,DPRBACKGROUND            ,"PmacDPRBackground");
DLL_LINK(DeviceDPRBackgroundEx         ,DPRBACKGROUNDEX          ,"PmacDPRBackgroundEx");
DLL_LINK(DeviceDPRBackGroundVar        ,DPRBACKGROUNDVAR         ,"PmacDPRBackGroundVar");
DLL_LINK(DeviceDPRGetTargetPos         ,DPRGETTARGETPOS          ,"PmacDPRGetTargetPos");
DLL_LINK(DeviceDPRGetBiasPos           ,DPRGETBIASPOS            ,"PmacDPRGetBiasPos");
DLL_LINK(DeviceDPRPe                   ,DPRPE                    ,"PmacDPRPe");
DLL_LINK(DeviceDPRTimeRemainingInMove  ,DPRTIMEREMINMOVE         ,"PmacDPRTimeRemInMove");
DLL_LINK(DeviceTimeRemInTATS           ,DPRTIMEREMINTATS         ,"PmacDPRTimeRemInTATS");
DLL_LINK(DeviceDPRCommanded            ,DPRCOMMANDED             ,"PmacDPRCommanded");
////////////////////////////////////////////////////////////////////////////
// DPR Control Panel
////////////////////////////////////////////////////////////////////////////
DLL_LINK(DeviceDPRControlPanel         ,DPRCONTROLPANEL          ,"PmacDPRControlPanel");
DLL_LINK(DeviceDPRSetJogPosBit         ,DPRSETJOGPOSBIT          ,"PmacDPRSetJogPosBit");
DLL_LINK(DeviceDPRGetJogPosBit         ,DPRGETJOGPOSBIT          ,"PmacDPRGetJogPosBit");
DLL_LINK(DeviceDPRSetJogNegBit         ,DPRSETJOGNEGBIT          ,"PmacDPRSetJogNegBit");
DLL_LINK(DeviceDPRGetJogNegBit         ,DPRGETJOGNEGBIT          ,"PmacDPRGetJogNegBit");
DLL_LINK(DeviceDPRSetJogReturnBit      ,DPRSETJOGRETURNBIT       ,"PmacDPRSetJogReturnBit");
DLL_LINK(DeviceDPRGetJogReturnBit      ,DPRGETJOGRETURNBIT       ,"PmacDPRGetJogReturnBit");
DLL_LINK(DeviceDPRSetRunBit            ,DPRSETRUNBIT             ,"PmacDPRSetRunBit");
DLL_LINK(DeviceDPRGetRunBit            ,DPRGETRUNBIT             ,"PmacDPRGetRunBit");
DLL_LINK(DeviceDPRSetStopBit           ,DPRSETSTOPBIT            ,"PmacDPRSetStopBit");
DLL_LINK(DeviceDPRGetStopBit           ,DPRGETSTOPBIT            ,"PmacDPRGetStopBit");
DLL_LINK(DeviceDPRSetHomeBit           ,DPRSETHOMEBIT            ,"PmacDPRSetHomeBit");
DLL_LINK(DeviceDPRGetHomeBit           ,DPRGETHOMEBIT            ,"PmacDPRGetHomeBit");
DLL_LINK(DeviceDPRSetHoldBit           ,DPRSETHOLDBIT            ,"PmacDPRSetHoldBit");
DLL_LINK(DeviceDPRGetHoldBit           ,DPRGETHOLDBIT            ,"PmacDPRGetHoldBit");
DLL_LINK(DeviceDPRGetStepBit           ,DPRGETSTEPBIT            ,"PmacDPRGetStepBit");
DLL_LINK(DeviceDPRSetStepBit           ,DPRSETSTEPBIT            ,"PmacDPRSetStepBit");
DLL_LINK(DeviceDPRGetRequestBit        ,DPRGETREQUESTBIT         ,"PmacDPRGetRequestBit");
DLL_LINK(DeviceDPRSetRequestBit        ,DPRSETREQUESTBIT         ,"PmacDPRSetRequestBit");
DLL_LINK(DeviceDPRGetFOEnableBit       ,DPRGETFOENABLEBIT        ,"PmacDPRGetFOEnableBit");
DLL_LINK(DeviceDPRSetFOEnableBit       ,DPRSETFOENABLEBIT        ,"PmacDPRSetFOEnableBit");
DLL_LINK(DeviceDPRSetFOValue           ,DPRSETFOVALUE            ,"PmacDPRSetFOValue");
DLL_LINK(DeviceDPRGetFOValue           ,DPRGETFOVALUE            ,"PmacDPRGetFOValue");
DLL_LINK(DeviceDPRVarBufInit           ,DPRVARBUFINIT            ,"PmacDPRVarBufInit");
DLL_LINK(DeviceDPRVarBufInitEx         ,DPRVARBUFINITEX          ,"PmacDPRVarBufInitEx");
DLL_LINK(DeviceDPRVarBufRemove         ,DPRVARBUFREMOVE          ,"PmacDPRVarBufRemove");
DLL_LINK(DeviceDPRVarBufChange         ,DPRVARBUFCHANGE          ,"PmacDPRVarBufChange");
DLL_LINK(DeviceDPRVarBufChangeEx       ,DPRVARBUFCHANGEEX        ,"PmacDPRVarBufChangeEx");
DLL_LINK(DeviceDPRWriteBuffer          ,DPRWRITEBUFFER           ,"PmacDPRWriteBuffer");
DLL_LINK(DeviceDPRWriteBufferEx        ,DPRWRITEBUFFEREX         ,"PmacDPRWriteBufferEx");
DLL_LINK(DeviceDPRVelocity             ,DPRVELOCITY              ,"PmacDPRVelocity");
DLL_LINK(DeviceDPRVarBufRead           ,DPRVARBUFREAD            ,"PmacDPRVarBufRead");
DLL_LINK(DeviceDPRVarBufReadEx         ,DPRVARBUFREADEX          ,"PmacDPRVarBufReadEx");
DLL_LINK(DeviceDPRGetMotorMotion       ,DPRGETMOTORMOTION        ,"PmacDPRGetMotorMotion");
DLL_LINK(DeviceDPRGetProgramMode       ,DPRGETPROGRAMMODE        ,"PmacDPRGetProgramMode");
DLL_LINK(DeviceDPRSysInposition        ,DPRSYSINPOSITION         ,"PmacDPRSysInposition");
DLL_LINK(DeviceDPRRotBufOpen           ,DPRROTBUFOPEN            ,"PmacDPRRotBufOpen");
DLL_LINK(DeviceDPRProgRemaining        ,DPRPROGREMAINING         ,"PmacDPRProgRemaining");
DLL_LINK(DeviceDPRGetFeedRateMode      ,DPRGETFEEDRATEMODE       ,"PmacDPRGetFeedRateMode");
DLL_LINK(DeviceDPRGetBiasPos           ,DPRGETBIASPOS            ,"PmacDPRGetBiasPos");
 
// Numeric read/write functions
// Standard
DLL_LINK(DeviceDPRSetMem              ,PMACDPRSETMEM               ,"PmacDPRSetMem");
DLL_LINK(DeviceDPRGetMem              ,PMACDPRGETMEM               ,"PmacDPRGetMem");
DLL_LINK(DeviceDPRGetWord              ,DPRGETWORD               ,"PmacDPRGetWord");
DLL_LINK(DeviceDPRSetWord              ,DPRSETWORD               ,"PmacDPRSetWord");
DLL_LINK(DeviceDPRGetDWord             ,DPRGETDWORD              ,"PmacDPRGetDWord");
DLL_LINK(DeviceDPRSetDWord             ,DPRSETDWORD              ,"PmacDPRSetDWord");
DLL_LINK(DeviceDPRGetFloat             ,DPRGETFLOAT              ,"PmacDPRGetFloat");
DLL_LINK(DeviceDPRSetFloat             ,DPRSETFLOAT              ,"PmacDPRSetFloat");
// Masking
DLL_LINK(DeviceDPRDWordBitSet          ,DPRDWORDBITSET           ,"PmacDPRDWordBitSet");
DLL_LINK(DeviceDPRSetDWordBit          ,DPRSETDWORDBIT           ,"PmacDPRSetDWordBit");
DLL_LINK(DeviceDPRResetDWordBit        ,DPRRESETDWORDBIT         ,"PmacDPRResetDWordBit");
DLL_LINK(DeviceDPRSetDWordMask         ,DPRSETDWORDMASK          ,"PmacDPRSetDWordMask");
DLL_LINK(DeviceDPRGetDWordMask         ,DPRGETDWORDMASK          ,"PmacDPRGetDWordMask");
DLL_LINK(DeviceDPRFloat                ,DPRFLOAT                 ,"PmacDPRFloat");
DLL_LINK(DeviceDPRLFixed               ,DPRLFIXED                ,"PmacDPRLFixed");
DLL_LINK(DeviceDPRAddressRange         ,DPRADDRESSRANGE          ,"PmacDPRAddressRange");
 
// Real time
DLL_LINK(DeviceInitRTGather            ,INITRTGATHER             ,"PmacInitRTGather");
DLL_LINK(DeviceClearRTGather           ,CLEARRTGATHER            ,"PmacClearRTGather");
DLL_LINK(DeviceAddRTGather             ,ADDRTGATHER              ,"PmacAddRTGather");
DLL_LINK(DeviceCollectRTGatherData     ,COLLECTRTGATHERDATA      ,"PmacCollectRTGatherData");
 
DLL_LINK(DeviceDownloadGantryAutotuningPLC  ,DOWNLOADGANTRYAUTOTUNINGPLC ,"DownloadGantryAutoTuningPLC");
DLL_LINK(DeviceDownloadGantryStepPLC  ,DOWNLOADGANTRYSTEPPLC ,"DoAGantryPositionLoopStep");
DLL_LINK(DeviceDownloadGantryParabolicPLC  ,DOWNLOADGANTRYPARABOLICPLC ,"DoAGantryParabolic");
 
//DLL_LINK(DeviceVMETestOpen             ,VMETESTOPENPMACDEVICE    ,"VMETestOpenPmacDevice");
//DLL_LINK(DeviceVMETestClose            ,VMETESTCLOSEPMACDEVICE   ,"VMETestClosePmacDevice");
//DLL_LINK(DeviceVMESetup            ,VMESETUP   ,"PmacVMESetup");
 
//2013.12.19 added by DTK
DLL_LINK(DeviceDPRGlobalStatus, DPRGLOBALSTATUS, "PmacDPRGlobalStatus");
DLL_LINK(DeviceDPRMotorServoStatusTurbo, DPRMOTORSERVOSTATUSTURBO, "PmacDPRMotorServoStatusTurbo");
DLL_LINK(DeviceDPRMotorStatusTurbo, DPRMOTORSTATUSTURBO, "PmacDPRMotorStatusTurbo");
DLL_LINK(DeviceDPRMotorRealtimeStruct, DPRMOTORREALTIMESTRUCT, "PmacDPRMotorRealtimeStruct");
DLL_LINK(DeviceDPRMotorRealtimeStructTurbo, DPRMOTORREALTIMESTRUCTTURBO, "PmacDPRMotorRealtimeStructTurbo");
 
DLL_LINK(DeviceDPRDataBlock, DPRDATABLOCK, "PmacDPRDataBlock");
DLL_LINK(DeviceDPRPhasedMotor, DPRPHASEDMOTOR, "PmacDPRPhasedMotor");
DLL_LINK(DeviceDPRMotorEnabled, DPRMOTORENABLED, "PmacDPRMotorEnabled");
DLL_LINK(DeviceDPRHandwheelEnabled, DPRHANDWHEELENABLED, "PmacDPRHandwheelEnabled");
DLL_LINK(DeviceDPROpenLoop, DPROPENLOOP, "PmacDPROpenLoop");
DLL_LINK(DeviceDPROnNegativeLimit, DPRONNEGATIVELIMIT, "PmacDPROnNegativeLimit");
DLL_LINK(DeviceDPROnPositiveLimit, DPRONPOSITIVELIMIT, "PmacDPROnPositiveLimit");
//end of 2013.12.19
 
  return hPmacLib;
 
load_err:
    FreeLibrary(hPmacLib);
    hPmacLib = NULL;
    return NULL;
  }
}