VISAEXT.H
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:6k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*---------------------------------------------------------------------------*/
  2. /* Distributed by Agilent Technologies.                                      */
  3. /*                                                                           */
  4. /* Do not modify the contents of this file.                                  */
  5. /*---------------------------------------------------------------------------*/
  6. /*                                                                           */
  7. /* Title   : VISAEXT.H                                                       */
  8. /* Purpose : Include file for the VISA Extension Library                     */
  9. /*                                                                           */
  10. /*---------------------------------------------------------------------------*/
  11. #ifndef __VISAEXT_HEADER__
  12. #define __VISAEXT_HEADER__
  13. #if defined(__cplusplus) || defined(__cplusplus__)
  14.    extern "C" {
  15. #endif
  16. /* Use BeginMacro to give a starting bracket {, allocate the array, and
  17.    record the session handle.
  18. */
  19. typedef struct {
  20.    ViUInt16     command;
  21.    ViAddr       address;
  22.    ViUInt32     parm1;
  23.    ViUInt32     parm2;
  24. } ViMacroExtElem, *PViMacroExtElem;
  25. #define VI_MACROEXT_DELAY          (0x0001)
  26. #define VI_MACROEXT_POLLSTAT16     (0x0010)
  27. #define VI_MACROEXT_POKE8          (0x0020)
  28. #define VI_MACROEXT_POKE16         (0x0021)
  29. #define VI_MACROEXT_POKE32         (0x0022)
  30. #define VI_MACROEXT_READMODWRITE16 (0x0030)
  31. #define VI_MACROEXT_PEEK8          (0x0040)
  32. #define VI_MACROEXT_PEEK16         (0x0041)
  33. #define VI_MACROEXT_PEEK32         (0x0042)
  34. #define VI_MACROEXT_SESSION        (0xfffe)
  35. #define VI_MACROEXT_END            (0xffff)
  36. #define MAX_MACRO_ELEMENTS         (16)
  37. #define viMacroExtBegin(session) 
  38.    { 
  39.       ViMacroExtElem macroArray[MAX_MACRO_ELEMENTS + 1]; 
  40.       ViUInt32 whereMacroNow = 1; 
  41.       macroArray[0].command  = VI_MACROEXT_SESSION; 
  42.       macroArray[0].address  = 0; 
  43.       macroArray[0].parm1    = session; 
  44.       macroArray[0].parm2    = 0;
  45. /* Use this function to 'reset' the macro and begin a new one
  46.  */
  47. #define viMacroExtReset() 
  48.      (whereMacroNow = 1, 
  49.       VI_SUCCESS);
  50. /* Use these macro-functions to build the array
  51. */
  52. #define viMacroExtDelay(uSec) 
  53.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  54.       macroArray[whereMacroNow].command = VI_MACROEXT_DELAY, 
  55.       macroArray[whereMacroNow].address = 0, 
  56.       macroArray[whereMacroNow].parm1   = uSec, 
  57.       macroArray[whereMacroNow].parm2   = 0, 
  58.       whereMacroNow++, 
  59.       VI_SUCCESS 
  60.    : 
  61.       VI_ERROR_INV_SETUP;
  62. #define viMacroExtPollStatus16(addrOffset, andMask, cmpValue) 
  63.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  64.       macroArray[whereMacroNow].command = VI_MACROEXT_POLLSTAT16, 
  65.       macroArray[whereMacroNow].address = addrOffset, 
  66.       macroArray[whereMacroNow].parm1   = andMask, 
  67.       macroArray[whereMacroNow].parm2   = cmpValue, 
  68.       whereMacroNow++, 
  69.       VI_SUCCESS 
  70.    : 
  71.       VI_ERROR_INV_SETUP;
  72. #define viMacroExtPeek8(addrOffset, pValue) 
  73.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  74.       macroArray[whereMacroNow].command = VI_MACROEXT_PEEK8, 
  75.       macroArray[whereMacroNow].address = addrOffset, 
  76.       macroArray[whereMacroNow].parm1   = (unsigned long)pValue, 
  77.       macroArray[whereMacroNow].parm2   = 0, 
  78.       whereMacroNow++, 
  79.       VI_SUCCESS 
  80.    : 
  81.       VI_ERROR_INV_SETUP;
  82. #define viMacroExtPeek16(addrOffset, pValue) 
  83.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  84.       macroArray[whereMacroNow].command = VI_MACROEXT_PEEK16, 
  85.       macroArray[whereMacroNow].address = addrOffset, 
  86.       macroArray[whereMacroNow].parm1   = (unsigned long)pValue, 
  87.       macroArray[whereMacroNow].parm2   = 0, 
  88.       whereMacroNow++, 
  89.       VI_SUCCESS 
  90.    : 
  91.       VI_ERROR_INV_SETUP;
  92. #define viMacroExtPeek32(addrOffset, pValue) 
  93.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  94.       macroArray[whereMacroNow].command = VI_MACROEXT_PEEK32, 
  95.       macroArray[whereMacroNow].address = addrOffset, 
  96.       macroArray[whereMacroNow].parm1   = (unsigned long)pValue, 
  97.       macroArray[whereMacroNow].parm2   = 0, 
  98.       whereMacroNow++, 
  99.       VI_SUCCESS 
  100.    : 
  101.       VI_ERROR_INV_SETUP;
  102. #define viMacroExtPoke8(addrOffset, value) 
  103.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  104.       macroArray[whereMacroNow].command = VI_MACROEXT_POKE8, 
  105.       macroArray[whereMacroNow].address = addrOffset, 
  106.       macroArray[whereMacroNow].parm1   = value, 
  107.       macroArray[whereMacroNow].parm2   = 0, 
  108.       whereMacroNow++, 
  109.       VI_SUCCESS 
  110.    : 
  111.       VI_ERROR_INV_SETUP;
  112. #define viMacroExtPoke16(addrOffset, value) 
  113.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  114.       macroArray[whereMacroNow].command = VI_MACROEXT_POKE16, 
  115.       macroArray[whereMacroNow].address = addrOffset, 
  116.       macroArray[whereMacroNow].parm1   = value, 
  117.       macroArray[whereMacroNow].parm2   = 0, 
  118.       whereMacroNow++, 
  119.       VI_SUCCESS 
  120.    : 
  121.       VI_ERROR_INV_SETUP;
  122. #define viMacroExtPoke32(addrOffset, value) 
  123.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  124.       macroArray[whereMacroNow].command = VI_MACROEXT_POKE32, 
  125.       macroArray[whereMacroNow].address = addrOffset, 
  126.       macroArray[whereMacroNow].parm1   = value, 
  127.       macroArray[whereMacroNow].parm2   = 0, 
  128.       whereMacroNow++, 
  129.       VI_SUCCESS 
  130.    : 
  131.       VI_ERROR_INV_SETUP;
  132. #define viMacroExtReadModWrite16(addrOffset, andMask, orMask) 
  133.    (whereMacroNow < MAX_MACRO_ELEMENTS) ? 
  134.       macroArray[whereMacroNow].command = VI_MACROEXT_READMODWRITE16, 
  135.       macroArray[whereMacroNow].address = addrOffset, 
  136.       macroArray[whereMacroNow].parm1   = andMask, 
  137.       macroArray[whereMacroNow].parm2   = orMask, 
  138.       whereMacroNow++, 
  139.       VI_SUCCESS 
  140.    : 
  141.       VI_ERROR_INV_SETUP;
  142. /* Now it's time to go to work.
  143. */
  144. #define viMacroExtSendNow() 
  145.    viMacroExt(macroArray[0].parm1, macroArray, whereMacroNow);
  146.       
  147. #define viMacroExtEnd() 
  148.    }
  149. ViStatus _VI_FUNC  viMacroExt(ViSession vi, ViMacroExtElem macroArray[], ViUInt32 size);
  150. #if defined(__cplusplus) || defined(__cplusplus__)
  151.    }
  152. #endif
  153. #endif // __VISAEXT_HEADER__