home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 September / CHIP_CD_1997_09_PL.iso / software / testsoft / labwind / demo.6 / main / include / EASYIO.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-11-12  |  21.2 KB  |  520 lines

  1.  
  2.  
  3.  
  4. /*============================================================================*/
  5. /*                        L a b W i n d o w s / C V I                         */
  6. /*----------------------------------------------------------------------------*/
  7. /*    Copyright (c) National Instruments 1987-1996.  All Rights Reserved.     */
  8. /*----------------------------------------------------------------------------*/
  9. /*                                                                            */
  10. /* Title:       easyio.h                                                      */
  11. /* Purpose:     Include file for LabWindows/CVI Easy I/O for DAQ Library      */
  12. /* Version:     4,10,4,1                                                      */
  13. /*                                                                            */
  14. /*============================================================================*/
  15.  
  16.  
  17. #ifndef _EASYIO_H_
  18. #define _EASYIO_H_
  19.  
  20. #include "cvidef.h"
  21.  
  22. // patch 401 for Mike J
  23. // This check determines if we are compiling for external WIN16 compiler
  24. #if (!defined(_NI_mswin16_)) &&  \
  25.      !(defined(_NI_mswin32_)||defined(__WIN32__)||defined(__NT__)||defined( _WIN32)||defined(WIN32))
  26.    #define _FOR_EXTERNAL_WIN16_
  27.    #define EASYIOFUNC __far __pascal
  28. #else
  29.    #define EASYIOFUNC CVIFUNC
  30. #endif
  31. // end patch
  32. #define ANALOG_INPUT   0
  33. #define ANALOG_OUTPUT  1
  34. #define DIGITAL_INPUT  2
  35. #define DIGITAL_OUTPUT 3
  36. #define DEMUXED_MODE 0           /* obsolete, replaced by GROUP_BY_CHANNEL */
  37. #define INTERLEAVED_MODE 1       /* obsolete, replaced by GROUP_BY_SCAN */
  38. #define GROUP_BY_CHANNEL 0
  39. #define GROUP_BY_SCAN 1
  40. #define CONSECUTIVE_MODE 1
  41. #define LATEST_MODE 3
  42. #define RELATIVE_TO_TRIGGER_MODE 4
  43. #define MAX_DEVICES 16
  44. #define NO_TRIGGER 0
  45. #define SW_ANALOG_TRIGGER 99
  46. #define HW_ANALOG_TRIGGER 1
  47. #define DIGITAL_TRIGGER_A 2
  48. #define DIGITAL_TRIGGER_AB 3
  49. #define SCAN_CLOCK_GATING 4
  50. #define ETS_TRIGGER 6
  51. #define POSITIVE_SLOPE 0
  52. #define NEGATIVE_SLOPE 1
  53. #define MULTITASKING_AWARE   1
  54. #define MULTITASKING_UNAWARE 0
  55.  
  56. #define MAX_CHANNEL_NAME_LENGTH 30
  57. #define ONE_COUNTER  0
  58. #define TWO_COUNTERS 1
  59. #define COUNT_UNTIL_TC 2
  60. #define COUNT_CONTINUOUSLY 3
  61. #define USE_COUNTER_SOURCE 0
  62. #define USE_INTERNAL_TIMEBASE 1
  63. #define COUNT_ON_RISING_EDGE 1
  64. #define COUNT_ON_FALLING_EDGE 2
  65. #define UNGATED_SOFTWARE_START 1
  66. #define COUNT_WHILE_GATE_HIGH  2
  67. #define COUNT_WHILE_GATE_LOW   3
  68. #define START_COUNTING_ON_RISING_EDGE 4
  69. #define START_COUNTING_ON_FALLING_EDGE 5
  70. #define RESTART_ON_EACH_RISING_EDGE 6
  71. #define RESTART_ON_EACH_FALLING_EDGE 7
  72. #define HIGH_PULSE 0
  73. #define LOW_PULSE 1
  74. #define HIGH_TOGGLE 2
  75. #define LOW_TOGGLE 3
  76. #define MEASURE_HIGH_PULSE_WIDTH 2
  77. #define MEASURE_LOW_PULSE_WIDTH 3
  78. #define MEASURE_PERIOD_BTW_RISING_EDGES 4
  79. #define MEASURE_PERIOD_BTW_FALLING_EDGES 5
  80. #define I_TOGGLE_ON_TC 0
  81. #define I_PROGRAMMABLE_ONE_SHOT 1
  82. #define I_RATE_GENERATOR 2
  83. #define I_SQUARE_WAVE_RATE_GENERATOR 3
  84. #define I_SOFTWARE_TRIGGERED_STROBE 4
  85. #define I_HARDWARE_TRIGGERED_STROBE 5
  86. #define I_READ 6
  87. #define I_RESET 7
  88. #define I_LOW_STATE 0
  89. #define I_HIGH_STATE 1
  90. #define I_BCD 0
  91. #define I_BINARY 1
  92.  
  93.  
  94. #define POSITIVE_POLARITY 1
  95. #define NEGATIVE_POLARITY 2
  96.  
  97.  
  98.  
  99.  
  100. #ifdef _CVI_
  101. #pragma EnableLibraryRuntimeChecking
  102. #endif
  103.  
  104. #ifdef __cplusplus
  105. extern "C" {
  106. #endif
  107.  
  108. // global patch 401 changed CVIFUNC to EASYIOFUNC
  109. char * EASYIOFUNC GetDAQErrorString (short error);
  110.  
  111. short EASYIOFUNC GetNumChannels (short device, char channelString[], short channelType, unsigned long *numChannels);
  112.  
  113. short EASYIOFUNC GetChannelIndices (short device, char channelString[], char channelSubString[], short channelType,
  114.                                  long channelIndices[]);
  115.  
  116. short EASYIOFUNC GetChannelNameFromIndex (short device, char channelString[], long index, short channelType, char channelName[]);
  117.  
  118. short EASYIOFUNC GetAILimitsOfChannel (short device, char channelString[], char singleChannel[], double initialHighLimit, 
  119.                                     double initialLowLimit, double *p_highLimit, double *p_lowLimit);
  120.  
  121.  
  122. short EASYIOFUNC GroupByChannel (double array[], long numberofScans, unsigned long groupSize);
  123.  
  124. short EASYIOFUNC AISampleChannel (short device, char channelString[], double upperLimit,
  125.                                double lowerLimit, double *voltage);
  126.  
  127. short EASYIOFUNC AISampleChannels (short device, char channelString[], double upperLimit,
  128.                                 double lowerLimit, double voltages[]);
  129.  
  130.  
  131. short EASYIOFUNC AIAcquireWaveforms (short device, char channelString[],
  132.                                   long numberOfSamplesPerChannel, double scanRate,
  133.                                   double upperLimit, double lowerLimit,
  134.                                   double *actualScanPeriod, short fillMode,
  135.                                   double waveform[]);
  136.  
  137. short EASYIOFUNC AIAcquireTriggeredWaveforms (short device, char channelString[],
  138.                                            long numberOfScans, double scanRate,
  139.                                            double upperLimit, double lowerLimit,
  140.                                            double *p_actualScanFreq, unsigned short triggerType, 
  141.                                            unsigned short edgeSlope, double level, 
  142.                                            char triggerSource[], long preTriggerScans, 
  143.                                            double timeLimit, short fillMode, double waveform[]);
  144.                             
  145.  
  146. short EASYIOFUNC AIStartAcquisition (short device, char channelString[], long bufferSize,
  147.                                   double scanRate, double highLimitvolts, double lowLimitvolts,
  148.                                   double *actualScanFreq, unsigned long *taskID);
  149.  
  150. short EASYIOFUNC AICheckAcquisition (unsigned long taskID, unsigned long *p_scanBacklog);
  151.  
  152.  
  153. short EASYIOFUNC AIReadAcquisition (unsigned long taskID, long scanstoRead, unsigned short readMode,
  154.                                  unsigned long *scanBacklog, short fillMode,
  155.                                  double waveforms[]);
  156.  
  157. short EASYIOFUNC AIClearAcquisition (unsigned long taskID);
  158.  
  159.  
  160. short EASYIOFUNC PlotLastAIWaveformsPopup (short device, double voltages[]);
  161.  
  162. short EASYIOFUNC AOUpdateChannel (short device, char channelString[], double voltage);
  163.  
  164. short EASYIOFUNC AOUpdateChannels (short device, char channelString[], double voltages[]);
  165.  
  166. short EASYIOFUNC AOGenerateWaveforms (short device, char channelString[],
  167.                                    double updatesSecond, long updatesChannel,
  168.                                    long iterations, double waveforms[],
  169.                                    unsigned long *taskID);
  170.  
  171. short EASYIOFUNC AOClearWaveforms (unsigned long taskID);
  172.  
  173. short EASYIOFUNC WriteToDigitalLine (short device, char portNumber[], short line,
  174.                                   short portWidth, long iteration, unsigned long lineState);
  175.  
  176. short EASYIOFUNC WriteToDigitalPort (short device, char portNumber[], short portWidth,
  177.                                   long iteration, unsigned long pattern);
  178.  
  179. short EASYIOFUNC ReadFromDigitalLine (short device, char portNumber[], short line,
  180.                                   short portWidth, long iteration, unsigned long *lineState);
  181.  
  182. short EASYIOFUNC ReadFromDigitalPort (short device, char portNumber[],
  183.                                    short portWidth, long iteration, unsigned long *p_pattern);
  184.  
  185. short EASYIOFUNC CounterMeasureFrequency (short device, char counter[],
  186.                                        unsigned short counterSize,
  187.                                        double gateWidthSampleTimeinSec,
  188.                                        double maxDelayBeforeGateSec,
  189.                                        unsigned short gateMode, double *actualGateWidth,
  190.                                        short *overflow, short *valid, short *timeout,
  191.                                        double *frequency);
  192.  
  193.  
  194. short EASYIOFUNC CounterEventOrTimeConfig(short device, char counter[], unsigned short counterSize, 
  195.                                        double sourceOrTimebase, unsigned short countLimitAction,
  196.                                        short sourceEdge, unsigned short gateMode, unsigned long *p_taskID);
  197.                                 
  198. short EASYIOFUNC ContinuousPulseGenConfig (short device, char counter[], double frequency,
  199.                                         double dutyCycle, unsigned short gateMode, 
  200.                                         unsigned short pulsePolarity, double *actualFrequency, 
  201.                                         double *actualDutyCycle, unsigned long *taskID);
  202.  
  203. short EASYIOFUNC DelayedPulseGenConfig (short device, char counter[],
  204.                                      double pulseDelay, double pulseWidth,
  205.                                      unsigned short timebaseSource, unsigned short gateMode,
  206.                                      unsigned short pulsePolarity, double *actualDelay,
  207.                                      double *actualPulseWidth, unsigned long *taskID);
  208.  
  209. short EASYIOFUNC FrequencyDividerConfig (short device, char counter[], double sourceTimebase,
  210.                                       double timebaseDivisor, unsigned short gateMode,
  211.                                       unsigned short outputBehavior, short sourceEdge,
  212.                                       unsigned long *taskID);
  213.  
  214. short EASYIOFUNC PulseWidthOrPeriodMeasConfig (short device, char counter[],
  215.                                             unsigned short typeOfMeasurement,
  216.                                             double sourceTimebase, unsigned long *taskID);
  217.  
  218.  
  219. short EASYIOFUNC CounterStart (unsigned long taskID);
  220. short EASYIOFUNC CounterRead (unsigned long taskID, long * count, short * overflow);
  221. short EASYIOFUNC CounterStop (unsigned long taskID);
  222.  
  223. short EASYIOFUNC ICounterControl (short device, short counter, short controlCode,
  224.                                unsigned short count, short binaryorBCD,
  225.                                short outputState, unsigned short *readValue);
  226.  
  227. void EASYIOFUNC SetEasyIOMultitaskingMode (int Multitasking_Mode);
  228.  
  229.  
  230. enum DAQErrors
  231. {
  232.     cmdSyntaxErr                 = -9000,
  233.     cmdLimitSyntaxErr            = -9001,
  234.     cmdInterChannelRateSyntaxErr = -9002,
  235.     
  236.     syntaxErr                    = -10001,
  237.     semanticsErr                 = -10002,
  238.     invalidValueErr              = -10003,
  239.     valueConflictErr             = -10004,
  240.     badDeviceErr                 = -10005,
  241.     badLineErr                   = -10006,
  242.     badChanErr                   = -10007,
  243.     badGroupErr                  = -10008,
  244.     badCounterErr                = -10009,
  245.     badCountErr                  = -10010,
  246.     badIntervalErr               = -10011,
  247.     badRangeErr                  = -10012,
  248.     badRangeWarn                 =  10012,
  249.     badErrorCodeErr              = -10013,
  250.     groupTooLargeErr             = -10014,
  251.     badTimeLimitErr              = -10015,
  252.     badReadCountErr              = -10016,
  253.     badReadModeErr               = -10017,
  254.     badReadOffsetErr             = -10018,
  255.     badClkFrequencyErr           = -10019,
  256.     badTimebaseErr               = -10020,
  257.     badLimitsErr                 = -10021,
  258.     badWriteCountErr             = -10022,
  259.     badWriteModeErr              = -10023,
  260.     badWriteOffsetErr            = -10024,
  261.     limitsOutOfRangeWarn         =  10025,
  262.     limitsOutOfRangeErr          = -10025,
  263.     badInputBufferSpecification  = -10026,
  264.     badDAQEventErr               = -10027,
  265.     badFilterCutoffErr           = -10028,
  266.     obsoleteFunctionErr          = -10029,
  267.     badBaudRateErr               = -10030,
  268.     badChassisIDErr              = -10031,
  269.     badModuleSlotErr             = -10032,
  270.     invalidWinHandleErr          = -10033,
  271.     noSuchMessageErr             = -10034,
  272.     
  273.     badGainErr                   = -10080,
  274.     badPretrigCountErr           = -10081,
  275.     badPosttrigCountErr          = -10082,
  276.     badTrigModeErr               = -10083,
  277.     badTrigCountErr              = -10084,
  278.     badTrigRangeErr              = -10085,
  279.     badExtRefErr                 = -10086,
  280.     badTrigTypeErr               = -10087,
  281.     badTrigLevelErr              = -10088,
  282.     badTotalCountErr             = -10089,
  283.     badRPGErr                    = -10090,
  284.     badIterationsErr             = -10091,
  285.     lowScanIntervalErr           = -10092,
  286.     fifoModeErr                  = -10093,
  287.  
  288.     badPortWidthErr              = -10100,
  289.  
  290.     gpctrBadApplicationErr       = -10120,
  291.     gpctrBadCounterNumberErr     = -10121,
  292.     gpctrBadParamValueErr        = -10122,
  293.     gpctrBadParamIdErr           = -10123,
  294.     gpctrBadEntityIdErr          = -10124,
  295.     gpctrBadActionErr            = -10125,
  296.  
  297.     EEPROMreadErr                = -10200, 
  298.     EEPROMwriteErr               = -10201, 
  299.  
  300.     noDriverErr                  = -10240,
  301.     oldDriverErr                 = -10241,
  302.     functionNotFoundErr          = -10242,
  303.     configFileErr                = -10243,
  304.     deviceInitErr                = -10244,
  305.     osInitErr                    = -10245,
  306.     communicationsErr            = -10246,
  307.     cmosConfigErr                = -10247,
  308.     dupAddressErr                = -10248,
  309.     intConfigErr                 = -10249,
  310.     dupIntErr                    = -10250,
  311.     dmaConfigErr                 = -10251,
  312.     dupDMAErr                    = -10252,
  313.     switchlessBoardErr           = -10253,
  314.     DAQCardConfigErr             = -10254,
  315.     remoteChassisDriverInitErr   = -10255,
  316.     comPortOpenErr               = -10256,
  317.     baseAddressErr               = -10257,
  318.     dmaChannel1Err               = -10258,
  319.     dmaChannel2Err               = -10259,
  320.  
  321.     noConnectErr                 = -10340,
  322.     badConnectErr                = -10341,
  323.     multConnectErr               = -10342,
  324.     SCXIConfigErr                = -10343,
  325.     chassisNotSynchedErr         = -10344,
  326.     chassisMemAllocErr           = -10345,
  327.     badPacketErr                 = -10346,
  328.     chassisCommunicationErr      = -10347,
  329.     waitingForReprogErr          = -10348,
  330.     SCXIModuleTypeConflictErr    = -10349,
  331.  
  332.     DSPInitErr                   = -10360,
  333.     badScanListErr               = -10370,
  334.     userOwnedRsrcErr             = -10400,
  335.     unknownDeviceErr             = -10401,
  336.     unknownDeviceErrOld        = -60,
  337.     deviceNotFoundErr            = -10402,
  338.     deviceSupportErr             = -10403,
  339.     noLineAvailErr               = -10404,
  340.     noChanAvailErr               = -10405,
  341.     noGroupAvailErr              = -10406,
  342.     lineBusyErr                  = -10407,
  343.     chanBusyErr                  = -10408,
  344.     groupBusyErr                 = -10409,
  345.     relatedLCGBusyErr            = -10410,
  346.     counterBusyErr               = -10411,
  347.     noGroupAssignErr             = -10412,
  348.     groupAssignErr               = -10413,
  349.     reservedPinErr               = -10414,
  350.     externalMuxSupportErr        = -10415,
  351.     DSPDataPathBusyErr           = -10416,
  352.     SCXIModuleNotSupportedErr    = -10417,
  353.  
  354.     sysOwnedRsrcErr              = -10440,
  355.     memConfigErr                 = -10441,
  356.     memDisabledErr               = -10442,
  357.     memAlignmentErr              = -10443,
  358.     memFullErr                   = -10444,
  359.     memLockErr                   = -10445,
  360.     memPageErr                   = -10446,
  361.     memPageLockErr               = -10447,
  362.     stackMemErr                  = -10448,
  363.     cacheMemErr                  = -10449,
  364.     physicalMemErr               = -10450,
  365.     virtualMemErr                = -10451,
  366.     noIntAvailErr                = -10452,
  367.     intInUseErr                  = -10453,
  368.     noDMACErr                    = -10454,
  369.     noDMAAvailErr                = -10455,
  370.     DMAInUseErr                  = -10456,
  371.     badDMAGroupErr               = -10457,
  372.     diskFullErr                  = -10458,
  373.     DLLInterfaceErr              = -10459,
  374.     interfaceInteractionErr      = -10460,
  375.  
  376.     muxMemFullErr                = -10480,
  377.     bufferNotInterleavedErr      = -10481,
  378.  
  379.     invalidDSPhandleErr          = -10560,
  380.     noSetupErr                   = -10600,
  381.     multSetupErr                 = -10601,
  382.     noWriteErr                   = -10602,
  383.     groupWriteErr                = -10603,
  384.     activeWriteErr               = -10604,
  385.     endWriteErr                  = -10605,
  386.     notArmedErr                  = -10606,
  387.     armedErr                     = -10607,
  388.     noTransferInProgWarn         =  10608,
  389.     noTransferInProgErr          = -10608,
  390.     transferInProgErr            = -10609,
  391.     transferPauseErr             = -10610,
  392.     badDirOnSomeLinesErr         = -10611,
  393.     badLineDirErr                = -10612,
  394.     badChanDirErr                = -10613,
  395.     badGroupDirErr               = -10614,
  396.     masterClkErr                 = -10615,
  397.     slaveClkErr                  = -10616,
  398.     noClkSrcErr                  = -10617,
  399.     badClkSrcErr                 = -10618,
  400.     multClkSrcErr                = -10619,
  401.     noTrigErr                    = -10620,
  402.     badTrigErr                   = -10621,
  403.     preTrigErr                   = -10622,
  404.     postTrigErr                  = -10623,
  405.     delayTrigErr                 = -10624,
  406.     masterTrigErr                = -10625,
  407.     slaveTrigErr                 = -10626,
  408.     noTrigDrvErr                 = -10627,
  409.     multTrigDrvErr               = -10628,
  410.     invalidOpModeErr             = -10629,
  411.     invalidReadErr               = -10630,
  412.     noInfiniteModeErr            = -10631,
  413.     someInputsIgnoredErr         = -10632,
  414.     invalidRegenModeErr          = -10633,
  415.     noContTransferInProgErr      = -10634,
  416.     invalidSCXIOpModeErr         = -10635,
  417.     noContWithSynchErr           = -10636,
  418.     bufferAlreadyConfigErr       = -10637,
  419.     badChanGainErr               = -10680,
  420.     badChanRangeErr              = -10681,
  421.     badChanPolarityErr           = -10682,
  422.     badChanCouplingErr           = -10683,
  423.     badChanInputModeErr          = -10684,
  424.     clkExceedsBrdsMaxConvRate    = -10685,
  425.     scanListInvalidErr           = -10686,
  426.     bufferInvalidErr             = -10687,
  427.     noTrigEnabledErr             = -10688,
  428.     digitalTrigBErr              = -10689,
  429.     digitalTrigAandBErr          = -10690,
  430.     extConvRestrictionErr        = -10691,
  431.     chanClockDisabledErr         = -10692,
  432.     extScanClockErr              = -10693,
  433.     unsafeSamplingFreqErr        = -10694,
  434.     DMAnotAllowedErr             = -10695,
  435.     multiRateModeErr             = -10696,
  436.     rateNotSupportedErr          = -10697,
  437.     timebaseConflictErr          = -10698,
  438.     polarityConflictErr          = -10699,
  439.     signalConflictErr            = -10700,
  440.     noLaterUpdateErr             = -10701,
  441.     prePostTriggerErr            = -10702,
  442.  
  443.     noHandshakeModeErr           = -10710,
  444.  
  445.     noEventCtrErr                = -10720,
  446.  
  447.     SCXITrackHoldErr             = -10740,
  448.  
  449.     sc2040InputModeErr           = -10780,
  450.     outputTypeMustBeVoltageErr   = -10781,
  451.     sc2040HoldModeErr            = -10782,
  452.     calConstPolarityConflictErr  = -10783,
  453.  
  454.     timeOutErr                   = -10800,
  455.     timeOutWarn                  =  10800,
  456.     calibrationErr               = -10801,
  457.     dataNotAvailErr              = -10802,
  458.     transferStoppedErr           = -10803,
  459.     earlyStopErr                 = -10804,
  460.     overRunErr                   = -10805,
  461.     noTrigFoundErr               = -10806,
  462.     earlyTrigErr                 = -10807,
  463.     LPTCommunicationErr          = -10808,
  464.     gateSignalErr                = -10809,
  465.     internalDriverErr            = -10810,
  466.     internalKernelErr            = -10811,
  467.  
  468.     softwareErr                  = -10840,
  469.     firmwareErr                  = -10841,
  470.     hardwareErr                  = -10842,
  471.     underFlowErr                 = -10843,
  472.     underWriteErr                = -10844,
  473.     overFlowErr                  = -10845,
  474.     overWriteErr                 = -10846,
  475.     dmaChainingErr               = -10847,
  476.     noDMACountAvailErr           = -10848,
  477.     openFileErr                  = -10849,
  478.     closeFileErr                 = -10850,
  479.     fileSeekErr                  = -10851,
  480.     readFileErr                  = -10852,
  481.     writeFileErr                 = -10853,
  482.     miscFileErr                  = -10854,
  483.     osUnsupportedErr             = -10855,
  484.     osErr                        = -10856,
  485.  
  486.     updateRateChangeErr          = -10880,
  487.     partialTransferCompleteErr   = -10881,
  488.     daqPollDataLossErr           = -10882,
  489.     wfmPollDataLossErr           = -10883,
  490.     pretrigReorderErr            = -10884,
  491.  
  492.     gpctrDataLossErr             = -10920,
  493.  
  494.     chassisResponseTimeoutErr    = -10940,
  495.     reprogrammingFailedErr       = -10941,
  496.     invalidResetSignatureErr     = -10942,
  497. };
  498.  
  499. /********            Low Level Functions          ********/
  500.  
  501. short EASYIOFUNC DIOPortConfig (short device, char portNumber[], 
  502.                             short portWidth, long lineDirMap, 
  503.                             unsigned long *taskID);
  504.  
  505. short EASYIOFUNC DIOPortRead (unsigned long taskID, long lineMask, 
  506.                      unsigned long *pattern);
  507.  
  508. short EASYIOFUNC DIOPortWrite (unsigned long taskID, unsigned long pattern, 
  509.                      long lineMask);
  510.  
  511. /*****************************************************************/
  512.  
  513.  
  514.  
  515. #ifdef __cplusplus
  516. }
  517. #endif
  518.  
  519. #endif /* _H */
  520.