program demo;
{$N+}
uses WinCrt, matrix16;

var
DataIn : array[1..256] of longint;
DataOut : array[1..256] of longint;
xBuffer : array[1..3] of DNGINFO;
RetCode : Integer;
DNG_Version : longint;
DNG_LPT : Integer;
DNG_LPTADR : Integer;
DNG_Count : Integer;
DNG_Nr : Integer;
DNG_Mem : Integer;
DNG_MaxVar : Integer;
i : Integer;

begin
{***********************************************************}
{* Init Matrix-API *}
{***********************************************************}
RetCode := Init_MatrixAPI();
if RetCode < 0 then
	begin
	exit;
	end;

{***********************************************************}
{*  LPT1 を確認する *}
{***********************************************************}
DNG_LPT := 1;
DNG_LPTADR := GetPortAdr(DNG_LPT);
if DNG_LPTADR = 0 then
	begin
		writeln('*** LPT1がありません');
		Release_MatrixAPI(); exit;
	end;

{***********************************************************}
{* LPT1に接続されているMatrix数をチェック *}
{***********************************************************}
DNG_Count := Dongle_Count(DNG_LPT);
if DNG_Count = 0 then
	begin
		writeln('MatrixがLPT1に見つかりませんでした');
		Release_MatrixAPI(); exit;
	end;
DNG_Nr := DNG_Count;

{***********************************************************}
{* LPT1最後のMatrixのメモリサイズを取得して *}
{* データフィールド数を計算する *}
{***********************************************************}
DNG_Mem := Dongle_MemSize(DNG_Nr, DNG_LPT);
if DNG_Mem = 0 then
	begin
		writeln('メモリサイズ読み取り中にエラー発生');
		Release_MatrixAPI(); exit;
	end;
DNG_MaxVar := DNG_Mem div 4; {* データフィールド数 *}

{***********************************************************}
{* LPT1最後のMatrixのバージョンを取得する *}
{***********************************************************}
DNG_Version := Dongle_Version(DNG_Nr, DNG_LPT);
if DNG_Version = 0 then
	begin
		writeln('バージョンを読み取り中にエラー発生');
		Release_MatrixAPI(); exit;
	end;

{***********************************************************}
{* LPT1最後のMatrixから15データフィールドを *}
{* ユーザコード 1234 で読み取り表示する *}
{***********************************************************}
RetCode := Dongle_ReadData(1234, @DataIn, 15, DNG_Nr, DNG_LPT);
if RetCode < 0 then
	begin
		writeln('データ読み取り中にエラー発生');
		Release_MatrixAPI(); exit;
	end;

for i := 1 to 15 do begin
		write('DataIn[i] = '); writeln(DataIn[i]);
	end;

{***********************************************************}
{* LPT1最後のMatrixの15データフィールドにユーザコード1234を使って *}
{* 値 101,102...115 を書き込む *}
{***********************************************************}
for i := 1 to 15 do begin
		DataOut[i] := i;
	end;

RetCode := Dongle_WriteData(1234, @DataOut, 15, DNG_Nr, DNG_LPT);
if RetCode < 0 then
	begin
		writeln('データ書き込み中にエラー発生');
		Release_MatrixAPI(); exit;
	end;
Release_MatrixAPI();