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();