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

📄 main.pas

📁 利用DLL对IC卡进行发卡充值的PB VF BCB DELPHI VC等源代码程序,内有详细说明
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    btnsys: TButton;
    ListBox1: TListBox;
    btnmj: TButton;
    btnxf: TButton;
    btnadd: TButton;
    btnopt: TButton;
    btnexit: TButton;
    procedure btnexitClick(Sender: TObject);
    procedure btnsysClick(Sender: TObject);
    procedure btnmjClick(Sender: TObject);
    procedure btnxfClick(Sender: TObject);
    procedure btnaddClick(Sender: TObject);
    procedure btnoptClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  icdev:longint;
  st:longint;
  snr:longint;
  function OpenComm(port:integer):longint;stdcall;
   far;external 'dascard.dll' name 'OpenComm';
  function CloseComm(icdev:longint):integer;stdcall;
   far;external 'dascard.dll' name 'CloseComm';
  function Check_Reader(icdev:longint):integer;stdcall;
   far;external 'dascard.dll' name 'Check_Reader';
  function Init_SysCard(icdev:longint;userpwd:pchar;systype:integer;mjsec:integer;mjcardtype:integer;xfsec:integer;commpwd:pchar):integer;stdcall;
   far;external 'dascard.dll' name 'Init_SysCard';
  function Init_Pos_UserCard(icdev:longint;serno:integer;cardno:pchar;usertype:integer;waitime:integer;cardserno:pointer):integer;stdcall;
   far;external 'dascard.dll' name 'Init_Pos_UserCard';
  function Init_Pos_UserCard_N(icdev:longint;serno:integer;cardno:pchar;usertype:integer;value:integer;usecount:integer;waitime:integer;cardserno:pointer):integer;stdcall;
   far;external 'dascard.dll' name 'Init_Pos_UserCard_N';
  function Init_Pos_OPTCard(icdev:longint;opt_num:integer;waitime:integer;cardserno:pointer):integer;stdcall;
   far;external 'dascard.dll' name 'Init_Pos_OPTCard';
  function RST_Pos_UserCard(icdev:longint;cardserno:cardinal;waitime:integer):integer;stdcall
   far;external 'dascard.dll' name 'RST_Pos_UserCard';
  function RST_Pos_OPTCard(icdev:longint;cardserno:cardinal;waitime:integer):integer;stdcall;
   far;external 'dascard.dll' name 'RST_Pos_OPTCard';
  function WRT_Pos_UserCard(icdev:longint;value:integer;cardserno:cardinal;waitime:integer):integer;stdcall;
   far;external 'dascard.dll' name 'WRT_Pos_UserCard';
//  function Query_Pos_Card(icdev:longint;cardtype:pointer;opt_num:pointer;serno:pointer;cardno:pchar;car- dserno:pointer;value:pointer;count:pointer;usertype:pointer;waitime:integer):integer;stdcall;
  function Query_Pos_Card(icdev:longint;var cardtype:integer;var opt_num:integer;var serno:integer;cardno:pchar;var cardserno:cardinal;var value:integer;var count:integer;var usertype:integer;waitime:integer):integer;stdcall;
   far;external 'dascard.dll' name 'Query_Pos_Card';
  function Init_Access_UserCard(icdev:longint;serno:longint;cardno:longint;usertype:longint;waitime:longint;cardserno:pointer):longint;stdcall;
   far;external 'dascard.dll' name 'Init_Access_UserCard';
  function RST_Access_UserCard(icdev:longint;cardserno:cardinal;waitime:integer):longint;stdcall;
   far;external 'dascard.dll' name 'RST_Access_UserCard';
  function Init_Access_UserCard_UsePassword(icdev:longint;cardserno:cardinal;waitime:integer):integer;stdcall;
   far;external 'dascard.dll' name 'Init_Access_UserCard_UsePassword';
  function Query_Access_Card(icdev:longint;cardtype:pointer;serno:pointer;cardno:pointer;cardserno:pointer;usertype:pointer;waitime:longint):longint;stdcall;
   far;external 'dascard.dll' name 'Query_Access_Card';

implementation

{$R *.DFM}


procedure TForm1.btnexitClick(Sender: TObject);
begin
     close();
end;

