- Include File
C:\Program Files (x86)\IVI Foundation\IVI\Include
- Library File
C:\Program Files (x86)\IVI Foundation\IVI\Lib
- Examples
C:\Program Files (x86)\IVI Foundation\IVI\Drivers\ke37xx\Examples\C++
1 2 | #include "ke37xx.h" | cs |
1. 3706A Switching Multi-meter에 연결.
1 2 3 4 5 | ViStatus status = ke37xx_init ("TCPIP0::192.168.0.10::inst0::INSTR", VI_TRUE, VI_TRUE, &m_Session); if(status != KE37XX_SUCCESS) { return false; } | cs |
2. Scan Config 및 Scan List 생성.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | ViStatus status = 0; int nScanCount = 1; int nNumChannels = 420; int nBufferSize = nScanCount * nNumChannels; ViConstString ChannelList = "1001:5096"; // 3722 Module이 5개 설치된 경우. // 3706A Reset ---------------------------------- status = ke37xx_reset(m_Session); if(status != KE37XX_SUCCESS) { return false; } // Channel All Open --------------------------- status = ke37xx_OpenAllChannels(m_Session); if(status != KE37XX_SUCCESS) { return false; } // Scan Reset ----------------------------------- status = ke37xx_ResetScan(m_Session); if(status != KE37XX_SUCCESS) { return false; } // 측정 대이터를 저장할 Buffer 생성. status = ke37xx_CreateMeasurementBuffer ( m_Session, "MyBuf", nBufferSize); if(status != KE37XX_SUCCESS) { return false; } // Auto Ranging Turn Off ------------------------- bool bAutoRange = false; status = ke37xx_SetAttributeViBoolean(m_Session, VI_NULL, KE37XX_ATTR_AUTO_RANGE, bAutoRange); if(status != KE37XX_SUCCESS) { return false; } // Auto Range를 사용하지 않을 경우 Range를 설정해야한다. if(!bAutoRange) { // Range 300 ViReal64 dRange = 300; status = ke37xx_SetAttributeViReal64(m_Session, VI_NULL, KE37XX_ATTR_RANGE, dRange); if(status != KE37XX_SUCCESS) { return false; } } // Auto Zero Off. status = ke37xx_SetAttributeViInt32(m_Session, VI_NULL, KE37XX_ATTR_AUTO_ZERO, KE37XX_VAL_AUTO_ZERO_OFF); if(status != KE37XX_SUCCESS) { return false; } // Auto Delay On. status = ke37xx_SetAttributeViInt32(m_Session, VI_NULL, KE37XX_ATTR_AUTO_DELAY, KE37XX_VAL_AUTO_DELAY_ON); if(status != KE37XX_SUCCESS) { return false; } // Set the number of power line cycles 0.5 ViReal64 dNPLC = 0.5; // 1.0 ~ 0.001 status = ke37xx_SetAttributeViReal64(m_Session, VI_NULL, KE37XX_ATTR_NPLC, dNPLC); if(status != KE37XX_SUCCESS) { return false; } // Scan Count ( !주의, 중복 수에 맞게 Buffer Size도 증가되어야 한다.) status = ke37xx_SetAttributeViInt32( m_Session, VI_NULL, KE37XX_ATTR_SCAN_COUNT, nScanCount); if(status != KE37XX_SUCCESS) { return false; } // Measure Count int nMeasureCount = 1; status = ke37xx_SetAttributeViInt32( m_Session, VI_NULL, KE37XX_ATTR_SCAN_MEASURE_COUNT, nMeasureCount); if(status != KE37XX_SUCCESS) { return false; } // 스캔중인 스위치 연결 끊기 동작. status = ke37xx_SetAttributeViInt32( m_Session, VI_NULL, KE37XX_ATTR_SCAN_MODE, KE37XX_VAL_BREAK_BEFORE_MAKE); if(status != KE37XX_SUCCESS) { return false; } // 스캔이 시작되기 전에 릴레이를 조작하는 방법을 나타내는 모드를 설정합니다. status = ke37xx_SetAttributeViInt32( m_Session, VI_NULL, KE37XX_ATTR_SCAN_MODE_SPECIFIC , KE37XX_VAL_SCAN_MODE_OPEN_ALL ); if(status != KE37XX_SUCCESS) { return false; } // Scan Delay : 스캔의 고급 출력 트리거를 지정하는 경로를 만드는 데 걸린 최소 시간 (밀리 초)입니다. 실제 시간은 더 길 수 있습니다. ViReal64 dScanDelay_msec = 10; status = ke37xx_SetAttributeViReal64(m_Session, VI_NULL, KE37XX_ATTR_SCAN_DELAY, dScanDelay_msec); if(status != KE37XX_SUCCESS) { return false; } // Channel Delay : ChannelList에 지정된 채널에 대한 추가 지연 시간 (초)을 설정합니다. ViReal64 dChannelDelaySec = 0.05; // sec status = ke37xx_SetChannelDelay ( m_Session, "1001:5096", dChannelDelaySec); if(status != KE37XX_SUCCESS) { return false; } // Scan Configuration parameters ----------------- status = ke37xx_SetChannelConfiguration(m_Session, ChannelList, KE37XX_VAL_FUNCTION_DC_VOLTS); if(status != KE37XX_SUCCESS) { return false; } // 지금 까지 설정한 Config 값을 내 커스텀 Config에 저장시킨다. // DMM Custom Channel Configuration 생성. ViConstString sDmmConfig = "mydcvolts"; status = ke37xx_CreateConfiguration ( m_Session, sDmmConfig ); if(status != KE37XX_SUCCESS) { return false; } // DMM Custom Channel Configuration 설정. status = ke37xx_SetCustomChannelConfiguration(m_Session, "1001:5096", sDmmConfig); if(status != KE37XX_SUCCESS) { return false; } status = ke37xx_CreateScanList ( m_Session, ChannelList, sDmmConfig ); if(status != KE37XX_SUCCESS) { return false; } | cs |
3. Scan Start
1 2 3 4 5 | ViStatus status = status = ke37xx_ExecuteBackgroundScan ( m_Session, "MyBuf" ); if(status != KE37XX_SUCCESS) { return false; } | cs |
4. Scan Data Read
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ViStatus status = 0; ViBoolean CallerHasLock = 0; long nRetValActualSize = 0; double dBuff[410]; // Config 작성 시의 Buffer 크기와 동일하거나 크게 잡아야 한다. int nBuffSizeByte = sizeof(dBuff); ZeroMemory(dBuff, nBuffSizeByte); status = ke37xx_GetAllReadings ( m_Session, "MyBuf", nBuffSizeByte, dBuff, &nRetValActualSize ); if(status != KE37XX_SUCCESS) { return false; } | cs |
'Programming > Instrument' 카테고리의 다른 글
KEITHLEY 3706A Resource Name 생성 방법 (0) | 2019.02.12 |
---|