?? dlldef.pas
字號:
unit DllDef;
interface
USES WINDOWS,SysUtils,FORMS,Controls,DIALOGS;
//注:以下函數(shù)參數(shù)中,nport:讀寫器所使用的串口 COM1為1,COM2為2
// no:為卡型(1個字符)+卡號(5個數(shù)字字符),如'100005'
//返回值:0:OK 1:讀寫錯誤 2:卡已損壞
// 4: 串口錯誤 5:卡被更換 6:不是新卡
// 7: 卡為新卡 8:非本系統(tǒng)卡 14:數(shù)據(jù)有誤
procedure ps(syspara:pchar);stdcall; external 'netbar.dll';
//傳輸系統(tǒng)標識 4個數(shù)字字符 如:PS('0001')
function Get_Version(nport:integer;info:pchar):integer;stdcall;external 'netbar.dll';
function OpenCom(nport:integer):boolean;stdcall;external 'netbar.dll';
procedure CloseCom;stdcall;external 'netbar.dll';
function PopCard(nport:integer):integer;stdcall;external 'netbar.dll';
//彈卡,用于自彈式發(fā)行機 如:i:=PopCard(1);
function ChkCard(nport:integer):integer;stdcall;external 'netbar.dll';
//檢查是否插卡 如:i:=ChkCard(1); 0=插卡
function issue(nport:integer;no,info:pchar):integer;stdcall;external 'netbar.dll';
//發(fā)行卡:其中info:14個字符的串 即余額(6)+終止時間(8)
//例如:i:=issue(1,'100001','0080000210010202')將發(fā)行卡型為1,卡號為1,
// 余額為80.00 終止時間為2002.10.1的卡
function canc(nport:integer;no:pchar):integer;stdcall;external 'netbar.dll';
//注銷卡
function change(nport:integer;no,info:pchar):integer;stdcall;external 'netbar.dll';
//修改卡,參數(shù)同issue
function ChgMoneyTimes(nport:integer;no,info:pchar):integer;stdcall;external 'netbar.dll';
//修改余額 如i:=ChgMoneyTimes(1,'100001','006000')
function getn(nport:integer;p:pchar):integer;stdcall;external 'netbar.dll' name 'getno';
//讀取卡信息 P:存儲讀回的信息(20) 格式為卡型(1)+卡號(5)+到時(2)+余額(6)+終止時間(6)
//例如:讀回信息為:'1000010010500212310202'表示:
//此卡卡型為1,卡號為1,余額為10.5元,終止時間為2002.12.31 02:02
function ReadSc(sc:pchar;sclen:integer):integer;stdcall;external 'netbar.dll';
function CmpSc(sc:pchar):integer;stdcall;external 'netbar.dll';
function WriteSc(sc:pchar):integer;stdcall;external 'netbar.dll';
function RdDat(cardtype,start,len:integer;buff:pchar):integer;stdcall;external 'netbar.dll';
function WrDat(cardtype,start,len:integer;buff:pchar):integer;stdcall;external 'netbar.dll';
function getno(nport:integer;var p:array of char):integer;
implementation
uses sys_global, finputpass;
function getno(nport:integer;var p:array of char):integer;
var
i:integer;
buff:array[0..15] of BYTE;
PASS:ARRAY[0..3] OF BYTE;
begin
result:=getn(nport,p);
IF RESULT<>8 THEN
EXIT;
result:=rddat(ID4442,252,4,@BUFF[0]);
IF RESULT<>0 THEN
EXIT;
IF BUFF[3]=$AA THEN BEGIN
RESULT:=8;
EXIT;
END;
result:=READSC(@PASS[0],4);
IF RESULT<>0 THEN BEGIN
IF RESULT=2 THEN BEGIN
BEEP;
if APPLICATION.MessageBox('卡已損壞,請換卡重試!','提示信息',MB_RETRYCANCEL or MB_ICONQUESTION)=idretry then
result:=getno(nport,p);
END;
EXIT;
END;
FOR I:=0 TO 2 DO
PASS[I]:=STRTOINT('$'+COPY(M_ICPASS,I*2+1,2));
result:=CMPSC(@PASS[0]);
IF RESULT<>0 THEN BEGIN
IF RESULT=2 THEN BEGIN
BEEP;
if APPLICATION.MessageBox(pchar('IC卡密碼錯誤,卡已損壞!'+#13+#13+'請重新輸入IC卡密碼后換卡重試!'),
'提示信息',MB_OKCANCEL or MB_ICONWARNING)<>IDOK THEN
EXIT;
END ELSE BEGIN
BEEP;
if APPLICATION.MessageBox('IC卡密碼錯誤,請重新輸入!','提示信息',MB_OKCANCEL or MB_ICONWARNING)<>IDOK THEN
EXIT;
END;
Application.CreateForm(TF_INPUTPASS, F_INPUTPASS);
if f_inputpass.showmodal=mrok then
result:=getno(nport,p);
EXIT;
END;
FOR I:=0 TO 1 DO
BUFF[I+1]:=STRTOINT('$'+COPY(m_syspara,I*2+1,2));
BUFF[0]:=(BUFF[1]+BUFF[2]) MOD 256;
RESULT:=WRITESC(@BUFF[0]);
IF RESULT<>0 THEN
EXIT;
FOR I:=0 TO 2 DO
BUFF[I]:=BUFF[I] XOR $A5;
BUFF[3]:=$AA;
result:=WRdat(ID4442,252,4,@BUFF[0]);
IF RESULT<>0 THEN BEGIN
WRITESC(@PASS[0]);
EXIT;
END;
RESULT:=7;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -