⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlldef.pas

📁 网吧管理系统 网吧IC卡计费管理系统源码
💻 PAS
字号:
unit DllDef;

interface

   USES WINDOWS,SysUtils,FORMS,Controls,DIALOGS;
//注:以下函数参数中,nport:读写器所使用的串口 COM1为1,COM2为2
//          no:为卡型(1个字符)+卡号(5个数字字符),如'100005'
//返回值:0:OK         1:读写错误     2:卡已损坏
//        4: 串口错误   5:卡被更换     6:不是新卡
//        7: 卡为新卡   8:非本系统卡   14:数据有误


procedure ps(syspara:pchar);stdcall; external 'netbar.dll';
//传输系统标识 4个数字字符 如: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';
//弹卡,用于自弹式发行机  如: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';
//发行卡:其中info:14个字符的串 即余额(6)+终止时间(8)
//例如:i:=issue(1,'100001','0080000210010202')将发行卡型为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';
//修改卡,参数同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 + -