Driver.h
上传用户:dtengfei
上传日期:2013-01-16
资源大小:393k
文件大小:81k
源码类别:

医药行业

开发平台:

Visual C++

  1. /***************************************************************************
  2.  Module Name: DRIVER.H
  3.  Purpose: the declaration of functions, data structures, status codes,
  4.           constants, and messages
  5.  Version: 3.01
  6.  Date: 04/16/1998
  7.  Copyright (c) 1996 Advantech Corp. Ltd.
  8.  All rights reserved.
  9. ****************************************************************************/
  10. #ifndef _INC_DRIVER
  11. #define _INC_DRIVER
  12. //#include "OS.H"
  13. #ifdef _WIN31
  14. #define FLOAT   float
  15. #define CHAR    char
  16. #define USHORT  unsigned short
  17. #define SHORT   short
  18. #define ULONG   unsigned long
  19. #endif
  20. #ifdef __cplusplus
  21. extern "C"
  22. {
  23. #endif
  24. #define     PUBLIC   extern
  25. #define     PRIVATE  static
  26. /****************************************************************************
  27.     Constant Definition
  28. ***************************************************************************/
  29. #define     MaxDev               255 // max. # of devices
  30. #define     MaxDevNameLen         64  // max lenght of device name
  31. #define     MaxGroup              6
  32. #define     MaxPort               3
  33. #define     MaxErrMsgLen          80
  34. #define     MAX_DEVICE_NAME_LEN   64
  35. #define     MAX_DRIVER_NAME_LEN   16
  36. #define     MAX_DAUGHTER_NUM      16
  37. #define     MAX_DIO_PORT          48
  38. #define     MAX_AO_RANGE          16
  39. #define     LOCAL                   0
  40. #define     REMOTE                  1
  41. #define     REMOTE1                 REMOTE+1      // For PCL-818L JP7 = 5V
  42. #define     REMOTE2                 REMOTE1+1     // For PCL-818L JP7 = 10V
  43. #define     NONPROG                 LOCAL
  44. #define     PROG                    REMOTE
  45. #define     INTERNAL                0
  46. #define     EXTERNAL                1
  47. #define     SINGLEENDED             0
  48. #define     DIFFERENTIAL            1
  49. #define     BIPOLAR                 0
  50. #define     UNIPOLAR                1
  51. #define     PORTA                   0
  52. #define     PORTB                   1
  53. #define     PORTC                   2
  54. #define     INPORT                  0
  55. #define     OUTPORT                 1
  56. /***************************************************************************
  57.     Define board vendor ID
  58. **************************************************************************/
  59. #define  AAC   0x0000                     //Advantech
  60. #define  MB     0x1000                     //Keithley/MetraByte
  61. #define   BB     0x2000                     //Burr Brown
  62. #define  GRAYHILL 0x3000                     //Grayhill
  63. #define  KGS      0x4000
  64. /****************************************************************************
  65.     Define DAS I/O Board ID.
  66. ****************************************************************************/
  67. #define      NONE           0x00              // not available
  68. //Advantech board ID
  69. #define      BD_DEMO        (AAC | 0x00)     // demo board
  70. #define      BD_PCL711      (AAC | 0x01)     // PCL-711 board
  71. #define      BD_PCL812      (AAC | 0x02)     // PCL-812 board
  72. #define      BD_PCL812PG    (AAC | 0x03)     // PCL-812PG board
  73. #define      BD_PCL718      (AAC | 0x04)     // PCL-718 board
  74. #define      BD_PCL818      (AAC | 0x05)     // PCL-818 board
  75. #define      BD_PCL814      (AAC | 0x06)     // PCL-814 board
  76. #define      BD_PCL720      (AAC | 0x07)     // PCL-722 board
  77. #define      BD_PCL722      (AAC | 0x08)     // PCL-720 board
  78. #define      BD_PCL724      (AAC | 0x09)     // PCL-724 board
  79. #define      BD_AD4011      (AAC | 0x0a)     // ADAM 4011 Module
  80. #define      BD_AD4012      (AAC | 0x0b)     // ADAM 4012 Module
  81. #define      BD_AD4013      (AAC | 0x0c)     // ADAM 4013 Module
  82. #define      BD_AD4021      (AAC | 0x0d)     // ADAM 4021 Module
  83. #define      BD_AD4050      (AAC | 0x0e)     // ADAM 4050 Module
  84. #define      BD_AD4060      (AAC | 0x0f)     // ADAM 4060 Module
  85. #define      BD_PCL711B     (AAC | 0x10)     // PCL-711B
  86. #define      BD_PCL818H     (AAC | 0x11)     // PCL-818H
  87. #define      BD_PCL814B     (AAC | 0x12)     // PCL-814B
  88. #define      BD_PCL816      (AAC | 0x13)     // PCL-816
  89. #define      BD_814_DIO_1   (AAC | 0x14)     // PCL-816/814B 8255 DIO module
  90. #define      BD_814_DA_1    (AAC | 0x15)     // PCL-816/814B 12 bit D/A module
  91. #define      BD_816_DA_1    (AAC | 0x16)     // PCL-816/814B 16 bit D/A module
  92. #define      BD_PCL830      (AAC | 0x17)     // PCL-830 9513A Counter Card
  93. #define      BD_PCL726      (AAC | 0x18)     // PCL-726 D/A card
  94. #define      BD_PCL727      (AAC | 0x19)     // PCL-727 D/A card
  95. #define      BD_PCL728      (AAC | 0x1a)     // PCL-728 D/A card
  96. #define      BD_AD4052      (AAC | 0x1b)     // ADAM 4052 Module
  97. #define      BD_AD4014D     (AAC | 0x1c)     // ADAM 4014D Module
  98. #define      BD_AD4017      (AAC | 0x1d)     // ADAM 4017 Module
  99. #define      BD_AD4080D     (AAC | 0x1e)     // ADAM 4080D Module
  100. #define      BD_PCL721      (AAC | 0x1f)     // PCL-721 32-bit Digital in
  101. #define      BD_PCL723      (AAC | 0x20)     // PCL-723 24-bit Digital in
  102. #define      BD_PCL818L     (AAC | 0x21)     // PCL-818L
  103. #define      BD_PCL818HG    (AAC | 0x22)     // PCL-818HG
  104. #define      BD_PCL1800     (AAC | 0x23)     // PCL-1800
  105. #define      BD_PAD71A      (AAC | 0x24)     // PCIA-71A
  106. #define      BD_PAD71B      (AAC | 0x25)     // PCIA-71B
  107. #define      BD_PCR420      (AAC | 0x26)     // PCR-420
  108. #define      BD_PCL731      (AAC | 0x27)     // PCL-731 48-bit Digital I/O card
  109. #define      BD_PCL730      (AAC | 0x28)     // PCL-730 board
  110. #define      BD_PCL813      (AAC | 0x29)     // PCL-813 32-channel A/D card
  111. #define      BD_PCL813B     (AAC | 0x2a)     // PCL-813B 32-channel A/D card
  112. #define      BD_PCL818HD    (AAC | 0x2b)     // PCL-818HD
  113. #define      BD_PCL725      (AAC | 0x2c)     // PCL-725 digital I/O card
  114. #define      BD_PCL732      (AAC | 0x2d)     // PCL-732 high speed DIO card
  115. #define      BD_AD4018      (AAC | 0x2e)     // ADAM 4018 Module
  116. #define      BD_814_TC_1    (AAC | 0x2f)     // PCL-816/814B 16 bit TC module
  117. #define      BD_PAD71C      (AAC | 0x30)     // PCIA-71C
  118. #define      BD_AD4024      (AAC | 0x31)     // ADAM 4024
  119. #define      BD_AD5017      (AAC | 0x32)     // ADAM 5017
  120. #define      BD_AD5018      (AAC | 0x33)     // ADAM 5018
  121. #define      BD_AD5024      (AAC | 0x34)     // ADAM 5024
  122. #define      BD_AD5051      (AAC | 0x35)     // ADAM 5051
  123. #define      BD_AD5060      (AAC | 0x36)     // ADAM 5060
  124. #define      BD_PCM3718     (AAC | 0x37)     // PCM-3718
  125. #define      BD_PCM3724     (AAC | 0x38)     // PCM-3724
  126. #define      BD_MIC2718     (AAC | 0x39)     // MIC-2718
  127. #define      BD_MIC2728     (AAC | 0x3a)     // MIC-2728
  128. #define      BD_MIC2730     (AAC | 0x3b)     // MIC-2730
  129. #define      BD_MIC2732     (AAC | 0x3c)     // MIC-2732
  130. #define      BD_MIC2750     (AAC | 0x3d)     // MIC-2750
  131. #define      BD_MIC2752     (AAC | 0x3e)     // MIC-2752
  132. #define      BD_PCL733      (AAC | 0x3f)     // PCL-733
  133. #define      BD_PCL734      (AAC | 0x40)     // PCL-734
  134. #define      BD_PCL735      (AAC | 0x41)     // PCL-735
  135. #define      BD_AD4018M     (AAC | 0x42)     // ADAM 4018M Module
  136. #define      BD_AD4080      (AAC | 0x43)     // ADAM 4080 Module
  137. #define      BD_PCL833      (AAC | 0x44)     // PCL-833
  138. #define      BD_PCA6157     (AAC | 0x45)     // PCA-6157
  139. #define      BD_PCA6149     (AAC | 0x46)     // PCA-6149
  140. #define      BD_PCA6147     (AAC | 0x47)     // PCA-6147
  141. #define      BD_PCA6137     (AAC | 0x48)     // PCA-6137
  142. #define      BD_PCA6145     (AAC | 0x49)     // PCA-6145
  143. #define      BD_PCA6144     (AAC | 0x4a)     // PCA-6144
  144. #define      BD_PCA6143     (AAC | 0x4b)     // PCA-6143
  145. #define      BD_PCA6134     (AAC | 0x4c)     // PCA-6134
  146. #define      BD_AD5056      (AAC | 0x4d)     // ADAM 5056 for Device Net
  147. #define      BD_DN5017      (AAC | 0x4e)     // ADAM 5017 for Device Net
  148. #define      BD_DN5018      (AAC | 0x4f)     // ADAM 5018 for Device Net
  149. #define      BD_DN5024      (AAC | 0x50)     // ADAM 5024 for Device Net
  150. #define      BD_DN5051      (AAC | 0x51)     // ADAM 5051 for Device Net
  151. #define      BD_DN5056      (AAC | 0x52)     // ADAM 5056 for Device Net
  152. #define      BD_DN5060      (AAC | 0x53)     // ADAM 5060 for Device Net
  153. #define      BD_PCL836      (AAC | 0x54)     // PCL-836
  154. #define      BD_PCL841      (AAC | 0x55)     // PCL-841
  155. #define      BD_DN5050      (AAC | 0x56)     // ADAM 5050 for DeviceNet
  156. #define      BD_DN5052      (AAC | 0x57)     // ADAM 5052 for DeviceNet
  157. #define      BD_AD5050      (AAC | 0x58)     // ADAM 5050 for RS-485
  158. #define      BD_AD5052      (AAC | 0x59)     // ADAM 5052 for RS-485
  159. #define      BD_PCM3730     (AAC | 0x5a)     // PCM-3730
  160. #define      BD_AD4011D     (AAC | 0x5b)     // ADAM 4011D
  161. #define      BD_AD4016      (AAC | 0x5c)     // ADAM 4016
  162. #define      BD_AD4053      (AAC | 0x5d)     // ADAM 4053
  163. #define      BD_PCI1750     (AAC | 0x5e)     // PCI-1750
  164. #define      BD_PCI1751     (AAC | 0x5f)     // PCI-1751
  165. #define      BD_PCI1710     (AAC | 0x60)     // PCI-1710
  166. #define      BD_PCI1712     (AAC | 0x61)     // PCI-1712
  167. #define      BD_AD5068      (AAC | 0x62)     // ADAM 5068
  168. #define      BD_AD5013      (AAC | 0x63)     // ADAM 5013
  169. #define      BD_AD5017H     (AAC | 0x64)     // ADAM 5017H
  170. #define      BD_AD5080      (AAC | 0x65)     // ADAM 5080 
  171. #define      BD_MIC2760     (AAC | 0x66)     // MIC-2760
  172. #define      BD_PCI1710HG   (AAC | 0x67)     // PCI-1710HG
  173. #define      BD_PCI1713 (AAC | 0x68)     // PCI-1713
  174. #define      BD_PCI1753 (AAC | 0x69)     // PCI-1753
  175. #define      BD_PCI1760 (AAC | 0x6a)     // PCI-1760
  176. #define      BD_PCI1720 (AAC | 0x6b)     // PCI-1720
  177. #define      BD_PCL752 (AAC | 0x6c)     // PCL-772
  178. #define      BD_PCM3718H (AAC | 0x6d)     // PCM-3718H
  179. #define      BD_PCM3718HG (AAC | 0x6e)     // PCM-3718HG
  180. #define      BD_DN5068      (AAC | 0x6f)     // ADAM 5068 for Device Net
  181. #define      BD_DN5013      (AAC | 0x70)     // ADAM 5013 for Device Net
  182. #define      BD_DN5017H     (AAC | 0x71)     // ADAM 5017H for Device Net
  183. #define      BD_DN5080      (AAC | 0x72)     // ADAM 5080 for Device Net (unavailable)
  184. #define      BD_PCI1711     (AAC | 0x73)     // PCI-1711
  185. #define      BD_PCI1716     (AAC | 0x74)     // PCI-1716
  186. #define      BD_PCI1731     (AAC | 0x75)     // PCI-1731
  187. #define      BD_AD5051D     (AAC | 0x76)     // ADAM 5051D 
  188. #define      BD_AD5056D     (AAC | 0x77)     // ADAM 5056D 
  189. #define      BD_DN5051D     (AAC | 0x78)     // ADAM 5051D for Device Net
  190. #define      BD_DN5056D     (AAC | 0x79)     // ADAM 5056D for Device Net
  191. #define      BD_SIMULATE    (AAC | 0x7a)     // Simulate IO
  192. #define      BD_PCI1754     (AAC | 0x7b)     // PCI-1754
  193. #define      BD_PCI1752     (AAC | 0x7c)     // PCI-1752
  194. #define      BD_PCI1756     (AAC | 0x7d)     // PCI-1756
  195. #define      BD_PCL839     (AAC | 0x7e)     // PCL-839
  196. #define      BD_PCM3725     (AAC | 0x7f)     // PCM-3725
  197. #define      BD_MICRODAC    (GRAYHILL | 0x1) // Grayhill MicroDAC Board ID
  198. #define      BD_GIA10 (KGS | 0x01)     // KGS GIA-10 module Board ID
  199. /*****************************************************************************
  200.     Define Expansion Board ID.
  201. *****************************************************************************/
  202. #define AAC_EXP            (AAC | 0x00000100)   //Advantech expansion bits
  203. //define Advantech expansion board ID.
  204. #define      BD_PCLD780     0x00000000          // PCLD-780
  205. #define      BD_PCLD789     (AAC_EXP | 0x0)     // PCLD-789
  206. #define      BD_PCLD779     (AAC_EXP | 0x1)     // PCLD-779
  207. #define      BD_PCLD787     (AAC_EXP | 0x2)     // PCLD-787
  208. #define      BD_PCLD8115    (AAC_EXP | 0x3)     // PCLD-8115
  209. #define      BD_PCLD770     (AAC_EXP | 0x4)     // PCLD-770
  210. #define      BD_PCLD788     (AAC_EXP | 0x5)     // PCLD-788
  211. #define      BD_PCLD8710    (AAC_EXP | 0x6)     // PCLD-8710
  212. /****************************************************************************
  213.     Define subsection identifier
  214. ****************************************************************************/
  215. #define     DAS_AISECTION       0x1         // A/D subsection
  216. #define     DAS_AOSECTION       0x2         // D/A sbusection
  217. #define     DAS_DISECTION       0x3         // Digital input subsection
  218. #define     DAS_DOSECTION       0x4         // Digital output sbusection
  219. #define     DAS_TEMPSECTION     0x5         // thermocouple section
  220. #define     DAS_ECSECTION       0x6         // Event count subsection
  221. #define     DAS_FMSECTION       0x7         // frequency measurement section
  222. #define     DAS_POSECTION       0x8         // pulse output section
  223. #define     DAS_ALSECTION       0x9         // alarm section
  224. #define     MT_AISECTION        0x0a        // monitoring A/D subsection
  225. #define     MT_DISECTION        0x0b        // monitoring D/I subsection
  226. /***************************************************************************
  227.     Define Transfer Mode
  228. ****************************************************************************/
  229. #define     POLLED_MODE          0x0         // software transfer
  230. #define     DMA_MODE             0x1         // DMA transfer
  231. #define     INTERRUPT_MODE       0x2         // Interrupt transfer
  232. /***************************************************************************
  233.     Define Acquisition Mode
  234. ****************************************************************************/
  235. #define     FREE_RUN             0
  236. #define     PRE_TRIG             1
  237. #define     POST_TRIG            2
  238. #define     POSITION_TRIG        3
  239. /***************************************************************************
  240.     Define Comparator's Condition
  241. ****************************************************************************/
  242. #define     NOCONDITION          0
  243. #define     LESS                 1
  244. #define     BETWEEN              2
  245. #define     GREATER              3
  246. #define     OUTSIDE              4
  247. /**************************************************************************
  248.     Define Status Code
  249. ***************************************************************************/
  250. #define SUCCESS                  0
  251. #define DrvErrorCode             1
  252. #define KeErrorCode              100
  253. #define DnetErrorCode            200
  254. #define OPCErrorCode  1000
  255. #define MemoryAllocateFailed     (DrvErrorCode + 0)
  256. #define ConfigDataLost           (DrvErrorCode + 1)
  257. #define InvalidDeviceHandle      (DrvErrorCode + 2)
  258. #define AIConversionFailed       (DrvErrorCode + 3)
  259. #define AIScaleFailed            (DrvErrorCode + 4)
  260. #define SectionNotSupported      (DrvErrorCode + 5)
  261. #define InvalidChannel           (DrvErrorCode + 6)
  262. #define InvalidGain              (DrvErrorCode + 7)
  263. #define DataNotReady             (DrvErrorCode + 8)
  264. #define InvalidInputParam        (DrvErrorCode + 9)
  265. #define NoExpansionBoardConfig   (DrvErrorCode + 10)
  266. #define InvalidAnalogOutValue    (DrvErrorCode + 11)
  267. #define ConfigIoPortFailed       (DrvErrorCode + 12)
  268. #define CommOpenFailed           (DrvErrorCode + 13)
  269. #define CommTransmitFailed       (DrvErrorCode + 14)
  270. #define CommReadFailed           (DrvErrorCode + 15)
  271. #define CommReceiveFailed        (DrvErrorCode + 16)
  272. #define CommConfigFailed         (DrvErrorCode + 17)
  273. #define CommChecksumError        (DrvErrorCode + 18)
  274. #define InitError                (DrvErrorCode + 19)
  275. #define DMABufAllocFailed        (DrvErrorCode + 20)
  276. #define IllegalSpeed             (DrvErrorCode + 21)
  277. #define ChanConflict             (DrvErrorCode + 22)
  278. #define BoardIDNotSupported      (DrvErrorCode + 23)
  279. #define FreqMeasurementFailed    (DrvErrorCode + 24)
  280. #define CreateFileFailed         (DrvErrorCode + 25)
  281. #define FunctionNotSupported     (DrvErrorCode + 26)
  282. #define LoadLibraryFailed        (DrvErrorCode + 27)
  283. #define GetProcAddressFailed     (DrvErrorCode + 28)
  284. #define InvalidDriverHandle      (DrvErrorCode + 29)
  285. #define InvalidModuleType        (DrvErrorCode + 30)
  286. #define InvalidInputRange        (DrvErrorCode + 31)
  287. #define InvalidWindowsHandle     (DrvErrorCode + 32)
  288. #define InvalidCountNumber       (DrvErrorCode + 33)
  289. #define InvalidInterruptCount    (DrvErrorCode + 34)
  290. #define InvalidEventCount        (DrvErrorCode + 35)
  291. #define OpenEventFailed          (DrvErrorCode + 36)
  292. #define InterruptProcessFailed   (DrvErrorCode + 37)
  293. #define InvalidDOSetting         (DrvErrorCode + 38)
  294. #define InvalidEventType         (DrvErrorCode + 39)
  295. #define EventTimeOut             (DrvErrorCode + 40)
  296. #define InvalidDmaChannel        (DrvErrorCode + 41)
  297. #define IntDamChannelBusy        (DrvErrorCode + 42)
  298. //
  299. #define CheckRunTimeClassFailed  (DrvErrorCode + 43)
  300. #define CreateDllLibFailed  (DrvErrorCode + 44)
  301. #define ExceptionError  (DrvErrorCode + 45)
  302. #define RemoveDeviceFailed  (DrvErrorCode + 46)
  303. #define BuildDeviceListFailed  (DrvErrorCode + 47)
  304. #define NoIOFunctionSupport  (DrvErrorCode + 48)
  305. //
  306. #define KeInvalidHandleValue     (KeErrorCode + 0)
  307. #define KeFileNotFound           (KeErrorCode + 1)
  308. #define KeInvalidHandle          (KeErrorCode + 2)
  309. #define KeTooManyCmds            (KeErrorCode + 3)
  310. #define KeInvalidParameter       (KeErrorCode + 4)
  311. #define KeNoAccess               (KeErrorCode + 5)
  312. #define KeUnsuccessful           (KeErrorCode + 6)
  313. #define KeConInterruptFailure    (KeErrorCode + 7)
  314. #define KeCreateNoteFailure      (KeErrorCode + 8)
  315. #define KeInsufficientResources  (KeErrorCode + 9)
  316. #define KeHalGetAdapterFailure   (KeErrorCode +10)
  317. #define KeOpenEventFailure       (KeErrorCode +11)
  318. #define KeAllocCommBufFailure    (KeErrorCode +12)
  319. #define KeAllocMdlFailure        (KeErrorCode +13)
  320. #define KeBufferSizeTooSmall     (KeErrorCode +14)
  321. #define DNInitFailed              (DnetErrorCode + 1)
  322. #define DNSendMsgFailed           (DnetErrorCode + 2)
  323. #define DNRunOutOfMsgID           (DnetErrorCode + 3)
  324. #define DNInvalidInputParam       (DnetErrorCode + 4)
  325. #define DNErrorResponse           (DnetErrorCode + 5)
  326. #define DNNoResponse              (DnetErrorCode + 6)
  327. #define DNBusyOnNetwork           (DnetErrorCode + 7)
  328. #define DNUnknownResponse         (DnetErrorCode + 8)
  329. #define DNNotEnoughBuffer         (DnetErrorCode + 9)
  330. #define DNFragResponseError       (DnetErrorCode + 10)
  331. #define DNTooMuchDataAck          (DnetErrorCode + 11)
  332. #define DNFragRequestError        (DnetErrorCode + 12)
  333. #define DNEnableEventError        (DnetErrorCode + 13)
  334. #define DNCreateOrOpenEventError  (DnetErrorCode + 14)
  335. #define DNIORequestError          (DnetErrorCode + 15)
  336. #define DNGetEventNameError       (DnetErrorCode + 16)
  337. #define DNTimeOutError            (DnetErrorCode + 17)
  338. #define DNOpenFailed              (DnetErrorCode + 18)
  339. #define DNCloseFailed             (DnetErrorCode + 19)
  340. #define DNResetFailed             (DnetErrorCode + 20)
  341. #define WM_ATODNOTIFY            (WM_USER+200)
  342. #define WM_DTOANOTIFY            (WM_USER+201)
  343. #define WM_DIGINNOTIFY           (WM_USER+202)
  344. #define WM_DIGOUTNOTIFY          (WM_USER+203)
  345. #define WM_MTNOTIFY              (WM_USER+204)
  346. #define WM_CANTRANSMITCOMPLETE   (WM_USER+205)
  347. #define WM_CANMESSAGE            (WM_USER+206)
  348. #define WM_CANERROR              (WM_USER+207)
  349. // define the wParam in user window message
  350. #define AD_NONE                  0  //AD Section
  351. #define AD_TERMINATE             1
  352. #define AD_INT                   2
  353. #define AD_BUFFERCHANGE          3
  354. #define AD_OVERRUN               4
  355. #define AD_WATCHDOGACT           5
  356. #define AD_TIMEOUT               6
  357. #define DA_TERMINATE             0  // DA Section
  358. #define DA_DMATC                 1
  359. #define DA_INT                   2
  360. #define DA_BUFFERCHANGE          3
  361. #define DA_OVERRUN               4
  362. #define DI_TERMINATE             0  // DI Section
  363. #define DI_DMATC                 1
  364. #define DI_INT                   2
  365. #define DI_BUFFERCHANGE          3
  366. #define DI_OVERRUN               4
  367. #define DI_WATCHDOGACT           5
  368. #define DO_TERMINATE             0  // DO Section
  369. #define DO_DMATC                 1
  370. #define DO_INT                   2
  371. #define DO_BUFFERCHANGE          3
  372. #define DO_OVERRUN               4
  373. #define MT_ATOD                  0  // MT Section
  374. #define MT_DIGIN                 1
  375. #define CAN_TRANSFER             0  // CAN Section
  376. #define CAN_RECEIVE              1
  377. #define CAN_ERROR                2
  378. /****************************************************************************
  379.     define thermocopule type J, K, S, T, B, R, E
  380. *****************************************************************************/
  381. #define BTC  4
  382. #define ETC  6
  383. #define JTC  0
  384. #define KTC  1
  385. #define RTC  5
  386. #define STC  2
  387. #define TTC  3
  388. /****************************************************************************
  389.     define  temperature scale
  390. *****************************************************************************/
  391. #define     C  0       //Celsius
  392. #define     F  1       //Fahrenheit
  393. #define     R  2       // Rankine
  394. #define     K  3       // Kelvin
  395. /****************************************************************************
  396.     define service type for COMEscape()
  397. *****************************************************************************/
  398. #define     EscapeFlushInput        1
  399. #define     EscapeFlushOutput       2
  400. #define     EscapeSetBreak          3
  401. #define     EscapeClearBreak        4
  402. /****************************************************************************
  403.     define  gate mode
  404. *****************************************************************************/
  405. #define     GATE_DISABLED       0       // no gating
  406. #define     GATE_HIGHLEVEL      1       // active high level
  407. #define     GATE_LOWLEVEL       2       // active low level
  408. #define     GATE_HIGHEDGE       3       // active high edge
  409. #define     GATE_LOWEDGE        4       // active low edge
  410. /****************************************************************************
  411.     define input mode for PCL-833
  412. *****************************************************************************/
  413. #define     DISABLE             0       // disable mode
  414. #define     ABPHASEX1           1       // Quadrature input X1
  415. #define     ABPHASEX2           2       // Quadrature input X2
  416. #define     ABPHASEX4           3       // Quadrature input X4
  417. #define     TWOPULSEIN          4       // 2 pulse input
  418. #define     ONEPULSEIN          5       // 1 pulse input
  419. /****************************************************************************
  420.     define latch source for PCL-833
  421. *****************************************************************************/
  422. #define     SWLATCH             0       // S/W read latch data
  423. #define     INDEXINLATCH        1       // Index-in latch data
  424. #define     DI0LATCH            2       // DI0 latch data
  425. #define     DI1LATCH            3       // DI1 latch data
  426. #define     TIMERLATCH          4       // Timer latch data
  427. /****************************************************************************
  428.     define timer base mode for PCL-833
  429. *****************************************************************************/
  430. #define     TPOINT1MS     0       //    0.1 ms timer base
  431. #define     T1MS          1       //    1   ms timer base
  432. #define     T10MS         2       //   10   ms timer base
  433. #define     T100MS        3       //  100   ms timer base
  434. #define     T1000MS       4       // 1000   ms timer base
  435. /****************************************************************************
  436.     define clock source for PCL-833
  437. *****************************************************************************/
  438. #define     SYS8MHZ          0       // 8 MHZ system clock
  439. #define     SYS4MHZ          1       // 4 MHZ system clock
  440. #define     SYS2MHZ          2       // 2 MHZ system clock
  441. /****************************************************************************
  442.     define cascade mode for PCL-833
  443. *****************************************************************************/
  444. #define     NOCASCADE           0       // 24-bit(no cascade)
  445. #define     CASCADE             1       // 48-bit(CH1, CH2 cascade)
  446. /****************************************************************************
  447.     define event type for interrupt and DMA transfer
  448. *****************************************************************************/
  449. #define     ADS_EVT_INTERRUPT           0x1     // interrupt
  450. #define     ADS_EVT_BUFCHANGE           0x2     // buffer change
  451. #define     ADS_EVT_TERMINATED          0x4     // termination
  452. #define     ADS_EVT_OVERRUN             0x8     // overrun
  453. #define     ADS_EVT_WATCHDOG            0x10    // watchdog actived
  454. #define     ADS_EVT_CHGSTATE            0x20    // change state event
  455. #define     ADS_EVT_ALARM               0x40    // alarm event
  456. #define     ADS_EVT_PORT0               0x80    // port 0 event
  457. #define     ADS_EVT_PORT1               0x100   // port 1 event
  458. #define     ADS_EVT_PATTERNMATCH        0x200   // Pattern Match for DI
  459. #define     ADS_EVT_COUNTER             0x201   // Persudo event for COUNTERMATCH and COUNTEROVERFLOW
  460. #define     ADS_EVT_COUNTERMATCH        0x202   // Counter Match setting NO. for DI
  461. #define     ADS_EVT_COUNTEROVERFLOW     0x203   // Counter Overflow for DI
  462. #define     ADS_EVT_STATUSCHANGE        0x204   // Status Change for DI
  463. #define     ADS_EVT_FILTER              0x205   // Filter Event
  464. /****************************************************************************
  465.     define event name by device number
  466. *****************************************************************************/
  467. #define     ADS_EVT_INTERRUPT_NAME               "ADS_EVT_INTERRUPT"
  468. #define     ADS_EVT_PORT0_NAME                   "ADS_EVT_PORT0"
  469. #define     ADS_EVT_PORT1_NAME                   "ADS_EVT_PORT1"
  470. #define     ADS_EVT_BUFCHANGE_NAME               "ADS_EVT_BUFCHANGE"
  471. #define     ADS_EVT_TERMINATED_NAME              "ADS_EVT_TERMINATED"
  472. #define     ADS_EVT_OVERRUN_NAME                 "ADS_EVT_OVERRUN"
  473. #define     ADS_EVT_WATCHDOG_NAME                "ADS_EVT_WATCHDOG"
  474. #define     ADS_EVT_CHGSTATE_NAME                "ADS_EVT_CHGSTATE"
  475. #define     ADS_EVT_ALARM_NAME                   "ADS_EVT_ALARM"
  476. #define     ADS_EVT_PATTERNMATCH_NAME            "ADS_EVT_PATTERNMATCH"   
  477. #define     ADS_EVT_COUNTERMATCH_NAME            "ADS_EVT_COUNTERMATCH"
  478. #define     ADS_EVT_COUNTEROVERFLOW_NAME         "ADS_EVT_COUNTEROVERFLOW"
  479. #define     ADS_EVT_STATUSCHANGE_NAME            "ADS_EVT_STATUSCHANGE"
  480. /****************************************************************************
  481.     define FIFO size
  482. *****************************************************************************/
  483. #define     FIFO_SIZE           512     // 1K FIFO size (512* 2byte/each data)
  484. #define     FIFO_SIZE4          2048    // 4K FIFO size (2048* 2byte/each data)
  485. /****************************************************************************
  486.     Function ID Definition
  487. *****************************************************************************/
  488. #define FID_DeviceOpen                  0
  489. #define FID_DeviceClose                 1
  490. #define FID_DeviceGetFeatures           2
  491. #define FID_AIConfig                    3
  492. #define FID_AIGetConfig                 4
  493. #define FID_AIBinaryIn                  5
  494. #define FID_AIScale                     6
  495. #define FID_AIVoltageIn                 7
  496. #define FID_AIVoltageInExp              8
  497. #define FID_MAIConfig                   9
  498. #define FID_MAIBinaryIn                10
  499. #define FID_MAIVoltageIn               11
  500. #define FID_MAIVoltageInExp            12
  501. #define FID_TCMuxRead                  13
  502. #define FID_AOConfig                   14
  503. #define FID_AOBinaryOut                15
  504. #define FID_AOVoltageOut               16
  505. #define FID_AOScale                    17
  506. #define FID_DioSetPortMode             18
  507. #define FID_DioGetConfig               19
  508. #define FID_DioReadPortByte            20
  509. #define FID_DioWritePortByte           21
  510. #define FID_DioReadBit                 22
  511. #define FID_DioWriteBit                23
  512. #define FID_DioGetCurrentDOByte        24
  513. #define FID_DioGetCurrentDOBit         25
  514. #define FID_WritePortByte              26
  515. #define FID_WritePortWord              27
  516. #define FID_ReadPortByte               28
  517. #define FID_ReadPortWord               29
  518. #define FID_CounterEventStart          30
  519. #define FID_CounterEventRead           31
  520. #define FID_CounterFreqStart           32
  521. #define FID_CounterFreqRead            33
  522. #define FID_CounterPulseStart          34
  523. #define FID_CounterReset               35
  524. #define FID_QCounterConfig             36
  525. #define FID_QCounterConfigSys          37
  526. #define FID_QCounterStart              38
  527. #define FID_QCounterRead               39
  528. #define FID_AlarmConfig                40
  529. #define FID_AlarmEnable                41
  530. #define FID_AlarmCheck                 42
  531. #define FID_AlarmReset                 43
  532. #define FID_COMOpen                    44
  533. #define FID_COMConfig                  45
  534. #define FID_COMClose                   46
  535. #define FID_COMRead                    47
  536. #define FID_COMWrite232                48
  537. #define FID_COMWrite485                49
  538. #define FID_COMWrite85                 50
  539. #define FID_COMInit                    51
  540. #define FID_COMLock                    52
  541. #define FID_COMUnlock                  53
  542. #define FID_WDTEnable                  54
  543. #define FID_WDTRefresh                 55
  544. #define FID_WDTReset                   56
  545. #define FID_FAIIntStart                57
  546. #define FID_FAIIntScanStart            58
  547. #define FID_FAIDmaStart                59
  548. #define FID_FAIDmaScanStart            60
  549. #define FID_FAIDualDmaStart            61
  550. #define FID_FAIDualDmaScanStart        62
  551. #define FID_FAICheck                   63
  552. #define FID_FAITransfer                64
  553. #define FID_FAIStop                    65
  554. #define FID_FAIWatchdogConfig          66
  555. #define FID_FAIIntWatchdogStart        67
  556. #define FID_FAIDmaWatchdogStart        68
  557. #define FID_FAIWatchdogCheck           69
  558. #define FID_FAOIntStart                70
  559. #define FID_FAODmaStart                71
  560. #define FID_FAOScale                   72
  561. #define FID_FAOLoad                    73
  562. #define FID_FAOCheck                   74
  563. #define FID_FAOStop                    75
  564. #define FID_ClearOverrun               76
  565. #define FID_EnableEvent                77
  566. #define FID_CheckEvent                 78
  567. #define FID_AllocateDMABuffer          79
  568. #define FID_FreeDMABuffer              80
  569. #define FID_EnableCANEvent             81
  570. #define FID_GetCANEventData            82
  571. #define FID_TimerCountSetting    83
  572. #define FID_CounterPWMSetting     84
  573. #define FID_CounterPWMEnable           85
  574. #define FID_DioTimerSetting     86
  575. #define FID_EnableEventEx        87
  576. #define FID_DICounterReset        88
  577. #define FID_FDITransfer                89
  578. #define FID_EnableSyncAO               90
  579. #define FID_WriteSyncAO                91
  580. #define FID_AOCurrentOut               92
  581. #define FID_ADAMCounterSetHWConfig    93
  582. #define FID_ADAMCounterGetHWConfig    94
  583. #define FID_ADAMAISetHWConfig    95
  584. #define FID_ADAMAIGetHWConfig    96
  585. #define FID_ADAMAOSetHWConfig    97
  586. #define FID_ADAMAOGetHWConfig    98
  587. #define FID_GetFIFOSize            99
  588. #define FID_PWMStartRead            100
  589. #define FID_FAIDmaExStart                  101
  590. /*************************************************************************
  591.     define gain listing
  592. *************************************************************************/
  593. typedef  struct tagGAINLIST
  594. {
  595.   USHORT   usGainCde;
  596. FLOAT    fMaxGainVal;
  597. FLOAT    fMinGainVal;
  598. CHAR     szGainStr[16];
  599. } GAINLIST;
  600. /*************************************************************************
  601.     Define hardware board(device) features.
  602.     Note: definition for dwPermutaion member
  603.            Bit 0: Software AI
  604.            Bit 1: DMA AI
  605.            Bit 2: Interrupt AI
  606.            Bit 3: Condition AI
  607.            Bit 4: Software AO
  608.            Bit 5: DMA AO
  609.            Bit 6: Interrupt AO
  610.            Bit 7: Condition AO
  611.            Bit 8: Software DI
  612.            Bit 9: DMA DI
  613.            Bit 10: Interrupt DI
  614.            Bit 11: Condition DI
  615.            Bit 12: Software DO
  616.            Bit 13: DMA DO
  617.            Bit 14: Interrupt DO
  618.            Bit 15: Condition DO
  619.            Bit 16: High Gain
  620.            Bit 17: Auto Channel Scan
  621.            Bit 18: Pacer Trigger
  622.            Bit 19: External Trigger
  623.            Bit 20: Down Counter
  624.            Bit 21: Dual DMA
  625.            Bit 22: Monitoring
  626.            Bit 23: QCounter
  627. ************************************************************************/
  628. typedef struct tagDEVFEATURES
  629. {
  630.     CHAR     szDriverVer[8];    // device driver version
  631.     CHAR     szDriverName[MAX_DRIVER_NAME_LEN];  // device driver name
  632.     DWORD    dwBoardID;         // board ID
  633.     USHORT   usMaxAIDiffChl;    // Max. number of differential channel
  634.     USHORT   usMaxAISiglChl;    // Max. number of single-end channel
  635.     USHORT   usMaxAOChl;        // Max. number of D/A channel
  636.     USHORT   usMaxDOChl;        // Max. number of digital out channel
  637.     USHORT   usMaxDIChl;        // Max. number of digital input channel
  638.     USHORT   usDIOPort;         // specifies if programmable or not
  639.     USHORT   usMaxTimerChl;     // Max. number of Counter/Timer channel
  640.     USHORT   usMaxAlarmChl;     // Max number of  alram channel
  641.     USHORT   usNumADBit;        // number of bits for A/D converter
  642.     USHORT   usNumADByte;       // A/D channel width in bytes.
  643.     USHORT   usNumDABit;        // number of bits for D/A converter.
  644.     USHORT   usNumDAByte;       // D/A channel width in bytes.
  645.     USHORT   usNumGain ;        // Max. number of gain code
  646.     GAINLIST glGainList[16];    // Gain listing
  647.     DWORD    dwPermutation[4];  // Permutation
  648. } DEVFEATURES, FAR * LPDEVFEATURES;
  649. /*************************************************************************
  650.     AOSET Definition
  651. *************************************************************************/
  652. typedef  struct tagAOSET
  653. {
  654.     USHORT  usAOSource;     // 0-internal, 1-external
  655.     FLOAT   fAOMaxVol;      // maximum output voltage
  656.     FLOAT   fAOMinVol;      // minimum output voltage
  657. } AOSET, FAR * LPAOSET;
  658. /*************************************************************************
  659.     DaughterSet Definition
  660. *************************************************************************/
  661. typedef  struct tagDAUGHTERSET
  662. {
  663.     DWORD   dwBoardID;              // expansion board ID
  664.     USHORT  usNum;                  // available expansion channels
  665.     FLOAT   fGain;                  // gain for expansion channel
  666.     USHORT  usCards;                // number of expansion cards
  667. } DAUGHTERSET, FAR * LPDAUGHTERSET;
  668. /**************************************************************************
  669.     Analog Input Configuration Definition
  670. ***************************************************************************/
  671. typedef struct tagDEVCONFIG_AI
  672. {
  673.     DWORD   dwBoardID;         // board ID code
  674.     USHORT  usChanConfig;      // 0-single ended, 1-differential
  675.     USHORT  usGainCtrMode;     // 1-by jumper, 0-programmable
  676.     USHORT  usPolarity;        // 0-bipolar, 1-unipolar
  677.     USHORT  usDasGain;         // not used if GainCtrMode = 1
  678.     USHORT  usNumExpChan;      // DAS channels attached expansion board
  679.     USHORT  usCjcChannel;      // cold junction channel
  680.     DAUGHTERSET Daughter[MAX_DAUGHTER_NUM];   // expansion board settings
  681. } DEVCONFIG_AI, FAR * LPDEVCONFIG_AI;
  682. /**************************************************************************
  683.     DEVCONFIG_COM Definition
  684. ***************************************************************************/
  685. typedef struct tagDEVCONFIG_COM
  686. {
  687.     USHORT  usCommPort;                     // serial port
  688.     DWORD   dwBaudRate;                     // baud rate
  689.     USHORT  usParity;                       // parity check
  690.     USHORT  usDataBits;                     // data bits
  691.     USHORT  usStopBits;                     // stop bits
  692.     USHORT  usTxMode;                       // transmission mode
  693.     USHORT  usPortAddress;                  // communication port address
  694. } DEVCONFIG_COM, FAR * LPDEVCONFIG_COM;
  695. /**************************************************************************
  696.     TRIGLEVEL Definition
  697. ***************************************************************************/
  698. typedef struct tagTRIGLEVEL
  699. {
  700. FLOAT fLow;
  701. FLOAT fHigh;
  702. } TRIGLEVEL;
  703. typedef struct tagPT_DEVLIST
  704. {
  705.     DWORD   dwDeviceNum;
  706.     char    szDeviceName[50];
  707.     SHORT   nNumOfSubdevices;
  708. } DEVLIST, FAR *LPDEVLIST;
  709. typedef struct tagPT_DeviceGetFeatures
  710. {
  711.     LPDEVFEATURES  buffer;
  712.     USHORT         size;
  713. } PT_DeviceGetFeatures, FAR * LPT_DeviceGetFeatures;
  714. typedef struct tagPT_AIConfig
  715. {
  716.     USHORT      DasChan;
  717.     USHORT      DasGain;
  718. } PT_AIConfig, FAR * LPT_AIConfig;
  719. typedef struct tagPT_AIGetConfig
  720. {
  721.     LPDEVCONFIG_AI buffer;
  722.     USHORT         size;
  723. } PT_AIGetConfig, FAR * LPT_AIGetConfig;
  724. typedef struct tagPT_AIBinaryIn
  725. {
  726.     USHORT      chan;
  727.     USHORT      TrigMode;
  728.     USHORT far  *reading;
  729. } PT_AIBinaryIn, FAR * LPT_AIBinaryIn;
  730. typedef struct tagPT_AIScale
  731. {
  732.     USHORT      reading;
  733.     FLOAT       MaxVolt;
  734.     USHORT      MaxCount;
  735.     USHORT      offset;
  736.     FLOAT far   *voltage;
  737. } PT_AIScale, FAR * LPT_AIScale;
  738. typedef struct tagPT_AIVoltageIn
  739. {
  740.     USHORT      chan;
  741.     USHORT      gain;
  742.     USHORT      TrigMode;
  743.     FLOAT far   *voltage;
  744. } PT_AIVoltageIn, FAR * LPT_AIVoltageIn;
  745. typedef struct tagPT_AIVoltageInExp
  746. {
  747.     USHORT      DasChan;
  748.     USHORT      DasGain;
  749.     USHORT      ExpChan;
  750.     FLOAT far   *voltage;
  751. } PT_AIVoltageInExp, FAR * LPT_AIVoltageInExp;
  752. typedef struct tagPT_MAIConfig
  753. {
  754.     USHORT      NumChan;
  755.     USHORT      StartChan;
  756.     USHORT far  *GainArray;
  757. } PT_MAIConfig, FAR * LPT_MAIConfig;
  758. typedef struct tagPT_MAIBinaryIn
  759. {
  760.     USHORT      NumChan;
  761.     USHORT      StartChan;
  762.     USHORT      TrigMode;
  763.     USHORT far  *ReadingArray;
  764. } PT_MAIBinaryIn, FAR * LPT_MAIBinaryIn;
  765. typedef struct tagPT_MAIVoltageIn
  766. {
  767.     USHORT      NumChan;
  768.     USHORT      StartChan;
  769.     USHORT far  *GainArray;
  770.     USHORT      TrigMode;
  771.     FLOAT far   *VoltageArray;
  772. } PT_MAIVoltageIn, FAR * LPT_MAIVoltageIn;
  773. typedef struct tagPT_MAIVoltageInExp
  774. {
  775.     USHORT      NumChan;
  776.     USHORT far  *DasChanArray;
  777.     USHORT far  *DasGainArray;
  778.     USHORT far  *ExpChanArray;
  779.     FLOAT far   *VoltageArray;
  780. } PT_MAIVoltageInExp, FAR * LPT_MAIVoltageInExp;
  781. typedef struct tagPT_TCMuxRead
  782. {
  783.     USHORT      DasChan;
  784.     USHORT      DasGain;
  785.     USHORT      ExpChan;
  786.     USHORT      TCType;
  787.     USHORT      TempScale;
  788.     FLOAT far   *temp;
  789. } PT_TCMuxRead, FAR * LPT_TCMuxRead;
  790. typedef struct tagPT_AOConfig
  791. {
  792.     USHORT      chan;
  793.     USHORT      RefSrc;
  794.     FLOAT       MaxValue;
  795.     FLOAT       MinValue;
  796. } PT_AOConfig, FAR * LPT_AOConfig;
  797. typedef struct tagPT_AOBinaryOut
  798. {
  799.     USHORT      chan;
  800.     USHORT      BinData;
  801. } PT_AOBinaryOut, FAR * LPT_AOBinaryOut;
  802. typedef struct tagPT_AOVoltageOut
  803. {
  804.     USHORT      chan;
  805.     FLOAT       OutputValue;
  806. } PT_AOVoltageOut, FAR * LPT_AOVoltageOut;
  807. typedef struct tagPT_AOScale
  808. {
  809.     USHORT      chan;
  810.     FLOAT       OutputValue;
  811.     USHORT far  *BinData;
  812. }PT_AOScale,    FAR * LPT_AOScale;
  813. typedef struct tagPT_DioSetPortMode
  814. {
  815.     USHORT      port;
  816.     USHORT      dir;
  817. } PT_DioSetPortMode, FAR * LPT_DioSetPortMode;
  818. typedef struct tagPT_DioGetConfig
  819. {
  820.     SHORT far      *PortArray;
  821.     USHORT         NumOfPorts;
  822. } PT_DioGetConfig, FAR * LPT_DioGetConfig;
  823. typedef struct tagPT_DioReadPortByte
  824. {
  825.     USHORT      port;
  826.     USHORT far  *value;
  827. } PT_DioReadPortByte, FAR * LPT_DioReadPortByte;
  828. typedef struct tagPT_DioWritePortByte
  829. {
  830.     USHORT      port;
  831.     USHORT      mask;
  832.     USHORT      state;
  833. } PT_DioWritePortByte, FAR * LPT_DioWritePortByte;
  834. typedef struct tagPT_DioReadBit
  835. {
  836.     USHORT      port;
  837.     USHORT      bit;
  838.     USHORT far  *state;
  839. } PT_DioReadBit, FAR * LPT_DioReadBit;
  840. typedef struct tagPT_DioWriteBit
  841. {
  842.     USHORT      port;
  843.     USHORT      bit;
  844.     USHORT      state;
  845. } PT_DioWriteBit, FAR * LPT_DioWriteBit;
  846. typedef struct tagPT_DioGetCurrentDOByte
  847. {
  848.     USHORT      port;
  849.     USHORT far  *value;
  850. } PT_DioGetCurrentDOByte, FAR * LPT_DioGetCurrentDOByte;
  851. typedef struct tagPT_DioGetCurrentDOBit
  852. {
  853.     USHORT      port;
  854.     USHORT      bit;
  855.     USHORT far  *state;
  856. } PT_DioGetCurrentDOBit, FAR * LPT_DioGetCurrentDOBit;
  857. typedef struct tagPT_WritePortByte
  858. {
  859.     USHORT      port;
  860.     USHORT      ByteData;
  861. } PT_WritePortByte, FAR * LPT_WritePortByte;
  862. typedef struct tagPT_WritePortWord
  863. {
  864.     USHORT      port;
  865.     USHORT      WordData;
  866. } PT_WritePortWord, FAR * LPT_WritePortWord;
  867. typedef struct tagPT_ReadPortByte
  868. {
  869.     USHORT      port;
  870.     USHORT far  *ByteData;
  871. } PT_ReadPortByte, FAR * LPT_ReadPortByte;
  872. typedef struct tagPT_ReadPortWord
  873. {
  874.     USHORT      port;
  875.     USHORT far  *WordData;
  876. } PT_ReadPortWord, FAR * LPT_ReadPortWord;
  877. typedef struct tagPT_CounterEventStart
  878. {
  879.     USHORT      counter;
  880.     USHORT      GateMode;
  881. } PT_CounterEventStart, FAR * LPT_CounterEventStart;
  882. typedef struct tagPT_CounterEventRead
  883. {
  884.     USHORT      counter;
  885.     USHORT far  *overflow;
  886.     ULONG far   *count;
  887. } PT_CounterEventRead, FAR * LPT_CounterEventRead;
  888. typedef struct tagPT_CounterFreqStart
  889. {
  890.     USHORT      counter;
  891.     USHORT      GatePeriod;
  892.     USHORT      GateMode;
  893. } PT_CounterFreqStart, FAR * LPT_CounterFreqStart;
  894. typedef struct tagPT_CounterFreqRead
  895. {
  896.     USHORT      counter;
  897.     FLOAT far   *freq;
  898. } PT_CounterFreqRead, FAR * LPT_CounterFreqRead;
  899. typedef struct tagPT_CounterPulseStart
  900. {
  901.     USHORT      counter;
  902.     FLOAT       period;
  903.     FLOAT       UpCycle;
  904.     USHORT      GateMode;
  905. } PT_CounterPulseStart, FAR * LPT_CounterPulseStart;
  906. typedef struct tagPT_QCounterConfig
  907. {
  908.     USHORT      counter;
  909.     USHORT      LatchSrc;
  910.     USHORT      LatchOverflow;
  911.     USHORT      ResetOnLatch;
  912.     USHORT      ResetValue;
  913. } PT_QCounterConfig, FAR * LPT_QCounterConfig;
  914. typedef struct tagPT_QCounterConfigSys
  915. {
  916.     USHORT      SysClock;
  917.     USHORT      TimeBase;
  918.     USHORT      TimeDivider;
  919.     USHORT      CascadeMode;
  920. } PT_QCounterConfigSys, FAR * LPT_QCounterConfigSys;
  921. typedef struct tagPT_QCounterStart
  922. {
  923.     USHORT      counter;
  924.     USHORT      InputMode;
  925. } PT_QCounterStart, FAR * LPT_QCounterStart;
  926. typedef struct tagPT_QCounterRead
  927. {
  928.     USHORT      counter;
  929.     USHORT far  *overflow;
  930.     ULONG far   *LoCount;
  931.     ULONG far   *HiCount;
  932. } PT_QCounterRead, FAR * LPT_QCounterRead;
  933. typedef struct tagPT_AlarmConfig
  934. {
  935.     USHORT      chan;
  936.     FLOAT       LoLimit;
  937.     FLOAT       HiLimit;
  938. } PT_AlarmConfig, FAR * LPT_AlarmConfig;
  939. typedef struct tagPT_AlarmEnable
  940. {
  941.     USHORT      chan;
  942.     USHORT      LatchMode;
  943.     USHORT      enabled;
  944. } PT_AlarmEnable, FAR * LPT_AlarmEnable;
  945. typedef struct tagPT_AlarmCheck
  946. {
  947.     USHORT      chan;
  948.     USHORT far  *LoState;
  949.     USHORT far  *HiState;
  950. } PT_AlarmCheck, FAR * LPT_AlarmCheck;
  951. typedef struct tagPT_WDTEnable
  952. {
  953.     USHORT      message;
  954.     HWND        Destination;
  955. } PT_WDTEnable, FAR * LPT_WDTEnable;
  956. typedef struct tagPT_FAIIntStart
  957. {
  958.     USHORT      TrigSrc;
  959.     DWORD       SampleRate;
  960.     USHORT      chan;
  961.     USHORT      gain;
  962.     USHORT far  *buffer;
  963.     ULONG       count;
  964.     USHORT      cyclic;
  965.     USHORT      IntrCount;
  966. } PT_FAIIntStart, FAR * LPT_FAIIntStart;
  967. typedef struct tagPT_FAIIntScanStart
  968. {
  969.     USHORT      TrigSrc;
  970.     DWORD       SampleRate;
  971.     USHORT      NumChans;
  972.     USHORT      StartChan;
  973.     USHORT far  *GainList;
  974.     USHORT far  *buffer;
  975.     ULONG       count;
  976.     USHORT      cyclic;
  977.     USHORT      IntrCount;
  978. } PT_FAIIntScanStart, FAR * LPT_FAIIntScanStart;
  979. typedef struct tagPT_FAIDmaStart
  980. {
  981.     USHORT      TrigSrc;
  982.     DWORD       SampleRate;
  983.     USHORT      chan;
  984.     USHORT      gain;
  985.     USHORT far  *buffer;
  986.     ULONG       count;
  987. } PT_FAIDmaStart, FAR * LPT_FAIDmaStart;
  988. typedef struct tagPT_FAIDmaScanStart
  989. {
  990.     USHORT      TrigSrc;
  991.     DWORD       SampleRate;
  992.     USHORT      NumChans;
  993.     USHORT      StartChan;
  994.     USHORT far  *GainList;
  995.     USHORT far  *buffer;
  996.     ULONG       count;
  997. } PT_FAIDmaScanStart, FAR * LPT_FAIDmaScanStart;
  998. typedef struct tagPT_FAIDualDmaStart
  999. {
  1000.     USHORT      TrigSrc;
  1001.     DWORD       SampleRate;
  1002.     USHORT      chan;
  1003.     USHORT      gain;
  1004.     USHORT far  *BufferA;
  1005.     USHORT far  *BufferB;
  1006.     ULONG       count;
  1007.     USHORT      cyclic;
  1008. } PT_FAIDualDmaStart, FAR * LPT_FAIDualDmaStart;
  1009. typedef struct tagPT_FAIDualDmaScanStart
  1010. {
  1011.     USHORT      TrigSrc;
  1012.     DWORD       SampleRate;
  1013.     USHORT      NumChans;
  1014.     USHORT      StartChan;
  1015.     USHORT far  *GainList;
  1016.     USHORT far  *BufferA;
  1017.     USHORT far  *BufferB;
  1018.     ULONG       count;
  1019.     USHORT      cyclic;
  1020. } PT_FAIDualDmaScanStart, FAR * LPT_FAIDualDmaScanStart;
  1021. typedef struct tagPT_FAITransfer
  1022. {
  1023.     USHORT      ActiveBuf;
  1024.     LPVOID      DataBuffer;
  1025.     USHORT      DataType;
  1026.     ULONG       start;
  1027.     ULONG       count;
  1028.     USHORT far *overrun;
  1029. } PT_FAITransfer, FAR * LPT_FAITransfer;
  1030. typedef struct tagPT_FAICheck
  1031. {
  1032.     USHORT far  *ActiveBuf;
  1033.     USHORT far  *stopped;
  1034.     ULONG  far  *retrieved;
  1035.     USHORT far  *overrun;
  1036.     USHORT far  *HalfReady;
  1037. } PT_FAICheck, FAR * LPT_FAICheck;
  1038. typedef struct tagPT_FAIWatchdogConfig
  1039. {
  1040.     USHORT      TrigMode;
  1041.     USHORT      NumChans;
  1042.     USHORT      StartChan;
  1043.     USHORT far  *GainList;
  1044.     USHORT far  *CondList;
  1045.     TRIGLEVEL far *LevelList;
  1046. } PT_FAIWatchdogConfig, FAR * LPT_FAIWatchdogConfig;
  1047. typedef struct tagPT_FAIIntWatchdogStart
  1048. {
  1049.     USHORT      TrigSrc;
  1050.     DWORD       SampleRate;
  1051.     USHORT far  *buffer;
  1052.     ULONG       count;
  1053.     USHORT      cyclic;
  1054.     USHORT      IntrCount;
  1055. } PT_FAIIntWatchdogStart, FAR * LPT_FAIIntWatchdogStart;
  1056. typedef struct tagPT_FAIDmaWatchdogStart
  1057. {
  1058.     USHORT      TrigSrc;
  1059.     DWORD       SampleRate;
  1060.     USHORT far  *BufferA;
  1061.     USHORT far  *BufferB;
  1062.     ULONG       count;
  1063. } PT_FAIDmaWatchdogStart, FAR * LPT_FAIDmaWatchdogStart;
  1064. typedef struct tagPT_FAIWatchdogCheck
  1065. {
  1066.     USHORT      DataType;
  1067.     USHORT far  *ActiveBuf;
  1068.     USHORT far  *triggered;
  1069.     USHORT far  *TrigChan;
  1070.     ULONG  far  *TrigIndex;
  1071.     LPVOID      TrigData;
  1072. } PT_FAIWatchdogCheck, FAR * LPT_FAIWatchdogCheck;
  1073. typedef struct tagPT_FAOIntStart
  1074. {
  1075.     USHORT      TrigSrc;
  1076.     DWORD       SampleRate;
  1077.     USHORT      chan;
  1078.     LONG   far  *buffer;
  1079.     ULONG       count;
  1080.     USHORT      cyclic;
  1081. } PT_FAOIntStart, FAR * LPT_FAOIntStart;
  1082. typedef struct tagPT_FAODmaStart
  1083. {
  1084.     USHORT      TrigSrc;
  1085.     DWORD       SampleRate;
  1086.     USHORT      chan;
  1087.     LONG   far  *buffer;
  1088.     ULONG       count;
  1089. } PT_FAODmaStart, FAR * LPT_FAODmaStart;
  1090. typedef struct tagPT_FAOScale
  1091. {
  1092.     USHORT      chan;
  1093.     ULONG       count;
  1094.     FLOAT far   *VoltArray;
  1095.     USHORT far  *BinArray;
  1096. } PT_FAOScale, FAR * LPT_FAOScale;
  1097. typedef struct tagPT_FAOLoad
  1098. {
  1099.     USHORT      ActiveBuf;
  1100.     USHORT far  *DataBuffer;
  1101.     ULONG       start;
  1102.     ULONG       count;
  1103. } PT_FAOLoad, FAR * LPT_FAOLoad;
  1104. typedef struct tagPT_FAOCheck
  1105. {
  1106.     USHORT far  *ActiveBuf;
  1107.     USHORT far  *stopped;
  1108.     ULONG  far  *CurrentCount;
  1109.     USHORT far  *overrun;
  1110.     USHORT far  *HalfReady;
  1111. } PT_FAOCheck, FAR * LPT_FAOCheck;
  1112. typedef struct tagPT_EnableEvent
  1113. {
  1114.     USHORT      EventType;
  1115.     USHORT      Enabled;
  1116.     USHORT      Count;
  1117. } PT_EnableEvent, FAR * LPT_EnableEvent;
  1118. typedef struct tagPT_CheckEvent
  1119. {
  1120.     USHORT far *EventType;
  1121.     DWORD      Milliseconds;
  1122. } PT_CheckEvent, FAR * LPT_CheckEvent;
  1123. typedef struct tagPT_EnableCANEvent
  1124. {
  1125.     USHORT      EventType;
  1126.     USHORT      Enabled;
  1127.     CHAR        APEventName[15];
  1128. } PT_EnableCANEvent, FAR * LPT_EnableCANEvent;
  1129. typedef struct tagPT_GetCANEventData
  1130. {
  1131.     USHORT far *EventType;
  1132.     USHORT far *PortNum;
  1133.     USHORT far *MacID;
  1134.     CHAR       Data[8];
  1135. } PT_GetCANEventData, FAR * LPT_GetCANEventData;
  1136. typedef struct tagPT_AllocateDMABuffer
  1137. {
  1138.     USHORT      CyclicMode;
  1139.     ULONG       RequestBufSize;
  1140.     ULONG far * ActualBufSize;
  1141.     LONG  far * buffer;
  1142. } PT_AllocateDMABuffer, FAR * LPT_AllocateDMABuffer;
  1143. typedef struct tagPT_TimerCountSetting
  1144. {
  1145. USHORT counter;
  1146. ULONG Count;
  1147. } PT_TimerCountSetting, FAR * LPT_TimerCountSetting;
  1148. typedef struct tagPT_DIFilter
  1149. {
  1150.     USHORT       usEventType;
  1151. USHORT       usEventEnable;
  1152. USHORT       usCount;
  1153.     USHORT       usEnable;    // Filter enable data
  1154. USHORT far * usHiValue;     // Filter value array pointer    
  1155. USHORT far * usLowValue;
  1156. } PT_DIFilter, FAR * LPT_DIFilter;
  1157. typedef struct tagPT_DIPattern
  1158. {
  1159.     USHORT       usEventType;
  1160. USHORT       usEventEnable;
  1161. USHORT       usCount;
  1162.     USHORT       usEnable;    // Pattern Match enable data
  1163. USHORT       usValue;     // Pattern Match pre_setting value;
  1164. } PT_DIPattern, FAR * LPT_DIPattern;
  1165. typedef struct tagPT_DICounter
  1166. {
  1167.     USHORT       usEventType;
  1168. USHORT       usEventEnable;
  1169. USHORT       usCount;
  1170.     USHORT       usEnable;    // Counter enable data
  1171. USHORT       usTrigEdge;  // Counter Trigger edge 0: Rising edge  1:Falling edge
  1172.     USHORT far * usPreset;    // counter pre_setting value
  1173. USHORT       usMatchEnable;// counter match enable data
  1174. USHORT far * usValue;     // counter match value
  1175. USHORT       usOverflow;  // counter overflow data
  1176. USHORT       usDirection; // up/down counter direction
  1177. } PT_DICounter, FAR * LPT_DICounter;
  1178. typedef struct tagPT_Status
  1179. {
  1180.     USHORT       usEventType;
  1181. USHORT       usEventEnable;
  1182. USHORT       usCount;
  1183.     USHORT       usEnable;     // status change enable data
  1184. USHORT       usRisingedge; // record Rising edge trigger type 
  1185. USHORT       usFallingedge;// record Falling edge trigger type
  1186. } PT_DIStatus, FAR * LPT_DIStatus;
  1187. typedef union tagPT_EnableEventEx
  1188. {
  1189.     PT_DIFilter       Filter;
  1190.     PT_DIPattern      Pattern;
  1191.     PT_DICounter      Counter;
  1192.     PT_DIStatus       Status;
  1193. } PT_EnableEventEx, FAR * LPT_EnableEventEx;
  1194. //typedef struct tagPT_EnableEventEx
  1195. //{
  1196. //    USHORT        usEventType;
  1197. // USHORT        usEventEnable;
  1198. // USHORT        usCount;
  1199. // PT_EventST    EventST;    
  1200. //
  1201. //} PT_EnableEventEx, FAR * LPT_EnableEventEx;
  1202. typedef struct tagPT_CounterPWMSetting
  1203. {
  1204.     USHORT      Port;  //counter port
  1205.     FLOAT       Period;   //ms 
  1206.     FLOAT       HiPeriod;  //UpCycle period ms
  1207. ULONG       OutCount;    //Stop count
  1208.     USHORT      GateMode;
  1209. } PT_CounterPWMSetting, FAR * LPT_CounterPWMSetting;
  1210. typedef struct tagPT_DioTimerSetting
  1211. {
  1212.     USHORT       Port;
  1213. USHORT       TimeronEnable;
  1214. USHORT       TimeroffEnable;
  1215. USHORT far * OnDuration;  //Timer on duration
  1216. USHORT far * OffDuration; //Timer off duration
  1217. } PT_DioTimerSetting, FAR * LPT_DioTimerSetting;
  1218. typedef struct tagPT_FDITransfer
  1219. {
  1220.     USHORT       usEventType;
  1221.     ULONG far *  ulRetData;
  1222. } PT_FDITransfer, FAR * LPT_FDITransfer;
  1223. typedef struct tagPT_AOCurrentOut
  1224. {
  1225.     USHORT      chan;
  1226.     FLOAT       OutputValue;
  1227. } PT_AOCurrentOut, FAR * LPT_AOCurrentOut;
  1228. typedef struct tagPT_ADAMCounterSetHWConfig
  1229. {
  1230. USHORT usCounterMode;
  1231. USHORT usDataFormat; // Only for adam5080
  1232. USHORT usGateTime; // Only for adam4080,4080D
  1233. } PT_ADAMCounterSetHWConfig, FAR * LPT_ADAMCounterSetHWConfig;
  1234. typedef struct tagPT_ADAMCounterGetHWConfig
  1235. {
  1236. USHORT far *usCounterMode;
  1237. USHORT far *usDataFormat;  // Only for adam5080
  1238. USHORT far *usGateTime; // Only for adam4080,4080D
  1239. } PT_ADAMCounterGetHWConfig, FAR * LPT_ADAMCounterGetHWConfig;
  1240. typedef struct tagPT_ADAMAISetHWConfig
  1241. {
  1242. USHORT usInputRange;
  1243. USHORT usDataFormat;
  1244. USHORT usIntegrationTime;
  1245. } PT_ADAMAISetHWConfig, FAR * LPT_ADAMAISetHWConfig;
  1246. typedef struct tagPT_ADAMAIGetHWConfig
  1247. {
  1248. USHORT far *usInputRange;
  1249. USHORT far *usDataFormat;
  1250. USHORT far *usIntegrationTime;
  1251. } PT_ADAMAIGetHWConfig, FAR * LPT_ADAMAIGetHWConfig;
  1252. typedef struct tagPT_ADAMAOSetHWConfig
  1253. {
  1254. USHORT usChan;
  1255. USHORT usOutputRange;
  1256. USHORT usDataFormat;
  1257. USHORT usSlewRate;
  1258. } PT_ADAMAOSetHWConfig, FAR * LPT_ADAMAOSetHWConfig;
  1259. typedef struct tagPT_ADAMAOGetHWConfig
  1260. {
  1261. USHORT usChan;
  1262. USHORT far *usOutputRange;
  1263. USHORT far *usDataFormat;
  1264. USHORT far *usSlewRate;
  1265. } PT_ADAMAOGetHWConfig, FAR * LPT_ADAMAOGetHWConfig;
  1266. typedef struct tagPT_PWMStartRead
  1267. {
  1268. USHORT usChan;
  1269. FLOAT  far *flHiperiod;
  1270. FLOAT  far *flLowperiod;
  1271. }PT_PWMStartRead, FAR * LPT_PWMStartRead;
  1272. typedef struct tagPT_FAIDmaExStart
  1273. {
  1274. USHORT TrigSrc; //Trigger source : internal,external
  1275. USHORT TrigMode; //Trigger Mode : Pacer, Post, Delay, About
  1276. USHORT ClockSrc; //Clock source : internel, external
  1277. USHORT TrigEdge; //Trigger Edge : Rise 0 Fall 1
  1278. USHORT SRCType; //Source type  : Digtal 0, Analog
  1279. FLOAT TrigVol; //Analog Trigger type Trigger voltage
  1280. USHORT CyclicMode; //Cyclic, noncyclic
  1281. USHORT NumChans; //Scan number of channel
  1282. USHORT StartChan; //Start channel
  1283. ULONG ulDelayCnt; //Delay count
  1284. ULONG count; //Number of sample
  1285. ULONG SampleRate; //Sampling rate
  1286.     USHORT *GainList; //Gain code list
  1287.     USHORT *CondList; //Trigger condition
  1288.     TRIGLEVEL *LevelList; //Trigger level
  1289. USHORT *buffer0; //Buffer pointer
  1290. USHORT *buffer1; //Buffer pointer
  1291. USHORT *Pt1; //Reserve parameter
  1292. USHORT *Pt2; //Reserve Parameter
  1293. USHORT *Pt3; //Reserve Parameter
  1294. }PT_FAIDmaExStart, *LPT_FAIDmaExStart;
  1295. /**************************************************************************
  1296.     Function Declaration
  1297. ***************************************************************************/
  1298. #if !defined(_WIN31)
  1299.     #define FEXPORT __declspec (dllexport)
  1300.     #define FTYPE  CALLBACK
  1301. #else
  1302.     #define FEXPORT extern
  1303.     #define FTYPE  FAR PASCAL
  1304. #endif
  1305. /**************************************************************************
  1306.     Function Declaration
  1307. ***************************************************************************/
  1308. FEXPORT LRESULT FTYPE DeviceConfig(ULONG DeviceNum,DWORD BoardID,HWND owner);
  1309. FEXPORT LRESULT FTYPE DeviceOpen(ULONG DeviceNum, LONG far * DeviceHandle);
  1310. FEXPORT LRESULT FTYPE DeviceClose(LONG far * DeviceHandle);
  1311. FEXPORT LRESULT FTYPE DeviceGetFeatures(LONG DeviceHandle,
  1312.                      DEVFEATURES far * buffer, USHORT size);
  1313. FEXPORT LRESULT FTYPE AIConfig(LONG DeviceHandle,USHORT DasChan,
  1314.                      USHORT DasGain);
  1315. FEXPORT LRESULT FTYPE AIGetConfig(LONG DeviceHandle,LPDEVCONFIG_AI buffer,
  1316.                      USHORT size);
  1317. FEXPORT LRESULT FTYPE AIBinaryIn(LONG DeviceHandle,USHORT chan,
  1318.                      USHORT TrigMode,USHORT far * reading);
  1319. FEXPORT LRESULT FTYPE AIScale(USHORT reading,FLOAT MaxVolt,USHORT MaxCount,
  1320.                      USHORT offset,FLOAT far * voltage);
  1321. FEXPORT LRESULT FTYPE AIVoltageIn(LONG DeviceHandle,USHORT chan,
  1322.                      USHORT gain,USHORT TrigMode,FLOAT far * voltage);
  1323. FEXPORT LRESULT FTYPE AIVoltageInExp(LONG DeviceHandle,USHORT DasChan,
  1324.                      USHORT DasGain,USHORT ExpChan,FLOAT far * voltage);
  1325. FEXPORT LRESULT FTYPE MAIConfig(LONG DeviceHandle,USHORT NumChan,
  1326.                      USHORT StartChan,USHORT far * GainArray);
  1327. FEXPORT LRESULT FTYPE MAIBinaryIn(LONG DeviceHandle,USHORT NumChan,
  1328.                      USHORT StartChan,USHORT TrigMode,USHORT far * ReadingArray);
  1329. FEXPORT LRESULT FTYPE MAIVoltageIn(LONG DeviceHandle,USHORT NumChan,
  1330.                      USHORT StartChan,USHORT far * GainArray,
  1331.                      USHORT TrigMode,FLOAT far * VoltageArray);
  1332. FEXPORT LRESULT FTYPE MAIVoltageInExp(LONG DeviceHandle,USHORT NumChan,
  1333.                      USHORT far * DasChanArray,USHORT far * DasGainArray,
  1334.                      USHORT far * ExpChanArray,FLOAT far * VoltageArray);
  1335. FEXPORT LRESULT FTYPE TCMuxRead(LONG DeviceHandle,USHORT DasChan,
  1336.                      USHORT DasGain,USHORT ExpChan,USHORT TCType,
  1337.                      USHORT TempScale,FLOAT far * temp);
  1338. FEXPORT LRESULT FTYPE AOConfig(LONG DeviceHandle,USHORT chan,USHORT RefSrc,
  1339.                      FLOAT MaxValue,FLOAT MinValue);
  1340. FEXPORT LRESULT FTYPE AOBinaryOut(LONG DeviceHandle,USHORT chan,USHORT BinData);
  1341. FEXPORT LRESULT FTYPE AOVoltageOut(LONG DeviceHandle,USHORT chan,FLOAT OutputValue);
  1342. FEXPORT LRESULT FTYPE AOScale(LONG DeviceHandle,USHORT chan,FLOAT OutputValue,
  1343.                      USHORT far * BinData);
  1344. FEXPORT LRESULT FTYPE DioSetPortMode(LONG DeviceHandle,USHORT port,
  1345.                      USHORT dir);
  1346. FEXPORT LRESULT FTYPE DioGetConfig(LONG DeviceHandle,SHORT far * PortArray,
  1347.                      USHORT NumOfPorts);
  1348. FEXPORT LRESULT FTYPE DioReadPortByte(LONG DeviceHandle,USHORT port,
  1349.                      USHORT far * value);
  1350. FEXPORT LRESULT FTYPE DioWritePortByte(LONG DeviceHandle,USHORT port,
  1351.                      USHORT mask,USHORT state);
  1352. FEXPORT LRESULT FTYPE DioReadBit(LONG DeviceHandle,USHORT port,USHORT bit,
  1353.                      USHORT far * state);
  1354. FEXPORT LRESULT FTYPE DioWriteBit(LONG DeviceHandle,USHORT port,USHORT bit,
  1355.                      USHORT state);
  1356. FEXPORT LRESULT FTYPE DioGetCurrentDOByte(LONG DeviceHandle,USHORT port,
  1357.                      USHORT far * value);
  1358. FEXPORT LRESULT FTYPE DioGetCurrentDOBit(LONG DeviceHandle,USHORT port,
  1359.                      USHORT bit,USHORT far * state);
  1360. FEXPORT LRESULT FTYPE WritePortByte(LONG DeviceHandle,USHORT port,
  1361.                      USHORT ByteData);
  1362. FEXPORT LRESULT FTYPE WritePortWord(LONG DeviceHandle,USHORT port,
  1363.                      USHORT WordData);
  1364. FEXPORT LRESULT FTYPE ReadPortByte(LONG DeviceHandle,USHORT port,
  1365.                      USHORT far * ByteData);
  1366. FEXPORT LRESULT FTYPE ReadPortWord(LONG DeviceHandle,USHORT port,
  1367.                      USHORT far * WordData);
  1368. FEXPORT LRESULT FTYPE CounterEventStart(LONG DeviceHandle,USHORT counter,
  1369.                      USHORT GateMode);
  1370. FEXPORT LRESULT FTYPE CounterEventRead(LONG DeviceHandle,USHORT counter,
  1371.                      USHORT far * overflow,ULONG far * count);
  1372. FEXPORT LRESULT FTYPE CounterFreqStart(LONG DeviceHandle,USHORT counter,
  1373.                      USHORT GatePeriod,USHORT GateMode);
  1374. FEXPORT LRESULT FTYPE CounterFreqRead(LONG DeviceHandle,USHORT counter,
  1375.                      FLOAT far * freq);
  1376. FEXPORT LRESULT FTYPE CounterPulseStart(LONG DeviceHandle,USHORT counter,
  1377.  FLOAT period,FLOAT UpCycle,USHORT GateMode);
  1378. FEXPORT LRESULT FTYPE CounterReset(LONG DeviceHandle,USHORT counter);
  1379. FEXPORT LRESULT FTYPE QCounterConfig(LONG DeviceHandle,USHORT counter,
  1380.                      USHORT LatchSrc,USHORT LatchOverflow,USHORT ResetOnLatch,
  1381.                      USHORT ResetValue);
  1382. FEXPORT LRESULT FTYPE QCounterConfigSys(LONG DeviceHandle,USHORT SysClock,
  1383.                      USHORT TimeBase, USHORT TimeDivider,USHORT CascadeMode);
  1384. FEXPORT LRESULT FTYPE QCounterStart(LONG DeviceHandle,USHORT counter,
  1385.                      USHORT InputMode);
  1386. FEXPORT LRESULT FTYPE QCounterRead(LONG DeviceHandle,USHORT counter,
  1387.                      USHORT far * overflow,ULONG far * LoCount,
  1388.                      ULONG far * HiCount);
  1389. FEXPORT LRESULT FTYPE AlarmConfig(LONG DeviceHandle,USHORT chan,
  1390.                      FLOAT LoLimit,FLOAT HiLimit);
  1391. FEXPORT LRESULT FTYPE AlarmEnable(LONG DeviceHandle,USHORT chan,
  1392.                      USHORT LatchMode,USHORT enabled);
  1393. FEXPORT LRESULT FTYPE AlarmCheck(LONG DeviceHandle,USHORT chan,
  1394.                      USHORT far * LoState,USHORT far * HiState);
  1395. FEXPORT LRESULT FTYPE AlarmReset(LONG DeviceHandle,USHORT chan);
  1396. FEXPORT LRESULT FTYPE COMOpen(USHORT PortNum, LONG far * ComHandle,
  1397.                      LONG far * DeviceHandle);
  1398. FEXPORT LRESULT FTYPE COMClose(LONG far * DeviceHandle);
  1399. FEXPORT LRESULT FTYPE COMGetConfig(ULONG DeviceNum, LPDEVCONFIG_COM buffer);
  1400. FEXPORT LRESULT FTYPE COMSetConfig(LONG DeviceHandle, LPDEVCONFIG_COM buffer);
  1401. FEXPORT LRESULT FTYPE COMRead(LONG DeviceHandle, LPSTR buffer,
  1402.                      USHORT BufferSize, USHORT TimeOut, CHAR FinalChar,
  1403.                      USHORT far * ReadCount);
  1404. FEXPORT LRESULT FTYPE COMWrite(LONG DeviceHandle,LPSTR buffer,
  1405.                      USHORT DataLength);
  1406. FEXPORT LRESULT FTYPE COMWrite232(LONG DeviceHandle,LPSTR buffer,
  1407.                      USHORT DataLength);
  1408. FEXPORT LRESULT FTYPE COMWrite485(LONG DeviceHandle,LPSTR buffer,
  1409.                      USHORT DataLength);
  1410. FEXPORT LRESULT FTYPE COMWrite85(LONG DeviceHandle,LPSTR buffer,
  1411.                      USHORT DataLength);
  1412. FEXPORT LRESULT FTYPE COMEscape(LONG DeviceHandle, USHORT escape);
  1413. FEXPORT LRESULT FTYPE WDTEnable(LONG DeviceHandle,USHORT message,
  1414.                      HWND Destination);
  1415. FEXPORT LRESULT FTYPE WDTRefresh(LONG DeviceHandle);
  1416. FEXPORT LRESULT FTYPE WDTReset(LONG DeviceHandle);
  1417. FEXPORT LRESULT FTYPE TimerCountSetting(LONG DeviceHandle,USHORT counter,
  1418.  ULONG Count);
  1419. FEXPORT LRESULT FTYPE CounterPWMSetting(LONG DeviceHandle,USHORT counter,
  1420.  FLOAT period,FLOAT UpCycle,ULONG OutCount,USHORT GateMode);
  1421. FEXPORT LRESULT FTYPE CounterPWMEnable(LONG DeviceHandle,USHORT Port);
  1422. FEXPORT LRESULT FTYPE DioTimerSetting(LONG DeviceHandle,USHORT Port,USHORT TimeronEnable,
  1423.   USHORT TimeroffEnable,USHORT far * OnDuration,
  1424.   USHORT far * OffDuration);
  1425. FEXPORT LRESULT FTYPE DICounterReset(LONG DeviceHandle,USHORT counter);
  1426. FEXPORT LRESULT FTYPE EnableSyncAO(LONG DeviceHandle,USHORT Enable);
  1427. FEXPORT LRESULT FTYPE WriteSyncAO(LONG DeviceHandle);
  1428. FEXPORT LRESULT FTYPE AOCurrentOut(LONG DeviceHandle,USHORT chan,FLOAT OutputValue);
  1429. FEXPORT LRESULT FTYPE GetFIFOSize(LONG DeviceHandle,LONG far * lSize);
  1430. FEXPORT LRESULT FTYPE PWMStartRead(LONG DeviceHandle, USHORT usChan, FLOAT far *flHiperiod, FLOAT far *flLowperiod);
  1431. // Only for ADAM
  1432. FEXPORT LRESULT FTYPE AISetHWConfig(LONG DeviceHandle,USHORT InputRange, USHORT DataFormat, USHORT IntegrationTime);
  1433. FEXPORT LRESULT FTYPE AIGetHWConfig(LONG DeviceHandle,USHORT far * InputRange, USHORT far * DataFormat, USHORT far * IntegrationTime);
  1434. FEXPORT LRESULT FTYPE AOSetHWConfig(LONG DeviceHandle,USHORT Chan, USHORT OutputRange, USHORT DataFormat, USHORT SlewRate);
  1435. FEXPORT LRESULT FTYPE AOGetHWConfig(LONG DeviceHandle,USHORT Chan, USHORT far * OutputRange, USHORT far * DataFormat, USHORT far * SlewRate);
  1436. FEXPORT LRESULT FTYPE CounterSetHWConfig(LONG DeviceHandle,USHORT CounterMode, USHORT DataFormat,USHORT GateMode);
  1437. FEXPORT LRESULT FTYPE CounterGetHWConfig(LONG DeviceHandle,USHORT far * CounterMode, USHORT far * DataFormat,USHORT far * GateMode);
  1438. // High speed function declaration
  1439. FEXPORT LRESULT FTYPE FAIIntStart(LONG DeviceHandle,USHORT TrigSrc,
  1440.                      DWORD SampleRate,USHORT chan,USHORT gain,
  1441.                      USHORT far * buffer, ULONG count,
  1442.                      USHORT cyclic, USHORT IntrCount);
  1443. FEXPORT LRESULT FTYPE FAIIntScanStart(LONG DeviceHandle,USHORT TrigSrc,
  1444.                      DWORD SampleRate,USHORT NumChans,
  1445.                      USHORT StartChan,USHORT far * GainList,
  1446.                      USHORT far * buffer,ULONG count,USHORT cyclic,
  1447.                      USHORT IntrCount);
  1448. FEXPORT LRESULT FTYPE FAIDmaStart(LONG DeviceHandle,USHORT TrigSrc,
  1449.                      DWORD SampleRate,USHORT chan,USHORT gain,
  1450.                      USHORT far * buffer, ULONG count);
  1451. FEXPORT LRESULT FTYPE FAIDmaScanStart(LONG DeviceHandle,USHORT TrigSrc,
  1452.                      DWORD SampleRate,USHORT NumChans,
  1453.                      USHORT StartChan,USHORT far * GainList,
  1454.                      USHORT far * buffer,ULONG count);
  1455. FEXPORT LRESULT FTYPE FAIDualDmaStart(LONG DeviceHandle,USHORT TrigSrc,
  1456.                      DWORD SampleRate,USHORT chan,USHORT gain,
  1457.                      USHORT far * BufferA, USHORT far * BufferB,
  1458.                      ULONG count);
  1459. FEXPORT LRESULT FTYPE FAIDualDmaScanStart(LONG DeviceHandle,USHORT TrigSrc,
  1460.                      DWORD SampleRate,USHORT NumChans,
  1461.                      USHORT StartChan,USHORT far * GainList,
  1462.                      USHORT far * BufferA, USHORT far * BufferB,
  1463.                      ULONG count);
  1464. FEXPORT LRESULT FTYPE FAITransfer(LONG DeviceHandle,USHORT ActiveBuf,
  1465.                      LPVOID DataBuffer,USHORT DataType,ULONG start,
  1466.                      ULONG count,USHORT far *overrun);
  1467. FEXPORT LRESULT FTYPE FAICheck(LONG DeviceHandle,USHORT far * ActiveBuf,
  1468.                      USHORT far * stopped,ULONG  far * retrieved,
  1469.                      USHORT far * overrun,USHORT far * HalfReady);
  1470. FEXPORT LRESULT FTYPE FAIWatchdogConfig(LONG DeviceHandle,USHORT TrigMode,
  1471.                      USHORT NumChans,USHORT StartChan,USHORT far * GainList,
  1472.                      USHORT far * CondList, TRIGLEVEL far * LevelList);
  1473. FEXPORT LRESULT FTYPE FAIIntWatchdogStart(LONG DeviceHandle, USHORT TrigSrc,
  1474.                      DWORD SampleRate,USHORT far * buffer,
  1475.                      ULONG count, USHORT cyclic, USHORT IntrCount);
  1476. FEXPORT LRESULT FTYPE FAIDmaWatchdogStart(LONG DeviceHandle,USHORT TrigSrc,
  1477.                      DWORD SampleRate,USHORT far * BufferA,
  1478.                      USHORT far * BufferB,ULONG count);
  1479. FEXPORT LRESULT FTYPE FAIWatchdogCheck(LONG DeviceHandle,USHORT DataType,
  1480.                      USHORT far * ActiveBuf,USHORT far * triggered,
  1481.                      USHORT far * TrigChan,ULONG far * TrigIndex,
  1482.                      LPVOID TrigData);
  1483. FEXPORT LRESULT FTYPE FAIStop(LONG DeviceHandle);
  1484. FEXPORT LRESULT FTYPE FAOIntStart(LONG DeviceHandle,USHORT TrigSrc,
  1485.                      DWORD SampleRate,USHORT chan,LONG far * buffer,
  1486.                      ULONG count, USHORT cyclic);
  1487. FEXPORT LRESULT FTYPE FAODmaStart(LONG DeviceHandle,USHORT TrigSrc,
  1488.                      DWORD SampleRate,USHORT chan,LONG far * buffer,
  1489.                      ULONG count);
  1490. FEXPORT LRESULT FTYPE FAOScale(LONG DeviceHandle,USHORT chan,
  1491.                      ULONG count,FLOAT far * VoltArray,
  1492.                      USHORT far * BinArray);
  1493. FEXPORT LRESULT FTYPE FAOLoad(LONG DeviceHandle,USHORT ActiveBuf,
  1494.                      LONG far * DataBuffer,ULONG start,ULONG count);
  1495. FEXPORT LRESULT FTYPE FAOCheck(LONG DeviceHandle,USHORT far * ActiveBuf,
  1496.                      USHORT far * stopped,ULONG far * CurrentCount,
  1497.                      USHORT far * overrun,USHORT far * HalfReady);
  1498. FEXPORT LRESULT FTYPE FAOStop(LONG DeviceHandle);
  1499. FEXPORT LRESULT FTYPE ClearOverrun(LONG DeviceHandle);
  1500. FEXPORT LRESULT FTYPE EnableEvent(LONG DeviceHandle, USHORT EventType,
  1501.                      USHORT Enabled, USHORT Count);
  1502. FEXPORT LRESULT FTYPE CheckEvent(LONG DeviceHandle,USHORT far *EventType,
  1503.                      DWORD Milliseconds);
  1504. FEXPORT LRESULT FTYPE EnableCANEvent(LONG DeviceHandle,USHORT usEventType,
  1505.  USHORT usEnabled,CHAR far *EventName);
  1506. FEXPORT LRESULT FTYPE GetCANEventData(USHORT FAR * Port,USHORT FAR * MacID,
  1507.   USHORT FAR * Type,CHAR FAR * Data);
  1508. FEXPORT LRESULT FTYPE AllocateDMABuffer(LONG DeviceHandle, USHORT CyclicMode,
  1509.                      ULONG RequestBufSize, ULONG far * ActualBufSize,
  1510.                      LONG far * buffer);
  1511. FEXPORT LRESULT FTYPE FreeDMABuffer(LONG DeviceHandle,LONG far * buffer);
  1512. FEXPORT LRESULT FTYPE EnableEventEx(LONG DeviceHandle, LPT_EnableEventEx  lpEnableEventEx);
  1513. FEXPORT LRESULT FTYPE FDITransfer(LONG DeviceHandle,USHORT usEventType, ULONG far * ulRetData);
  1514. FEXPORT LRESULT FTYPE FAIDmaExStart(LONG DeviceHandle, USHORT TrigSrc, USHORT TrigMode, USHORT ClockSrc, USHORT TrigEdge, 
  1515.      USHORT SRCType, FLOAT TrigVol, USHORT CyclicMode, USHORT NumChans, USHORT StartChan, ULONG ulDelayCnt,
  1516.      ULONG count, DWORD SampleRate, USHORT *GainList, USHORT *CondList, USHORT *LevelList, USHORT *buffer0,
  1517.      USHORT *buffer1, USHORT *Pt1, USHORT *Pt2, USHORT *Pt3);
  1518. // CAN bus function declaration
  1519. FEXPORT LRESULT FTYPE CANPortOpen(WORD DevNum, WORD *wPort,
  1520.                       WORD *wHostID, WORD *wBaudRate);
  1521. FEXPORT LRESULT FTYPE CANPortClose(WORD wPort);
  1522. FEXPORT LRESULT FTYPE CANInit(WORD Port,WORD BTR0,WORD BTR1,UCHAR usMask);
  1523. FEXPORT LRESULT FTYPE CANReset(WORD Port);
  1524. FEXPORT LRESULT FTYPE CANInpb(WORD Port,WORD Offset,UCHAR FAR *Data);
  1525. FEXPORT LRESULT FTYPE CANOutpb(WORD Port,WORD Offset,UCHAR Value);
  1526. FEXPORT LRESULT FTYPE CANSetBaud(WORD Port,WORD BTR0,WORD BTR1);
  1527. FEXPORT LRESULT FTYPE CANGetBaudRate(WORD Port,WORD *wBaudRate);
  1528. FEXPORT LRESULT FTYPE CANSetAcp(WORD Port,WORD Acp,WORD Mask);
  1529. FEXPORT LRESULT FTYPE CANSetOutCtrl(WORD Port,WORD OutCtrl);
  1530. FEXPORT LRESULT FTYPE CANSetNormal(WORD Port);
  1531. FEXPORT LRESULT FTYPE CANHwReset(WORD Port);
  1532. FEXPORT LRESULT FTYPE CANSendMsg(WORD Port,UCHAR FAR *TxBuf,BOOL Wait);
  1533. FEXPORT LRESULT FTYPE CANQueryMsg(WORD Port,BOOL FAR *Ready,
  1534.                       UCHAR FAR *RcvBuf);
  1535. FEXPORT LRESULT FTYPE CANWaitForMsg(WORD Port,UCHAR FAR *RcvBuf,
  1536.                       ULONG uTimeValue);
  1537. FEXPORT LRESULT FTYPE CANQueryID(WORD Port,BOOL FAR *Ready,
  1538.                       UCHAR FAR *IDBuf);
  1539. FEXPORT LRESULT FTYPE CANWaitForID(WORD Port,UCHAR FAR *IDBuf,
  1540.                       ULONG uTimeValue);
  1541. FEXPORT LRESULT FTYPE CANEnableMessaging(WORD Port,WORD Type,
  1542.                       BOOL Enabled,HWND AppWnd,UCHAR FAR *RcvBuf);
  1543. FEXPORT LRESULT FTYPE CANGetEventName(WORD Port,CHAR *RcvBuf);
  1544. FEXPORT LRESULT FTYPE CANEnableEvent(USHORT Port, BOOL Enabled);
  1545. FEXPORT LRESULT FTYPE CANCheckEvent(USHORT Port, DWORD Milliseconds);
  1546. FEXPORT LRESULT FTYPE CANPortOpenX(WORD wPort, DWORD dwMemoryAddress, ULONG IRQ);
  1547. // Function Declaration for PCL-839
  1548. FEXPORT int FTYPE set_base(int address);
  1549. FEXPORT int FTYPE set_mode(int chan, int mode);
  1550. FEXPORT int FTYPE set_speed(int chan, int low_speed, int high_speed, int accelerate);
  1551. FEXPORT int FTYPE status(int chan);
  1552. FEXPORT int FTYPE m_stop(int chan);
  1553. FEXPORT int FTYPE slowdown(int chan);
  1554. FEXPORT int FTYPE sldn_stop(int chan);
  1555. FEXPORT int FTYPE waitrdy(int chan);
  1556. FEXPORT int FTYPE chkbusy(void);
  1557. FEXPORT int FTYPE out_port(int port_no, int value);
  1558. FEXPORT int FTYPE in_port(int port_no);
  1559. FEXPORT int FTYPE In_byte(int offset);
  1560. FEXPORT int FTYPE Out_byte(int offset , int value);
  1561. FEXPORT int FTYPE org(int chan, int dir1, int speed1, int dir2, int speed2 , int dir3, int speed3);
  1562. FEXPORT int FTYPE cmove(int chan, int dir1, int speed1, int dir2, int speed2, int dir3, int speed3);
  1563. FEXPORT int FTYPE pmove(int ch, int dir1, int speed1, long step1, int dir2, int speed2, long step2,
  1564.                         int dir3, int speed3, long step3);
  1565.                         
  1566. /**************************************************************************
  1567.     Function Declaration for ADSAPI32
  1568. ***************************************************************************/
  1569. FEXPORT LRESULT FTYPE DRV_DeviceGetNumOfList(SHORT far *NumOfDevices);
  1570. FEXPORT LRESULT FTYPE DRV_DeviceGetList(DEVLIST far *DeviceList,
  1571.                        SHORT MaxEntries, SHORT far *OutEntries);
  1572. FEXPORT LRESULT FTYPE DRV_DeviceGetSubList(DWORD DeviceNum,
  1573.                        DEVLIST far *SubDevList, SHORT MaxEntries,
  1574.                        SHORT far *OutEntries);
  1575. FEXPORT LRESULT FTYPE DRV_SelectDevice(HWND hCaller, BOOL GetModule,
  1576.                       ULONG *DeviceNum, UCHAR *Description);
  1577. FEXPORT LRESULT FTYPE DRV_DeviceOpen(ULONG DeviceNum, LONG far * DriverHandle);
  1578. FEXPORT LRESULT FTYPE DRV_DeviceClose(LONG far * DriverHandle);
  1579. FEXPORT LRESULT FTYPE DRV_DeviceGetFeatures(LONG DriverHandle,
  1580.                        LPT_DeviceGetFeatures lpDevFeatures);
  1581. FEXPORT LRESULT FTYPE DRV_BoardTypeMapBoardName(DWORD BoardID, LPSTR ExpName);
  1582. FEXPORT VOID    FTYPE DRV_GetErrorMessage(LRESULT lError,LPSTR lpszErrMsg);
  1583. FEXPORT LRESULT FTYPE DRV_AIConfig(LONG DriverHandle,
  1584.                       LPT_AIConfig lpAIConfig);
  1585. FEXPORT LRESULT FTYPE DRV_AIGetConfig(LONG DriverHandle,
  1586.                       LPT_AIGetConfig lpAIGetConfig);
  1587. FEXPORT LRESULT FTYPE DRV_AIBinaryIn(LONG DriverHandle,
  1588.                       LPT_AIBinaryIn lpAIBinaryIn);
  1589. FEXPORT LRESULT FTYPE DRV_AIScale(LONG DriverHandle,
  1590.                       LPT_AIScale lpAIScale);
  1591. FEXPORT LRESULT FTYPE DRV_AIVoltageIn(LONG DriverHandle,
  1592.                       LPT_AIVoltageIn lpAIVoltageIn);
  1593. FEXPORT LRESULT FTYPE DRV_AIVoltageInExp(LONG DriverHandle,
  1594.                       LPT_AIVoltageInExp lpAIVoltageInExp);
  1595. FEXPORT LRESULT FTYPE DRV_MAIConfig(LONG DriverHandle,
  1596.                       LPT_MAIConfig lpMAIConfig);
  1597. FEXPORT LRESULT FTYPE DRV_MAIBinaryIn(LONG DriverHandle,
  1598.                       LPT_MAIBinaryIn lpMAIBinaryIn);
  1599. FEXPORT LRESULT FTYPE DRV_MAIVoltageIn(LONG DriverHandle,
  1600.                       LPT_MAIVoltageIn lpMAIVoltageIn);
  1601. FEXPORT LRESULT FTYPE DRV_MAIVoltageInExp(LONG DriverHandle,
  1602.                       LPT_MAIVoltageInExp lpMAIVoltageInExp);
  1603. FEXPORT LRESULT FTYPE DRV_TCMuxRead(LONG DriverHandle,
  1604.                       LPT_TCMuxRead lpTCMuxRead);
  1605. FEXPORT LRESULT FTYPE DRV_AOConfig(LONG DriverHandle,
  1606.                       LPT_AOConfig lpAOConfig);
  1607. FEXPORT LRESULT FTYPE DRV_AOBinaryOut(LONG DriverHandle,
  1608.                       LPT_AOBinaryOut lpAOBinaryOut);
  1609. FEXPORT LRESULT FTYPE DRV_AOVoltageOut(LONG DriverHandle,
  1610.                       LPT_AOVoltageOut lpAOVoltageOut);
  1611. FEXPORT LRESULT FTYPE DRV_AOScale(LONG DriverHandle,
  1612.                       LPT_AOScale lpAOScale);
  1613. FEXPORT LRESULT FTYPE DRV_DioSetPortMode(LONG DriverHandle,
  1614.                       LPT_DioSetPortMode lpDioSetPortMode);
  1615. FEXPORT LRESULT FTYPE DRV_DioGetConfig(LONG DriverHandle,
  1616.                       LPT_DioGetConfig lpDioGetConfig);
  1617. FEXPORT LRESULT FTYPE DRV_DioReadPortByte(LONG DriverHandle,
  1618.                       LPT_DioReadPortByte lpDioReadPortByte);
  1619. FEXPORT LRESULT FTYPE DRV_DioWritePortByte(LONG DriverHandle,
  1620.                       LPT_DioWritePortByte lpDioWritePortByte);
  1621. FEXPORT LRESULT FTYPE DRV_DioReadBit(LONG DriverHandle,
  1622.                       LPT_DioReadBit lpDioReadBit);
  1623. FEXPORT LRESULT FTYPE DRV_DioWriteBit(LONG DriverHandle,
  1624.                       LPT_DioWriteBit lpDioWriteBit);
  1625. FEXPORT LRESULT FTYPE DRV_DioGetCurrentDOByte(LONG DriverHandle,
  1626.                       LPT_DioGetCurrentDOByte lpDioGetCurrentDOByte);
  1627. FEXPORT LRESULT FTYPE DRV_DioGetCurrentDOBit(LONG DriverHandle,
  1628.                       LPT_DioGetCurrentDOBit lpDioGetCurrentDOBit);
  1629. FEXPORT LRESULT FTYPE DRV_WritePortByte(LONG DriverHandle,
  1630.                       LPT_WritePortByte lpWritePortByte);
  1631. FEXPORT LRESULT FTYPE DRV_WritePortWord(LONG DriverHandle,
  1632.                       LPT_WritePortWord lpWritePortWord);
  1633. FEXPORT LRESULT FTYPE DRV_ReadPortByte(LONG DriverHandle,
  1634.                       LPT_ReadPortByte lpReadPortByte);
  1635. FEXPORT LRESULT FTYPE DRV_ReadPortWord(LONG DriverHandle,
  1636.                       LPT_ReadPortWord lpReadPortWord);
  1637. FEXPORT LRESULT FTYPE DRV_CounterEventStart(LONG DriverHandle,
  1638.                       LPT_CounterEventStart lpCounterEventStart);
  1639. FEXPORT LRESULT FTYPE DRV_CounterEventRead(LONG DriverHandle,
  1640.                       LPT_CounterEventRead lpCounterEventRead);
  1641. FEXPORT LRESULT FTYPE DRV_CounterFreqStart(LONG DriverHandle,
  1642.                       LPT_CounterFreqStart lpCounterFreqStart);
  1643. FEXPORT LRESULT FTYPE DRV_CounterFreqRead(LONG DriverHandle,
  1644.                       LPT_CounterFreqRead lpCounterFreqRead);
  1645. FEXPORT LRESULT FTYPE DRV_CounterPulseStart(LONG DriverHandle,
  1646.                       LPT_CounterPulseStart lpCounterPulseStart);
  1647. FEXPORT LRESULT FTYPE DRV_CounterReset(LONG DriverHandle,
  1648.                       LPARAM counter);
  1649. FEXPORT LRESULT FTYPE DRV_QCounterConfig(LONG DriverHandle,
  1650.                       LPT_QCounterConfig lpQCounterConfig);
  1651. FEXPORT LRESULT FTYPE DRV_QCounterConfigSys(LONG DriverHandle,
  1652.                       LPT_QCounterConfigSys lpQCounterConfigSys);
  1653. FEXPORT LRESULT FTYPE DRV_QCounterStart(LONG DriverHandle,
  1654.                       LPT_QCounterStart lpQCounterStart);
  1655. FEXPORT LRESULT FTYPE DRV_QCounterRead(LONG DriverHandle,
  1656.                       LPT_QCounterRead lpQCounterRead);
  1657. FEXPORT LRESULT FTYPE DRV_AlarmConfig(LONG DriverHandle,
  1658.                       LPT_AlarmConfig lpAlarmConfig);
  1659. FEXPORT LRESULT FTYPE DRV_AlarmEnable(LONG DriverHandle,
  1660.                       LPT_AlarmEnable lpAlarmEnable);
  1661. FEXPORT LRESULT FTYPE DRV_AlarmCheck(LONG DriverHandle,
  1662.                       LPT_AlarmCheck lpAlarmCheck);
  1663. FEXPORT LRESULT FTYPE DRV_AlarmReset(LONG DriverHandle,
  1664.                       LPARAM chan);
  1665. FEXPORT LRESULT FTYPE DRV_WDTEnable(LONG DriverHandle,
  1666.                       LPT_WDTEnable lpWDTEnable);
  1667. FEXPORT LRESULT FTYPE DRV_WDTRefresh(LONG DriverHandle);
  1668. FEXPORT LRESULT FTYPE DRV_WDTReset(LONG DriverHandle);
  1669. FEXPORT LRESULT FTYPE DRV_TimerCountSetting(LONG DriverHandle,
  1670.   LPT_TimerCountSetting lpTimerCountSetting);
  1671. FEXPORT LRESULT FTYPE DRV_CounterPWMSetting(LONG DriverHandle,
  1672.                       LPT_CounterPWMSetting lpCounterPWMSetting);
  1673. FEXPORT LRESULT FTYPE DRV_CounterPWMEnable(LONG DriverHandle,
  1674.                       LPARAM Port);
  1675. FEXPORT LRESULT FTYPE DRV_DioTimerSetting(LONG DriverHandle,
  1676.   LPT_DioTimerSetting lpDioTimerSetting);
  1677. FEXPORT LRESULT FTYPE DRV_DICounterReset(LONG DriverHandle,
  1678.                       LPARAM counter);
  1679. FEXPORT LRESULT FTYPE DRV_EnableSyncAO(LONG DriverHandle, LPARAM Enable);
  1680. FEXPORT LRESULT FTYPE DRV_WriteSyncAO(LONG DriverHandle);
  1681. FEXPORT LRESULT FTYPE DRV_AOCurrentOut(LONG DriverHandle,
  1682.                       LPT_AOCurrentOut lpAOCurrentOut);
  1683. FEXPORT LRESULT FTYPE DRV_DeviceNumToDeviceName(DWORD BoardID, LPSTR ExpName);
  1684. FEXPORT LRESULT FTYPE DRV_GetFIFOSize(LONG DriverHandle, LONG far * lSize);
  1685. FEXPORT LRESULT FTYPE DRV_PWMStartRead(LONG DriverHandle, LPT_PWMStartRead lpPWMStartRead);
  1686. //Only for ADAM configuration
  1687. FEXPORT LRESULT FTYPE DRV_ADAMCounterSetHWConfig(LONG DriverHandle,
  1688.                       LPT_ADAMCounterSetHWConfig lpCounterSetHWConfig);
  1689. FEXPORT LRESULT FTYPE DRV_ADAMCounterGetHWConfig(LONG DriverHandle,
  1690.                       LPT_ADAMCounterGetHWConfig lpCounterGetHWConfig);
  1691. FEXPORT LRESULT FTYPE DRV_ADAMAISetHWConfig(LONG DriverHandle,
  1692.                       LPT_ADAMAISetHWConfig lpADAMAISetHWConfig);
  1693. FEXPORT LRESULT FTYPE DRV_ADAMAIGetHWConfig(LONG DriverHandle,
  1694.                       LPT_ADAMAIGetHWConfig lpADAMAIGetHWConfig);
  1695. FEXPORT LRESULT FTYPE DRV_ADAMAOSetHWConfig(LONG DriverHandle,
  1696.                       LPT_ADAMAOSetHWConfig lpADAMAOSetHWConfig);
  1697. FEXPORT LRESULT FTYPE DRV_ADAMAOGetHWConfig(LONG DriverHandle,
  1698.                       LPT_ADAMAOGetHWConfig lpADAMAOGetHWConfig);
  1699. // Direct IO Function Listing
  1700. FEXPORT LRESULT FTYPE DRV_outp(ULONG DeviceNum,
  1701.                       USHORT port, USHORT ByteData);
  1702. FEXPORT LRESULT FTYPE DRV_outpw(ULONG DeviceNum,
  1703.                       USHORT port, USHORT WordData);
  1704. FEXPORT LRESULT FTYPE DRV_inp(ULONG DeviceNum,
  1705.                       USHORT port, USHORT far * ByteData);
  1706. FEXPORT LRESULT FTYPE DRV_inpw(ULONG DeviceNum,
  1707.                       USHORT port, USHORT far * WordData);
  1708. // High speed function declaration
  1709. FEXPORT LRESULT FTYPE DRV_FAIWatchdogConfig(LONG DriverHandle,
  1710.                       LPT_FAIWatchdogConfig lpFAIWatchdogConfig);
  1711. FEXPORT LRESULT FTYPE DRV_FAIIntStart(LONG DriverHandle,
  1712.                       LPT_FAIIntStart lpFAIIntStart);
  1713. FEXPORT LRESULT FTYPE DRV_FAIIntScanStart(LONG DriverHandle,
  1714.                       LPT_FAIIntScanStart lpFAIIntScanStart);
  1715. FEXPORT LRESULT FTYPE DRV_FAIDmaStart(LONG DriverHandle,
  1716.                       LPT_FAIDmaStart lpFAIDmaStart);
  1717. FEXPORT LRESULT FTYPE DRV_FAIDmaScanStart(LONG DriverHandle,
  1718.                       LPT_FAIDmaScanStart lpFAIDmaScanStart);
  1719. FEXPORT LRESULT FTYPE DRV_FAIDualDmaStart(LONG DriverHandle,
  1720.                       LPT_FAIDualDmaStart lpFAIDualDmaStart);
  1721. FEXPORT LRESULT FTYPE DRV_FAIDualDmaScanStart(LONG DriverHandle,
  1722.                       LPT_FAIDualDmaScanStart lpFAIDualDmaScanStart);
  1723. FEXPORT LRESULT FTYPE DRV_FAIIntWatchdogStart(LONG DriverHandle,
  1724.                       LPT_FAIIntWatchdogStart lpFAIIntWatchdogStart);
  1725. FEXPORT LRESULT FTYPE DRV_FAIDmaWatchdogStart(LONG DriverHandle,
  1726.                       LPT_FAIDmaWatchdogStart lpFAIDmaWatchdogStart);
  1727. FEXPORT LRESULT FTYPE DRV_FAICheck(LONG DriverHandle,
  1728.                       LPT_FAICheck lpFAICheck);
  1729. FEXPORT LRESULT FTYPE DRV_FAIWatchdogCheck(LONG DriverHandle,
  1730.                       LPT_FAIWatchdogCheck lpFAIWatchdogCheck);
  1731. FEXPORT LRESULT FTYPE DRV_FAITransfer(LONG DriverHandle,
  1732.                       LPT_FAITransfer lpFAITransfer);
  1733. FEXPORT LRESULT FTYPE DRV_FAIStop(LONG DriverHandle);
  1734. FEXPORT LRESULT FTYPE DRV_FAOIntStart(LONG DriverHandle,
  1735.                       LPT_FAOIntStart lpFAOIntStart);
  1736. FEXPORT LRESULT FTYPE DRV_FAODmaStart(LONG DriverHandle,
  1737.                       LPT_FAODmaStart lpFAODmaStart);
  1738. FEXPORT LRESULT FTYPE DRV_FAOScale(LONG DriverHandle,
  1739.                       LPT_FAOScale lpFAOScale);
  1740. FEXPORT LRESULT FTYPE DRV_FAOLoad(LONG DriverHandle,
  1741.                       LPT_FAOLoad lpFAOLoad);
  1742. FEXPORT LRESULT FTYPE DRV_FAOCheck(LONG DriverHandle,
  1743.                       LPT_FAOCheck lpFAOCheck);
  1744. FEXPORT LRESULT FTYPE DRV_FAOStop(LONG DriverHandle);
  1745. FEXPORT LRESULT FTYPE DRV_ClearOverrun(LONG DriverHandle);
  1746. FEXPORT LRESULT FTYPE DRV_EnableEvent(LONG DriverHandle,
  1747.                       LPT_EnableEvent lpEnableEvent);
  1748. FEXPORT LRESULT FTYPE DRV_CheckEvent(LONG DriverHandle,
  1749.                       LPT_CheckEvent lpCheckEvent);
  1750. FEXPORT LRESULT FTYPE DRV_EnableCANEvent(LONG DriverHandle,
  1751.                       LPT_EnableCANEvent lpEnableCANEvent);
  1752. FEXPORT LRESULT FTYPE DRV_GetCANEventData(LONG DriverHandle,
  1753.                       LPT_GetCANEventData lpGetCANEventData);
  1754. FEXPORT LRESULT FTYPE DRV_AllocateDMABuffer(LONG DriverHandle,
  1755.                       LPT_AllocateDMABuffer lpAllocateDMABuffer);
  1756. FEXPORT LRESULT FTYPE DRV_FreeDMABuffer(LONG DriverHandle,
  1757.                       LPARAM buffer);
  1758. FEXPORT LRESULT FTYPE DRV_EnableEventEx(LONG DriverHandle,
  1759.                       LPT_EnableEventEx lpEnableEventEx);
  1760. FEXPORT LRESULT FTYPE DRV_FDITransfer(LONG DriverHandle,
  1761.                       LPT_FDITransfer lpFDITransfer);
  1762. FEXPORT LRESULT FTYPE DRV_FAIDmaExStart(LONG DriverHandle,
  1763.                       LPT_FAIDmaExStart lpFAIDmaExStart);
  1764. #ifdef __cplusplus
  1765. }
  1766. #endif
  1767. #endif