procedure TForm1.btnsysClick(Sender: TObject);
var
     userpwd:pchar;
     s:string;
begin
     userpwd:='12345678'#0;
     setlength(s,20);
     listbox1.Clear();
     st:=Init_SysCard(icdev,userpwd,2,1,1,2,pchar(s));
     case st of
          0:listbox1.Items.Add ('初始化系统卡成功:通讯密码:'+s);
          -2:listbox1.Items.Add ('初始化系统卡失败:读写器通讯错!');
          -5:listbox1.items.Add ('初始化系统卡失败:参数错!');
          -6:listbox1.Items.Add ('初始化系统卡失败:不能再初始化系统卡!');
          -7:listbox1.Items.add('初始化系统卡失败:找不到卡!');
          -8:LISTBOX1.Items.add('初始化系统卡失败:找不到消费授权卡!');
          -12:listbox1.Items.add('初始化系统卡失败:读卡错!');
          -13:listbox1.Items.add('初始化系统卡失败:写卡错!');
          -14:listbox1.items.add('初始化系统卡失败:建立授权文档错!');
          -15:listbox1.Items.Add ('初始化系统卡失败:不可识别的卡!');
     else
         listbox1.Items.add('初始系统卡失败!');
     end;
end;

procedure TForm1.btnmjClick(Sender: TObject);
var
   serno:longint;
   cardno:longint;
   usertype:longint;
   cardserno:longint;
   cardtype:longint;
   s:string[14];
begin
// cardtype:=-1;
//   cardno:=-1;
//   usertype:=-1;
//   cardserno:=0;
//   cardtype:=-1;
     listbox1.Clear();
     st:=Init_Access_UserCard(icdev,1,1,1,10,addr(cardserno));
     if st=0 then
        begin
          str(cardserno,s);
          listbox1.Items.add('初始化门禁考勤用户卡成功:用户卡卡号:'+s);
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('初始化门禁考勤用户卡失败:读写器通讯错!');
                  -4:listbox1.Items.add('初始化门禁考勤用户卡失败:没有门禁系统授权信息!');
                  -5:listbox1.Items.add('初始化门禁考勤用户卡失败:参数错!');
                  -7:listbox1.Items.add('初始化门禁考勤用户卡失败:找不到卡!');
                  -11:listbox1.Items.add('初始化门禁考勤用户卡失败:用户卡错误!');
                  -12:listbox1.Items.add('初始化门禁考勤用户卡失败:读卡错!');
                  -13:listbox1.Items.add('初始化门禁考勤用户卡失败:写卡错!');
                  -15:listbox1.Items.add('初始化门禁考勤用户卡失败:不可识别的卡!');
              else
                  listbox1.Items.add('初始化门禁考勤用户卡失败!');
             end
         END;

     st:=Query_Access_Card(icdev,addr(cardtype),addr(serno),addr(cardno),addr(cardserno),addr(usertype),10);
     if st=0 then
        begin
          listbox1.Items.add('门禁考勤机使用卡查询成功:卡ID号:'+inttostr(cardserno));
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('门禁考勤机使用卡查询失败:读写器通讯错!');
                  -4:listbox1.Items.add('门禁考勤机使用卡查询失败:没有门禁系统授权信息!');
                  -5:listbox1.Items.add('门禁考勤机使用卡查询失败:参数错!');
                  -7:listbox1.Items.add('门禁考勤机使用卡查询失败:找不到卡!');
                  -11:listbox1.Items.add('门禁考勤机使用卡查询失败:用户卡错误!');
                  -12:listbox1.Items.add('门禁考勤机使用卡查询失败:读卡错!');
                  -13:listbox1.Items.add('门禁考勤机使用卡查询失败:写卡错!');
                  -15:listbox1.Items.add('门禁考勤机使用卡查询失败:不可识别的卡!');
              else
                  listbox1.Items.add('门禁考勤机使用卡查询失败!');
             end
         END;

     st:=Init_Access_UserCard_UsePassword(icdev,cardserno,10);
     if st=0 then
        begin
          listbox1.Items.add('初始化用户'+inttostr(cardserno)+'密码成功!');
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('初始化用户密码失败:读写器通讯错!');
                  -4:listbox1.Items.add('初始化用户密码失败:没有门禁系统授权信息!');
                  -5:listbox1.Items.add('初始化用户密码失败:参数错!');
                  -7:listbox1.Items.add('初始化用户密码失败:找不到卡!');
                  -11:listbox1.Items.add('初始化用户密码失败:用户卡错误!');
                  -12:listbox1.Items.add('初始化用户密码失败:读卡错!');
                  -13:listbox1.Items.add('初始化用户密码失败:写卡错!');
                  -15:listbox1.Items.add('初始化用户密码失败:不可识别的卡!');
              else
                  listbox1.Items.add('初始化用户密码失败!');
             end
         END;

     st:=RST_Access_UserCard(icdev,cardserno,10);
     if st=0 then
        begin
          listbox1.Items.add('回收门禁考勤机用户卡'+inttostr(cardserno)+'成功!');
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('回收门禁考勤用户卡失败:读写器通讯错!');
                  -4:listbox1.Items.add('回收门禁考勤用户卡失败:没有门禁系统授权信息!');
                  -5:listbox1.Items.add('回收门禁考勤用户卡失败:参数错!');
                  -7:listbox1.Items.add('回收门禁考勤用户卡失败:找不到卡!');
                  -11:listbox1.Items.add('回收门禁考勤用户卡失败:用户卡错误!');
                  -12:listbox1.Items.add('回收门禁考勤用户卡失败:读卡错!');
                  -13:listbox1.Items.add('回收门禁考勤用户卡失败:写卡错!');
                  -15:listbox1.Items.add('回收门禁考勤用户卡失败:不可识别的卡!');
             else
                  listbox1.Items.add('回收门禁考勤用户卡失败!');
             end
         END
