//
//		TEXIO USB488 Access Lib	Ver1.00
//
//*     Copyright(c) 2012  TEXIO TECHNOLOGY CORPORATION 


#include  "StdAfx.h"

#define DLL_ERROR  -1
#define IF_GPIB 1
#define IF_COM  2


class TMI_API
{
public:
	
	// デバイスのオープン
	int TMI_HandleOpen(char * Str_Renamed, char * Ptr);
	// デバイスのクローズ
	int TMI_HandleClose(int hID);
	// タイムアウト時間設定
	int TMI_TimeOut(int hID, int time);
	// リフレッシュ動作
	int TMI_Refresh(int hID);
	// モデル名の取得
	int TMI_ModelNameQ(int hID, char * Model);
	// 出力位置とプリセット位置を指定して電圧値を設定する
	int TMI_Voltage(int hID, unsigned char ch, unsigned char  preset, double Data);
	// 出力位置とプリセット位置を指定して電圧値を取得する
	int TMI_VoltageQ(int hID, unsigned char ch, unsigned char preset,  double * Voltage);
	// 出力位置とプリセット位置を指定して電流値を設定する
	int TMI_Current(int hID, unsigned char ch, unsigned char preset, double Data);
	// 出力位置とプリセット位置を指定して電流値を取得する
	int TMI_CurrentQ(int hID, unsigned char ch, unsigned char preset, double * Current);
	// MainOutputのON OFFを行う
	int TMI_MainOutput(int hID, unsigned char onoff);
	// MainOutputの状態を取得する
	int TMI_MainOutputQ(int hID, unsigned char * Ans);
	// Delay のON OFFを行う
	int TMI_Delay(int hID, unsigned char onoff);
	// Delayの状態を取得する
	int TMI_DelayQ(int hID, unsigned char * Ans);
	// OutputSelectの出力別ON OFFを行う
	int TMI_OutputSel(int hID, unsigned char ch, unsigned char onoff);
	// OutputSelectの出力別の状態を取得する
	int TMI_OutputSelQ(int hID, unsigned char ch, unsigned char * Ans);
	// TrackingのON OFFを行う
	int TMI_TrackingOnOff(int hID, unsigned char onoff);
	// Trackingの状態を取得する
	int TMI_TrackingOnOffQ(int hID, unsigned char * Ans);
	// TrackingModeを設定する
	int TMI_TrackingMode(int hID, unsigned char mode);
	// TrackingModeの状態を取得する
	int TMI_TrackingModeQ(int hID, unsigned char * Ans);
	// TrackingGroupを出力別に設定する
	int TMI_TrackingGroup(int hID, unsigned char ch, unsigned char Tracking_Set);
	// TrackingGroupの出力別設定状態を取得する
	int TMI_TrackingGroupQ(int hID, unsigned char ch, unsigned char * Ans);
	// TrackingGroupの電圧・電流値を出力別に増減させる
	int TMI_TrackingData(int hID, unsigned char ch, unsigned char va, double Data);
	// TrackingGroupの電圧・電流値を出力別に取得する
	int TMI_TrackingDataQ(int hID, unsigned char ch, unsigned char va, double * Data);
	// DELAY時間を出力別に設定する
	int TMI_DelayTime(int hID, unsigned char ch, double Data);
	// DELAY時間を出力別に取得する
	int TMI_DelayTimeQ(int hID, unsigned char ch, double * Data);
	// Display表示位置を設定する
	int TMI_Display(int hID, unsigned char ch);
	// Display表示位置を取得する
	int TMI_DisplayQ(int hID, unsigned char * Ans);
	// Preset番号を設定する
	int TMI_Preset(int hID, unsigned char preset);
	// Preset番号を取得する
	int TMI_PresetQ(int hID, unsigned char * Ans);
	// 指定した出力の電圧・電流モニタ値とCV/CC状態を取得する
	int TMI_MoniDataQ(int hID, unsigned char ch, double * Voltage, double * Current, unsigned char * cv_cc);
	// システムアドレスを取得する
	int TMI_AdrQ(int hID, unsigned char * Adr);
	// リモートからローカルへ切り替える
	int TMI_RemoteLocal(int hID);
	// ローカルロックアウト状態へ移行する
	int TMI_LocalLockOut(int hID);
	// データのバックアップを行う
	int TMI_DataBackUp(int hID);
	// サービスリクエストの禁止・許可の設定をする
	int TMI_SRQEnable(int hID, unsigned char ch);
	// 全出力のPRESET値の取得
	int TMI_AllPresetQ(int hID, double * PresetMem);
	// 全出力のPRESET値の取得
	int TMI_AllPresetQS(int hID, char * PresetMem);
	// コントロール関数：コマンド送信
	int TMI_Out(int hID, char * Str_Renamed);
	// コントロール関数：コマンド受信
	int TMI_In(int hID, char * strbuf);

