#include //外部参照(DLL)関数の定義 #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 extern "C" { #endif __declspec(dllexport) void TRSYNCINIT(int*); __declspec(dllexport) void TRSYNCGETNAME(char*,int*); __declspec(dllexport) void TRSYNCGET(float*,float*,float*,float*,float*,int*); __declspec(dllexport) void TRSYNCPUT(float*,float*,float*,float*,float*,int*); __declspec(dllexport) void TRSYNCFREE(); #ifdef __cplusplus //この分岐宣言はC言語(*.C)としてコンパイルする時は省略可 } #endif //もしTRSYNCGET,TRSYNCPUTでダイアログを表示する場合は、以下のDllMain関数で //インスタンスをグローバル変数(hInst)に保存しておいて下さい。 //それ以外はDllMain関数は不要です。 HINSTANCE hInst; BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,LPVOID lpvReserved) { hInst=hinstDll; return TRUE; } //本DLL内でのグローバル変数を定義 //DLL内でローカルに使用する関数を記述 //(これらの関数を後ろのほうで記述する場合や、別ファイルで記述する場合は、 //それらの関数のプロトタイプ宣言を記述) //************************************************************************** //外部参照(DLL)関数の引数説明 //[I -] 入力のみ(関数内では参照するだけにして下さい) //[- O] 出力のみ(参照時は未定義になっています。必ず値を返して下さい。) //[I O] 入出力 // // //====================================================================== void TRSYNCINIT(int *irc) //[- O] Return Code(=0:FALSE =1:TRUE) // 機能:処理の初期化 // 説明:TRYCUT起動時のWM_CREATE時に一度だけ参照されます。 // 作業エリアの確保などに利用しますが、特に必要ない場合は、 // 本関数自体の省略も可です。 // 初期化が正常な場合は、*irc は必ずTRUEを設定して下さい。 // 本関数省略時は、*irc=TRUE とみなします。 // *irc=FALSEで返した場合DLLは動作しませんので、各種プロテクト処理は、 // ここで行なって下さい。 { *irc=TRUE; } void TRSYNCGETNAME(char *name, //[I ] 機械名称(MAX:256byte) int *irc) //[- O] Return Code(=0:FALSE/接続対象なし // =1:TRUE/接続対象あり) // 機能:MTLファイルの中の機械名称を取得する // 説明:起動時のMTLファイル読み込み時や起動中のMTLファイル変更時に参照され // ます。 // 主に、複数の機械を接続している場合に、この機械名称を利用して本DLL // 内のI/O処理の場合分けに対応させることを想定しています。また機械 // 名称が接続対象の機械にない場合などは、Return CodeにてFALSEを返す // ことにより、PUT,GETボタンを隠すことができます。通常はTRUEを返して // 下さい。本関数は省略可ですが、その場合はTRUE扱いとします。 { *irc=TRUE; } void TRSYNCGET(float *dcode, //[I O] 径補正値(MAX:200Word) float *dcoded, //[I O] 径補正磨耗値(MAX:200Word) float *hcode, //[I O] 長補正値(MAX:200Word) float *hcoded, //[I O] 長補正磨耗値(MAX:200Word) float *workxyz, //[I O] ワーク座標系XYZ列(MAX:3x200Word) // X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,,, // ※X1,Y1,Z1がG54の設定値 int *irc) //[ O] Return Code 正常終了時:TRUE // 異常終了時:FALSE // 機能:CNC側の径補正値,長補正値,ワーク座標系を取り込む // 説明:本関数が存在する場合、左側パネルに"GET"ボタンが表示され、その // "GET"ボタンがクリックされたタイミングで本関数が参照されます。 // 本関数もしくは次のTRSYNCPUTのいずれかが無いと、本DLLは無効と // なります。 { *irc=TRUE; MessageBox(NULL,"データ取得","取得OK!",MB_OK|MB_TOPMOST); } void TRSYNCPUT(float *dcode, //[I -] 径補正値(MAX:200Word) float *dcoded, //[I -] 径補正磨耗値(MAX:200Word) float *hcode, //[I -] 長補正値(MAX:200Word) float *hcoded, //[I -] 長補正磨耗値(MAX:200Word) float *workxyz, //[I -] ワーク座標系XYZ列(MAX:3x200Word) // X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3,,, // ※X1,Y1,Z1がG54の設定値 int *irc) //[ O] Return Code 正常終了時:TRUE // 異常終了時:FALSE // 機能:CNC側に径補正値,長補正値,ワーク座標系を送り出す // 説明:本関数が存在する場合、左側パネルに"PUT"ボタンが表示され、その // "PUT"ボタンがクリックされたタイミングで本関数が参照されます。 // 本関数もしくは前のTRSYNCGETのいずれかが無いと、本DLLは無効と // なります。 { *irc=TRUE; MessageBox(NULL,"データ転送","転送OK!",MB_OK|MB_TOPMOST); } void TRSYNCFREE() // 引数なし // 機能:作業エリアの開放など // 説明:TRYCUT終了時のWM_DESTROYイベント発生時に参照されます。 // TRSYNCINITなどで作業エリアを確保している場合などに、 // その作業エリアの開放(FREE)のために利用します。本関数は省略可です。 { }