// =====================================================================
//  $Id: TRs232cKeithley7702Module.cc,v 1.5 2004/03/07 10:30:31 goiwai Exp $
//  $Name: CLDAQ-1-14-06 $
//  $Log: TRs232cKeithley7702Module.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:11  goiwai
//  ファイルにコミットログをつけることにしました.
//
// =====================================================================
#include "TRs232cKeithley7702Module.hh"

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

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

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

TRs232cKeithley7702Module::~TRs232cKeithley7702Module()
{;}

Tvoid TRs232cKeithley7702Module::defineClearMethod( Tint channel )
{
  if ( channel != 0 ) {
    return;
  }

  //エラーキューをクリアする
  Write( "*CLS" );
  return;
}

Tvoid TRs232cKeithley7702Module::defineUpdateMethod( Tint channel )
{
  if ( channel != 0 ) {
    return;
  }

  Clear();
  return;
}

Tvoid TRs232cKeithley7702Module::defineInitializeMethod( Tint channel )
{
  if ( channel != 0 ) {
    return;
  }

  //デフォルト設定に戻す
  Write( ":SYST:PRES" );
  Write( "*RST" );
  Write( "*CLS" );

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

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

  //積分速度を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( "SENS:VOLT:RANG:AUTO OFF, (@101:132)" );

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

  return;
}

Tvoid TRs232cKeithley7702Module::defineReadMethod( Tint channel )
{
  Tstring strch = itostr( channel + 1, 2 );
  Tstring command = ":ROUT:CLOS (@1" + strch + ")";
  Write( command );
  Write( ":READ?" );
  return;
}

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

#ifdef __CLDAQ_ROOT_DLL
    ClassImp(TRs232cKeithley7702Module)
#endif
