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

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   DCS_ctrl.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  DC source control function source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  *
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. #include <vcl.h>
  66. #ifndef HP661X_INCLUDE
  67. #include "hp661x.h"
  68. #endif
  69. #ifndef hp663x2_INCLUDE
  70. #include "hp663x2.h"
  71. #endif
  72. #ifndef hpe3631a_INCLUDE
  73. #include "hpe3631a.h"
  74. #endif
  75. #pragma hdrstop
  76. #ifndef  _MFSETUPUTIL_H_
  77. #include "mfsetuputil.h"
  78. #endif
  79. // equipment
  80. #ifndef  _DCS_COMMON_H_
  81. #include "dcs_common.h"
  82. #endif
  83. #ifndef  _DCS_CTRL_H_
  84. #include "dcs_ctrl.h"
  85. #endif
  86. #ifndef  _KEITHLEY_2306_H_
  87. #include "keithley_2306.h"
  88. #endif
  89. bool IS_AgilentPowerSupply_INITIALISE = false;
  90. //===========================================================================
  91. CDCSCTRL::CDCSCTRL( void )
  92. {
  93. }
  94. //---------------------------------------------------------------------------
  95. CDCSCTRL::~CDCSCTRL()
  96. {
  97. }
  98. //=============================================================================
  99. bool CDCSCTRL::DCS_Init(S_DCS *p_dcs)
  100. {
  101.     if( p_dcs->device_type == AGILENT_661x )
  102.     {
  103.         if( hp661x_init( p_dcs->ADD.c_str(), 0, 0, &(p_dcs->vi) ) != VI_SUCCESS )
  104.         {
  105.             p_dcs->vi = NULL;
  106.             return false;
  107.         }
  108.     }
  109.     else if( p_dcs->device_type == AGILENT_663x2 )
  110.     {
  111.         if( hp663x2_init(p_dcs->ADD.c_str(), 0, 0, &(p_dcs->vi) ) != VI_SUCCESS )
  112.         {
  113.             p_dcs->vi = NULL;
  114.             return false;
  115.         }
  116.     }
  117.     else if( p_dcs->device_type == AGILENT_E3631A )
  118.     {
  119.         if( hpe3631a_init(p_dcs->ADD.c_str(), 0, 0, &(p_dcs->vi) ) != VI_SUCCESS )
  120.         {
  121.             p_dcs->vi = NULL;
  122.             return false;
  123.         }
  124.     }
  125.     else if( p_dcs->device_type == KEITHLEY_2306 )
  126.     {
  127.      if( kei2306_init(p_dcs->ADD.c_str(), &(p_dcs->RM), 0, 0, &(p_dcs->vi) ) != VI_SUCCESS )
  128.         {
  129.             p_dcs->vi = NULL;
  130.             return false;
  131.         } 
  132.     }
  133.     IS_AgilentPowerSupply_INITIALISE = true;
  134.     return true;
  135. }
  136. //--------------------------------------------------------------------------
  137. bool CDCSCTRL::DCS_outputVoltCurr( S_DCS *p_dcs, ViReal64 voltLev, ViReal64 currLev)
  138. {
  139.     if( p_dcs->device_type == AGILENT_661x )
  140.     {
  141.         if( hp661x_outputVoltCurr( p_dcs->vi, voltLev, currLev ) != VI_SUCCESS )
  142.         {
  143.             return false;
  144.         }
  145.     }
  146.     else if( p_dcs->device_type == AGILENT_663x2 )
  147.     {
  148.         if( hp663x2_outputVoltCurr(p_dcs->vi, voltLev, currLev) != VI_SUCCESS )
  149.         {
  150.             return false;
  151.         }
  152.     }
  153.     else if( p_dcs->device_type == AGILENT_E3631A )
  154.     {
  155.         if( hpe3631a_current(p_dcs->vi, hpe3631a_VOLT_INST1, currLev) != VI_SUCCESS )
  156.         {
  157.             return false;
  158.         }
  159.         if( hpe3631a_voltage(p_dcs->vi, hpe3631a_VOLT_INST1, voltLev) != VI_SUCCESS )
  160.         {
  161.             return false;
  162.         }
  163.     }
  164.     else if( p_dcs->device_type == KEITHLEY_2306 )
  165.     {
  166.         if( kei2306_outputVoltCurr( p_dcs->vi, voltLev, currLev) != VI_SUCCESS )
  167.         {
  168.             return false;
  169.         }
  170.     }
  171.     return true;
  172. }
  173. //--------------------------------------------------------------------------
  174. bool CDCSCTRL::DCS_measureVolt( S_DCS *p_dcs, ViReal64 &voltLev )
  175. {
  176.     if( p_dcs->device_type == AGILENT_661x )
  177.     {
  178.         if( hp661x_measureVolt( p_dcs->vi, &voltLev ) != VI_SUCCESS )
  179.         {
  180.             return false;
  181.         }
  182.     }
  183.     else if ( p_dcs->device_type == AGILENT_663x2 )
  184.     {
  185.        if( hp663x2_measureVolt( p_dcs->vi, HP663X2_MEAS_DC, &voltLev ) != VI_SUCCESS )
  186.        {
  187.            return false;
  188.        }
  189.     }
  190.     else if( p_dcs->device_type == AGILENT_E3631A )
  191.     {
  192.         if( hpe3631a_measureVoltage_Q( p_dcs->vi, hpe3631a_VOLT_MEAS1, &voltLev ) != VI_SUCCESS )
  193.         {
  194.             return false;
  195.         }
  196.     }
  197.     else if( p_dcs->device_type == KEITHLEY_2306 )
  198.     {
  199.         if( kei2306_measureVolt( p_dcs->vi, &voltLev ) != VI_SUCCESS )
  200.         {
  201.             return false;
  202.         }
  203.     }
  204.     return true;
  205. }
  206. //--------------------------------------------------------------------------
  207. bool CDCSCTRL::DCS_close( S_DCS *p_dcs )
  208. {
  209.     if( p_dcs->vi == NULL )  return true;
  210.     if( p_dcs->device_type == AGILENT_661x )
  211.     {
  212.         if( hp661x_close(p_dcs->vi) != VI_SUCCESS )
  213.         {
  214.             return false;
  215.         }
  216.     }
  217.     else if( p_dcs->device_type == AGILENT_663x2 )
  218.     {
  219.         if( hp663x2_close(p_dcs->vi) != VI_SUCCESS )
  220.         {
  221.             return false;
  222.         }
  223.     }
  224.     else if( p_dcs->device_type == AGILENT_E3631A )
  225.     {
  226.         if( hpe3631a_close(p_dcs->vi) != VI_SUCCESS )
  227.         {
  228.             return false;
  229.         }
  230.     }
  231.     else if( p_dcs->device_type == KEITHLEY_2306 )
  232.     {
  233.         if(  kei2306_close( p_dcs->RM, p_dcs->vi ) != VI_SUCCESS )
  234.         {
  235.             return false;
  236.         }
  237.     }
  238.     p_dcs->vi = NULL;
  239.     
  240.     return true;
  241. }
  242. //===========================================================================
  243. //////////////////////////    string      ///////////////////////////////////
  244. //===========================================================================
  245. //---------------------------------------------------------------------------
  246. int CDCSCTRL::DCS_StringToDeviceType( AnsiString as_str )
  247. {
  248.     int device_type;
  249.     if( as_str.AnsiCompareIC(AGILENT_661x_STR) == 0 )
  250.     {
  251.         device_type = AGILENT_661x;
  252.     }
  253.     else if( as_str.AnsiCompareIC(AGILENT_663x2_STR) == 0 )
  254.     {
  255.         device_type = AGILENT_663x2;
  256.     }
  257.     else if( as_str.AnsiCompareIC(AGILENT_E3631A_STR) == 0 )
  258.     {
  259.         device_type = AGILENT_E3631A;
  260.     }
  261.     else
  262.     {
  263.         device_type = KEITHLEY_2306;
  264.     }
  265.     return device_type;    
  266. }
  267. //---------------------------------------------------------------------------
  268. AnsiString CDCSCTRL::DCS_ReadGPIBAddress( S_DCS *p_dcs )
  269. {
  270.     AnsiString as_addr = "GPIB0::5::INSTR";
  271.     switch( p_dcs->device_type )
  272.     {
  273.        case AGILENT_661x:
  274.             as_addr = read_661x_GPIB_Address( "MF_setup.txt", Application->ExeName );
  275.        break;
  276.        case AGILENT_663x2:
  277.             as_addr = read_663x2_GPIB_Address( "MF_setup.txt", Application->ExeName );
  278.        break;
  279.        case AGILENT_E3631A:
  280.             as_addr = read_E3631A_GPIB_Address( "MF_setup.txt", Application->ExeName );
  281.        break;
  282.        case KEITHLEY_2306:
  283.             as_addr = read_Keithley2306_GPIB_Address( "MF_setup.txt", Application->ExeName );
  284.        break;
  285.      }
  286.      return as_addr;
  287. }