?? unit1.pas
字號(hào):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,rockey4nd;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
List: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mBuf:array[0..100] of Byte;
mFun,mP1,mP2,mP3,mP4,rt:Word;
lP1,lP2:LongWord;
mHand:array[0..16] of Word;
mHardID:array[0..16] of LongWord;
rc:array[0..4] of Word;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
i,num:Integer;
str:string;
mRockeyNumber:Word;
tmpBuf:array[0..30] of Byte;
cStr:array[0..100] of Char;
begin
R4ND_Init();
List.Items.Clear();
mP1:=$c44c;
mP2:=$c8f8;
mP3:=$799;
mP4:=$c43b;
for i:=0 to 30 do
mBuf[i]:=0;
rt:=0;
mFun:=1;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'沒找到ROCKEY4ND,error:0x%x ',[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add('找到第1個(gè)ROCKEY4ND');
mHardID[0]:=lp1;
mFun:=RY_OPEN;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'沒打開ROCKEY4ND,error:0x%x ',[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add('已打開ROCKEY4ND');
i:=1;
while rt = 0 do
begin
mFun:=RY_FIND_NEXT;
rt:= Rockey(mFun,mHand[i],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
break;
mHardID[i]:=lP1;
FmtStr(str,'找到第0x%x個(gè)ROCKEY4ND',[i+1]);
List.Items.Add(str);
mFun:=RY_OPEN;
rt:= Rockey(mFun,mHand[i],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'沒打開第0x%x個(gè)ROCKEY4ND',[i+1]);
List.Items.Add(str);
break;
end;
FmtStr(str,'已打開第0x%x個(gè)ROCKEY4ND',[i+1]);
List.Items.Add(str);
i:=i+1;
end;
mRockeyNumber:=i;
for num:=0 to mRockeyNumber-1 do
begin
List.Items.Add('*******************************************');
FmtStr(str,'開始測試第0x%x個(gè)ROCKEY4ND',[num+1]);
List.Items.Add(str);
{寫}
mFun:=RY_WRITE;
for i:=0 to 10 do
mBuf[i]:=31;
mP1:=498;
mP2:=11;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'寫ROCKEY4ND時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'寫ROCKEY4ND正確',[i+1]);
List.Items.Add('正確寫入ROCKEY4ND');
{讀}
mFun:=RY_READ;
for i:=0 to 10 do
tmpBuf[i]:=0;
mP1:=498;
mP2:=11;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,tmpBuf[0]);
if rt<>0 then
begin
FmtStr(str,'讀ROCKEY4ND時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end
else
begin
for i:=0 to 10 do
if mBuf[i] <> tmpBuf[i] then
break;
if i = 11 then
List.Items.Add('正確讀出ROCKEY4ND')
else
List.Items.Add('正確讀出ROCKEY4ND,但與寫入的不同');
end;
{隨機(jī)數(shù)}
mFun:=RY_RANDOM;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'檢測隨機(jī)數(shù)時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'隨機(jī)數(shù)0x%x:',[mP1]);
List.Items.Add(str);
{種子碼}
mFun:=RY_SEED;
lP2:=$12345678;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'發(fā)送種子碼時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'種子碼0x%x:返回值:0x%x,0x%x,0x%x,0x%x',[lP2,mP1,mP2,mP3,mP4]);
List.Items.Add(str);
rc[0] := mP1; rc[1] := mP2;
rc[2] := mP3; rc[3] := mP4;
{寫用戶ID}
mFun:=RY_WRITE_USERID;
lP1:=100;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'寫用戶ID時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'寫用戶ID0x%x',[lP1]);
List.Items.Add(str);
{讀用戶ID}
mFun:=RY_READ_USERID;
lP1:=0;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'讀用戶ID時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'讀出用戶ID0x%x',[lP1]);
List.Items.Add(str);
{設(shè)置模塊}
mFun:=RY_SET_MOUDLE;
mP1:=7;
mP2:=$2122;
mP3:=1;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'設(shè)置模塊0x%x時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[mP1,rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'設(shè)置模塊0x%x,為0x%x,可遞減',[mP1,mP2]);
List.Items.Add(str);
{檢測模塊第一次}
mFun:=RY_CHECK_MOUDLE;
mP1:=7;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'檢測模塊0x%x時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[mP1,rt]);
List.Items.Add(str);
break;
end;
if mP2 = 1 then
if mP3 = 1 then
FmtStr(str,'檢測模塊0x%x,有效,可遞減',[mP1])
else
FmtStr(str,'檢測模塊0x%x,有效,不可遞減',[mP1])
else
if mP3 = 1 then
FmtStr(str,'檢測模塊0x%x,無效,可遞減',[mP1])
else
FmtStr(str,'檢測模塊0x%x,無效,不可遞減',[mP1]) ;
List.Items.Add(str);
{遞減}
mFun:=RY_DECREASE;
mP1:=7;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'遞減模塊0x%x時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[mP1,rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'遞減模塊0x%x,為0X2121',[mP1]);
List.Items.Add(str);
{寫算法1}
cstr:='H=H^H, A=A*23, F=B*17, A=A+F, A=A+G, A=A<C, A=A^D, B=B^B, C=C^C, D=D^D';
for i:=0 to strlen(cstr) do
mBuf[i]:= Byte(cstr[i]);
mBuf[i]:=0;
mFun:=RY_WRITE_ARITHMETIC;
mP1:=0;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'寫算法1時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
List.Items.Add('正確寫入算法1');
{計(jì)算一}
mFun:=RY_CALCULATE1;
lP1 := 0; lP2 := 7;
mP1 := 5; mP2 := 3;
mP3 := 1; mP4 := $ffff;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'計(jì)算1時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
List.Items.Add('計(jì)算輸入: p1=5, p2=3, p3=1, p4=0xffff');
List.Items.Add('結(jié)果: = ((5*23 + 3*17 + 0x2121) < 1) ^ 0xffff = BC71');
FmtStr(str,'計(jì)算輸出: p1=0x%x, p2=0x%x, p3=0x%x, p4=0x%x',[mP1,mP2,mP3,mP4]);
List.Items.Add(str);
{寫算法2}
cstr:='A=A+B, A=A+C, A=A+D, A=A+E, A=A+F, A=A+G, A=A+H';
for i:=0 to strlen(cstr) do
mBuf[i]:= Byte(cstr[i]);
mBuf[i]:=0;
mFun:=RY_WRITE_ARITHMETIC;
mP1:=10;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'寫算法2時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
List.Items.Add('正確寫入算法2');
{計(jì)算2}
mFun:=RY_CALCULATE2;
lP1 := 10; lP2 := $12345678;
mP1 := 1; mP2 := 2;
mP3 := 3; mP4 := 4;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'計(jì)算2時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
List.Items.Add('計(jì)算輸入: p1=1, p2=2, p3=3, p4=4');
FmtStr(str,'結(jié)果: %04x + %04x + %04x + %04x + 1 + 2 + 3 + 4 = %04x',[rc[0], rc[1], rc[2], rc[3], Word(rc[0]+rc[1]+rc[2]+rc[3]+10)]);
List.Items.Add(str);
FmtStr(str,'計(jì)算輸出: p1=0x%x, p2=0x%x, p3=0x%x, p4=0x%x',[mP1,mP2,mP3,mP4]);
List.Items.Add(str);
{寫算法3}
cstr:='A=E|E, B=F|F, C=G|G, D=H|H';
for i:=0 to strlen(cstr) do
mBuf[i]:= Byte(cstr[i]);
mBuf[i]:=0;
mFun:=RY_WRITE_ARITHMETIC;
mP1:=17;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'寫算法3時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
List.Items.Add('正確寫入算法3');
{遞減}
mFun:=RY_DECREASE;
mP1:=7;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'遞減模塊0x%x時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[mP1,rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'遞減模塊0x%x,為0X2120',[mP1]);
List.Items.Add(str);
{計(jì)算3}
mFun:=RY_CALCULATE3;
lP1 := 17; lP2 := 6;
mP1 := 1; mP2 := 2;
mP3 := 3; mP4 := 4;
rt:= Rockey(mFun,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,'計(jì)算3時(shí)發(fā)現(xiàn)0x%x號(hào)錯(cuò)',[rt]);
List.Items.Add(str);
break;
end;
FmtStr(str,'讀出從6開始的模塊字: 0x%x,0x%x,0x%x,0x%x',[mP1,mP2,mP3,mP4]);
List.Items.Add(str);
end;
for num:=0 to mRockeyNumber-1 do
begin
rt:= Rockey(RY_CLOSE,mHand[num],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
begin
List.Items.Add('關(guān)閉Rockey4ND');
break;
end;
end;
R4ND_Finish();
end;
//procedure TMainForm.BitBtn1Click(Sender: TObject);
//begin
// close()
//end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close()
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -