// =====================================================================
//  $Id: TRs232cKeithley2400Module.cc,v 1.5 2004/03/07 10:30:31 goiwai Exp $
//  $Name: CLDAQ-1-14-06 $
//  $Log: TRs232cKeithley2400Module.cc,v $
//  Revision 1.5  2004/03/07 10:30:31  goiwai
//  ROOTに組みこむためのおまじないマクロを埋めこみました。
//  全てにおいて完全に動作するわけではありません。
//
//  Revision 1.4  2003/10/06 17:02:40  goiwai
//  *** empty log message ***
//
//  Revision 1.3  2003/07/30 16:19:10  goiwai
//  ファイルにコミットログをつけることにしました.
//
// =====================================================================
#include "TRs232cKeithley2400Module.hh"

TRs232cKeithley2400Module::TRs232cKeithley2400Module( const Tstring devfile, Tint nchannel )
  : TRs232cModule( devfile, nchannel )
{;}

TRs232cKeithley2400Module::TRs232cKeithley2400Module( Tint nchannel, Tstring devfile )
  : TRs232cModule( nchannel, devfile )
{;}

TRs232cKeithley2400Module::TRs232cKeithley2400Module( const TRs232cKeithley2400Module& right )
  : TRs232cModule( right )
{;}

TRs232cKeithley2400Module::~TRs232cKeithley2400Module()
{;}

Tvoid TRs232cKeithley2400Module::defineClearMethod( Tint channel )
{
  //エラーキューをクリアする
  Write( "*CLS" );
  return;
}

Tvoid TRs232cKeithley2400Module::defineUpdateMethod( Tint channel )
{
  Clear();
  return;
}

Tvoid TRs232cKeithley2400Module::defineInitializeMethod( Tint channel )
{
  //デフォルト設定に戻す
  Write( "*RST" );

  //BEEP OFF
  //Write( ":SYST:BEEP OFF" );



  //MANUAL抵抗測定モード
  Write( ":SENS:RES:RANG:AUTO OFF" );

  //MANUAL抵抗測定モード
  Write( ":SENS:RES:MODE MAN" );

  // SOURCE
  Write( ":SOUR:FUNC CURR" );

  Write( ":SOUR:CURR:MODE FIX" );

  // Isrcを100μAに
  Write( ":SOUR:CURR:LEV 100e-6" );

  // 電圧コンプライアンスを2V
  Write( ":SENS:VOLT:PROT 2" );

  //センサの種類を定義シングルクオートでかこまねばならない
  Write( ":SENS:FUNC 'RES'" );

  //2000Ωレンジ
  Write( ":SENS:RES:RANG 2000" );

  // 2線測定
  Write( ":SYST:RSEN OFF" );

  //出力をON (前面のボタン)
  Write( ":OUTP ON" );

  //積分速度をPLC単位で設定
  //Write( ":SENS:RES:NPLC 1" );

  //積分速度を秒単位で設定
  //Write( ":SENS:RES:APER 1" );

  //レンジ切替え
  //Write( "SENS:RES:RANG 120e6" );

  //精度選択
  //Write( "SENS:RES:DIG 5" );

  //AUTOレンジON
  //Write( "SENS:RES:RANG:AUTO ON" );

  //データ要素指定
  Write( ":FORM:ELEM RES" );

  return;
}

Tvoid TRs232cKeithley2400Module::defineReadMethod( Tint channel )
{
  Write( ":READ?" );
  return;
}

Tbool TRs232cKeithley2400Module::modifyData( const Tstring& accept, Tdouble& databuf ) const
{
  databuf = strtod( accept.c_str(), 0 );
  return Ttrue;
}

#ifdef __CLDAQ_ROOT_DLL
    ClassImp(TRs232cKeithley2400Module)
#endif