end;
procedure TForm1.btnxfClick(Sender: TObject);
var
   serno:integer;
   cardno:string;
   usertype:integer;
   cardserno:cardinal;
   cardtype:integer;
   opt_num:integer;
   value:integer;
   count:integer;
begin
     usertype:=0;
     serno:=0;
     cardserno:=0;
     cardtype:=0;
     opt_num:=0;
     value:=0;
     count:=0;
     cardno:='0000000001';
     listbox1.Clear();
     st:=Init_Pos_UserCard(icdev,1,pchar(cardno),1,10,addr(cardserno));
     if st=0 then
        begin
          listbox1.Items.add('初始化消费机用户卡成功:用户卡卡号:'+inttostr(cardserno));
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('初始化消费机用户卡失败:读写器通讯错!');
                  -3:listbox1.Items.add('初始化消费机用户卡失败:没有消费系统授权信息!');
                  -5:listbox1.Items.add('初始化消费机用户卡失败:参数错!');
                  -7:listbox1.Items.add('初始化消费机用户卡失败:找不到卡!');
                  -11:listbox1.Items.add('初始化消费机用户卡失败:用户卡错误!');
                  -12:listbox1.Items.add('初始化消费机用户卡失败:读卡错!');
                  -13:listbox1.Items.add('初始化消费机用户卡失败:写卡错!');
                  -15:listbox1.Items.add('初始化消费机用户卡失败:不可识别的卡!');
             else
                 listbox1.Items.add('初始化消费机用户卡失败!');
             end
         END;

     setlength(cardno,12);
     st:=Query_Pos_Card(icdev,cardtype,opt_num,serno,pchar(cardno),cardserno,value,count,usertype,100);
     if st=0 then
        begin
          listbox1.Items.add('消费机使用卡查询成功:金额:'+inttostr(value div 100)+' 消费次数:'+inttostr(count)+' 卡ID号:'+inttostr(cardserno));
        end
     else
         BEGIN
             case st of
                  -2:listbox1.Items.add('消费机使用卡查询失败:读写器通讯错!');
                  -3:listbox1.Items.add('消费机使用卡查询失败:没有消费系统授权信息!');
                  -5:listbox1.Items.add('消费机使用卡查询失败:参数错!');
                  -7:listbox1.Items.add('消费机使用卡查询失败:找不到卡!');
                  -11:listbox1.Items.add('消费机使用卡查询失败:用户卡错误!');
                  -12:listbox1.Items.add('消费机使用卡查询失败:读卡错!');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -