unit myUnit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Db, ADODB;function link_com(port :integer):integer;stdcall; external'sfj.dll'; function rd_cmw(w_sno:integer;cmwout:pchar):integer; stdcall; external'sfj.dll'; function rd_mdeb(w_sno:integer;mdebout:pchar):integer; stdcall; external'sfj.dll'; function set_key(w_sno,batch_no,keystat:integer;key:string):integer; stdcall; external'sfj.dll'; function set_cmw(w_sno:integer;cmw:string):integer; stdcall; external'sfj.dll'; function set_time(w_sno:integer;timestr:string):integer; stdcall; external'sfj.dll'; function set_mdeb(w_sno:integer;mdeb:string):integer; stdcall; external'sfj.dll'; function clr_ram(w_sno:integer):integer; stdcall; external'sfj.dll'; function chk_key(w_sno,batch_no,keystat:integer;key:string):integer; stdcall; external'sfj.dll'; function get_jyzm(w_sno,choice:integer;jydata:pchar):integer; stdcall; external'sfj.dll'; function add_hmd(w_sno,hlen:integer;hmd:string):integer; stdcall; external'sfj.dll'; function redu_hmd(w_sno,hlen:integer;hmd:string):integer; stdcall; external'sfj.dll'; function set_hmd(w_sno:integer):integer; stdcall; external'sfj.dll'; function rd_hmd(w_sno:integer;code:pchar):integer; stdcall; external'sfj.dll'; function clr_bt(w_sno:integer):integer; stdcall; external'sfj.dll'; function set_bt(w_sno,hlen:integer;btString:string):integer; stdcall; external'sfj.dll'; //---btString长度 hlen*6 function clr_menu(w_sno:integer):integer; stdcall; external'sfj.dll'; function set_menu(w_sno,hlen:integer;DJString:string):integer; stdcall; external'sfj.dll'; type TForm1 = class(TForm) Timer1: TTimer; adoConnection: TADOConnection; Label1: TLabel; Label2: TLabel; lblName: TLabel; lblClassName: TLabel; Label3: TLabel; Label4: TLabel; lblCardNo: TLabel; lblTime: TLabel; Shape1: TShape; Label5: TLabel; adoquery: TADOQuery; procedure FormClose(Sender: TObject; var Action: TCloseAction); function AddData(CardNo:string):Integer; function GetCardNo():string; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if Messagedlg('确定要退出吗?',mtConfirmation,[mbYes, mbNo],0)=mrYes then begin timer1.Enabled :=False; adoConnection.Close ; end else Action:=caNone; end;function TForm1.AddData(CardNo:string):Integer; var sNo:integer; sFamilyName,sGivenName:string; sClassName:string; begin Result:=0; with adoquery do begin sql.Clear ; sql.Add ('select 编号,姓,名,当前班级 from student_base_info where 卡号='+CardNo); open; if not eof then begin sNo:=fields.Fields[0].AsInteger; sFamilyName:=fields.Fields[1].AsString; sGivenName:=fields.Fields[2].AsString; sClassName:=fields.Fields[3].AsString; close; sql.Clear ; sql.Add ('Execute InsertTimeInfo '+inttostr(sNo)+','''+sClassName+''','+CardNo); ExecSQL; lblName.Caption :=sFamilyName+sGivenName; lblClassName.Caption :=sClassName; lblCardNo.Caption :=CardNo; lblTime.Caption :=DateTimetostr(Now); end else Result:=2; close; end; end;function TForm1.GetCardNo():string; var pCardNo:pchar; sCardNo:string; begin GetMem(pCardNo,256); rd_cmw(1,pCardNo); sCardNo:=string(pCardNo); if (copy(sCardNo,1,2)='00') and (copy(sCardNo,5,1)='1') and (copy(sCardNo,7,10)='3344556677') then begin shape1.Pen.Color :=clGreen; shape1.Brush.Color :=clGreen; end else if length(sCardNo)<>16 then else Result:=sCardNo; FreeMem(pCardNo); end; procedure TForm1.Timer1Timer(Sender: TObject); var CardNo:string; begin CardNo :=GetCardNo; if trim(CardNo)<>'' then case AddData(copy(CardNo,12,5)) of 1: set_cmw(1,'03'); 2: set_cmw(1,'03'); else set_cmw(1,'06'+copy(CardNo,12,5)+'00000'); end; end;procedure TForm1.FormCreate(Sender: TObject); begin link_com(3); adoConnection.Open ; timer1.Enabled :=True; end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Db, ADODB;function link_com(port :integer):integer;stdcall;
external'sfj.dll';
function rd_cmw(w_sno:integer;cmwout:pchar):integer; stdcall;
external'sfj.dll';
function rd_mdeb(w_sno:integer;mdebout:pchar):integer; stdcall;
external'sfj.dll';
function set_key(w_sno,batch_no,keystat:integer;key:string):integer; stdcall;
external'sfj.dll';
function set_cmw(w_sno:integer;cmw:string):integer; stdcall;
external'sfj.dll';
function set_time(w_sno:integer;timestr:string):integer; stdcall;
external'sfj.dll';
function set_mdeb(w_sno:integer;mdeb:string):integer; stdcall;
external'sfj.dll';
function clr_ram(w_sno:integer):integer; stdcall;
external'sfj.dll';
function chk_key(w_sno,batch_no,keystat:integer;key:string):integer; stdcall;
external'sfj.dll';
function get_jyzm(w_sno,choice:integer;jydata:pchar):integer; stdcall;
external'sfj.dll';
function add_hmd(w_sno,hlen:integer;hmd:string):integer; stdcall;
external'sfj.dll';
function redu_hmd(w_sno,hlen:integer;hmd:string):integer; stdcall;
external'sfj.dll';
function set_hmd(w_sno:integer):integer; stdcall;
external'sfj.dll';
function rd_hmd(w_sno:integer;code:pchar):integer; stdcall;
external'sfj.dll';
function clr_bt(w_sno:integer):integer; stdcall;
external'sfj.dll';
function set_bt(w_sno,hlen:integer;btString:string):integer; stdcall;
external'sfj.dll'; //---btString长度 hlen*6
function clr_menu(w_sno:integer):integer; stdcall;
external'sfj.dll';
function set_menu(w_sno,hlen:integer;DJString:string):integer; stdcall;
external'sfj.dll';
type
TForm1 = class(TForm)
Timer1: TTimer;
adoConnection: TADOConnection;
Label1: TLabel;
Label2: TLabel;
lblName: TLabel;
lblClassName: TLabel;
Label3: TLabel;
Label4: TLabel;
lblCardNo: TLabel;
lblTime: TLabel;
Shape1: TShape;
Label5: TLabel;
adoquery: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
function AddData(CardNo:string):Integer;
function GetCardNo():string;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Messagedlg('确定要退出吗?',mtConfirmation,[mbYes, mbNo],0)=mrYes then
begin
timer1.Enabled :=False;
adoConnection.Close ;
end
else
Action:=caNone;
end;function TForm1.AddData(CardNo:string):Integer;
var
sNo:integer;
sFamilyName,sGivenName:string;
sClassName:string;
begin
Result:=0;
with adoquery do
begin
sql.Clear ;
sql.Add ('select 编号,姓,名,当前班级 from student_base_info where 卡号='+CardNo);
open;
if not eof then
begin
sNo:=fields.Fields[0].AsInteger;
sFamilyName:=fields.Fields[1].AsString;
sGivenName:=fields.Fields[2].AsString;
sClassName:=fields.Fields[3].AsString;
close;
sql.Clear ;
sql.Add ('Execute InsertTimeInfo '+inttostr(sNo)+','''+sClassName+''','+CardNo);
ExecSQL;
lblName.Caption :=sFamilyName+sGivenName;
lblClassName.Caption :=sClassName;
lblCardNo.Caption :=CardNo;
lblTime.Caption :=DateTimetostr(Now);
end
else
Result:=2;
close;
end;
end;function TForm1.GetCardNo():string;
var
pCardNo:pchar;
sCardNo:string;
begin
GetMem(pCardNo,256);
rd_cmw(1,pCardNo);
sCardNo:=string(pCardNo);
if (copy(sCardNo,1,2)='00') and (copy(sCardNo,5,1)='1') and (copy(sCardNo,7,10)='3344556677') then
begin
shape1.Pen.Color :=clGreen;
shape1.Brush.Color :=clGreen;
end
else
if length(sCardNo)<>16 then
else
Result:=sCardNo;
FreeMem(pCardNo);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
CardNo:string;
begin
CardNo :=GetCardNo;
if trim(CardNo)<>'' then
case AddData(copy(CardNo,12,5)) of
1: set_cmw(1,'03');
2: set_cmw(1,'03');
else
set_cmw(1,'06'+copy(CardNo,12,5)+'00000');
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
link_com(3);
adoConnection.Open ;
timer1.Enabled :=True;
end;end.