	BOOL IFInitialize();

	TMI_API();
	virtual ~TMI_API();
	
	HINSTANCE m_TMI_APIDll;

	int  ( __stdcall* m_TMI_HandleOpen )( char * , char * );
	int  ( __stdcall* m_TMI_HandleClose )( int );
	int  ( __stdcall* m_TMI_TimeOut )( int , int );
	int  ( __stdcall* m_TMI_Refresh )( int );
	int  ( __stdcall* m_TMI_ModelNameQ )( int , char * );
	int  ( __stdcall* m_TMI_Voltage )( int , unsigned char , unsigned char , double );
	int  ( __stdcall* m_TMI_VoltageQ )( int , unsigned char , unsigned char , double * );
	int  ( __stdcall* m_TMI_Current )(int , unsigned char , unsigned char , double );
	int  ( __stdcall* m_TMI_CurrentQ )(int , unsigned char , unsigned char , double * );
	int  ( __stdcall* m_TMI_MainOutput )(int , unsigned char );
	int  ( __stdcall* m_TMI_MainOutputQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_Delay )(int , unsigned char );
	int  ( __stdcall* m_TMI_DelayQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_OutputSel )(int , unsigned char , unsigned char );
	int  ( __stdcall* m_TMI_OutputSelQ )(int , unsigned char , unsigned char * );
	int  ( __stdcall* m_TMI_TrackingOnOff )(int , unsigned char );
	int  ( __stdcall* m_TMI_TrackingOnOffQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_TrackingMode )(int , unsigned char );
	int  ( __stdcall* m_TMI_TrackingModeQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_TrackingGroup )(int , unsigned char , unsigned char );
	int  ( __stdcall* m_TMI_TrackingGroupQ )(int , unsigned char , unsigned char * );
	int  ( __stdcall* m_TMI_TrackingData )(int , unsigned char , unsigned char , double );
	int  ( __stdcall* m_TMI_TrackingDataQ )(int , unsigned char , unsigned char , double * );
	int  ( __stdcall* m_TMI_DelayTime )(int , unsigned char , double );
	int  ( __stdcall* m_TMI_DelayTimeQ )(int , unsigned char , double * );
	int  ( __stdcall* m_TMI_Display )(int , unsigned char );
	int  ( __stdcall* m_TMI_DisplayQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_Preset )(int , unsigned char );
	int  ( __stdcall* m_TMI_PresetQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_MoniDataQ )(int , unsigned char , double * , double * , unsigned char * );
	int  ( __stdcall* m_TMI_AdrQ )(int , unsigned char * );
	int  ( __stdcall* m_TMI_RemoteLocal )(int );
	int  ( __stdcall* m_TMI_LocalLockOut )(int );
	int  ( __stdcall* m_TMI_DataBackUp )(int );
	int  ( __stdcall* m_TMI_SRQEnable )(int , unsigned char );
	int  ( __stdcall* m_TMI_AllPresetQ )(int , double * );
	int  ( __stdcall* m_TMI_AllPresetQS )(int , char * );
	int  ( __stdcall* m_TMI_Out )(int , char * );
	int  ( __stdcall* m_TMI_In )(int , char * );

};
