#include "matrix32.h"

long DataIn[256];	/* 読み込みデータ用バッファ */
long DataOut[256];	/* 書き込みデータ用バッファ */
short RetCode;	/* 戻り値 */
long DNG_Version;	/* Matrixバージョン番号 */
short DNG_LPT;	/* LPTポート番号 */
short DNG_LPTADR;	/* LPTポートのアドレス */
short DNG_Count;	/* LPTポートに接続されているMatrix数 */
short DNG_Mem;	/* Matrixのメモリサイズ */
short DNG_MaxVar;	/* 最大データフィールド数 */
short i;

/*----------------------------------------------------*/
/* Matrix-API の初期化 */
/*----------------------------------------------------*/
RetCode = Init_MatrixAPI();
if(RetCode < 0) exit;

/*-----------------------------------------------------*/
/*  LPT1があるかどうか確認 */
/*-----------------------------------------------------*/
DNG_LPT = 1;
DNG_LPTADR = GetPortAdr(DNG_LPT);
if(DNG_LPTADR == 0)
{
	printf(”LPT1はがありません!”);
	Release_MatrixAPI(); exit;
}

/*-----------------------------------------------------*/
/*  LPT1に接続されたMatrix数を調べる */
/*-----------------------------------------------------*/
DNG_Count = Dongle_Count(DNG_LPT);
if(DNG_Count == 0)
{
	printf(”LPT1にMatrixは接続されていません!”);
	Release_MatrixAPI(); exit;
}

/*-----------------------------------------------------*/
/* LPT1に接続された最後のMatrixのメモリサイズ */
/*-----------------------------------------------------*/
DNG_Mem = Dongle_MemSize(DNG_Count, DNG_LPT);
if(DNG_Mem == 0)
{
	printf(”メモリサイズは読み取れません!”);
	Release_MatrixAPI(); exit;
}
DNG_MaxVar = DNG_Mem / 4; /* データフィールド数 */

/*-----------------------------------------------------*/
/* LPT1に接続された最後のMatrixのバージョン */
/*-----------------------------------------------------*/
DNG_Version = Dongle_Version(DNG_Count, DNG_LPT);
if(DNG_Version > 0)
{
	printf("このMatrixのバージョン : %d.%d",
	HIWORD(DNG_Version),
	LOWORD(DNG_Version));
}
else
{
	printf(”Matrixのバージョンを読み取れませんでした”);
	Release_MatrixAPI(); exit;
}

/*-----------------------------------------------------*/
/* LPT1に接続された最後のMatrixから 15個のデータフィールドを*/
/* ユーザコード 1234 で読み取り、表示する */
/*-----------------------------------------------------*/
RetCode=Dongle_ReadData(1234, DataIn, 15, DNG_Count, DNG_LPT);
if(RetCode < 0)
{
	printf("データ読み取り中にエラー発生");
	Release_MatrixAPI(); exit;
}
for(i=0; i<15; i++)
{
	printf("データフィールドフィールド %d = %ld", i+1, DataIn[i]);
}

/*-----------------------------------------------------*/
/* LPT1に接続された最後のMatrixの15個のデータフィールドに */
/* ユーザコード 1234 で値101,102,103…を書き込む */
/*-----------------------------------------------------*/
for(i=0; i<15; i++)
{
	DataOut[i] = 101 + i;
}

RetCode=Dongle_WriteData(1234, DataOut, 15, DNG_Count, DNG_LPT);
if(RetCode < 0)
{
	printf("Matrix書き込み中にエラー発生!");
	Release_MatrixAPI(); exit;
}

/*-----------------------------------------------------*/
/*  Matrix-APIの解放 */
/*-----------------------------------------------------*/
Release_MatrixAPI();