程序功能,
程序启动时,刷卡机向电脑发送数据,程序接收后根据通信协议进行处理,再向数据库(sql server 2000)查询数据,返回结果。unit Txtest;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, Buttons, ComCtrls, Menus, DB, ADODB;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet2: TTabSheet;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
RadioGroup_BPS: TRadioGroup;
GroupBox3: TGroupBox;
seData1: TSpinEdit;
seData2: TSpinEdit;
seData3: TSpinEdit;
seData4: TSpinEdit;
seData5: TSpinEdit;
seData6: TSpinEdit;
seData7: TSpinEdit;
seData8: TSpinEdit;
seData9: TSpinEdit;
seData10: TSpinEdit;
Label26: TLabel;
LabelSendData: TLabel;
BitBtn5: TBitBtn;
GroupBox4: TGroupBox;
MemoShow: TMemo;
LabelCardState: TLabel;
BitBtn2: TBitBtn;
SysTimer: TTimer;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure seData1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure seData1Change(Sender: TObject);
procedure SysTimerTimer(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure Over1Click(Sender: TObject);
private
{ Private declarations }
FSending : Boolean;
Function InitPort(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
Function InitPortCan(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
Function CloseLastOpenPort: Integer;{关闭最后打开的串口}
Function CloseLastOpenPortCan: Integer;{关闭最后打开的串口}
Function ClosePos(Const Handle : Thandle; iPosAddr : Byte) : Integer;
Function ClosePosCan(Const iPosAddr:Integer):Integer;
Function DwonloadMenu(Const Handle : THandle; PosNo : Byte):Boolean;
Function SetPosDate(Const iPosAddr,OpId:Integer;Const Pwd:String): integer; Procedure CloseAllPos(PortHandle : THandle);
Procedure ShowSendData ;
public
{ Public declarations }
end;
//Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;stdcall;
Function Opencard():Boolean;StdCall;
Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;StdCall;
Function Closecard():Boolean;StdCall;
Function CanSend(Var SendData:Byte):Boolean;StdCall;
Function CanRece(Var ReceData:Byte):Boolean;StdCall;var
Form1: TForm1;
PortIndex : Byte; //串口;
PosStyle : Byte =0 ; //POS机类型;0:485POS机;1:CanPos机;
PortHandle : THandle; //打开串口句柄
BoolInitPort : Boolean = False;
sql : string;
requit : string;
implementation{$R *.dfm}
Function Opencard():Boolean;external 'win98dll.dll' name 'Opencard';StdCall;
Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;external 'win98dll.dll' name 'CanInit';StdCall;
Function Closecard():Boolean;external 'win98dll.dll' name 'Closecard';StdCall;
Function CanSend(Var SendData:Byte):Boolean;external 'win98dll.dll' name 'CanSend';StdCall;
Function CanRece(Var ReceData:Byte):Boolean;external 'win98dll.dll' name 'CanRece';StdCall;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//************************函数实现部分************************************************
Function TForm1.InitPort(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
begin
if BoolInitPort Then CloseLastOpenPort;
BoolInitPort := True;
Case PosStyle of 1: Result := InitPortCan(iPort ,iBaudRate,rHandle); end;
end;
Function TForm1.CloseLastOpenPort: Integer;{关闭最后打开的串口}
begin
if Not BoolInitPort Then Exit;
sleep(250);
BoolInitPort := False;
Try
Case PosStyle of
1: Result := CloseLastOpenPortCan;
end;
Except End;
end;Function TForm1.InitPortCan(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
begin
end;
procedure TForm1.CloseAllPos(PortHandle : THandle);
Var i,PosNo : integer;
begin
//-->
if ClosePos(PortHandle,PosNo)<>0 then exit ;
end;
Function TForm1.ClosePos(Const Handle : Thandle; iPosAddr : Byte) : Integer;
begin
Case PosStyle of
1: Result := ClosePosCan(iPosAddr);
end;
end;
Function TForm1.ClosePosCan(Const iPosAddr:Integer):Integer;
Var bSendData :Array[0..9] of Byte;
begin
Result:=0;
bSendData[0] :=iPosAddr;
bSendData[1] :=8;
bSendData[2] :=$CB;
bSendData[3] :=$AA; bSendData[4] :=$AA;
bSendData[5] :=$AA; bSendData[6] :=$AA;
bSendData[7] :=$AA; bSendData[8] :=$AA;
bSendData[9] :=$FF- (bSendData[2]+bSendData[3]+bSendData[4]+
bSendData[5]+bSendData[6]+bSendData[7]+bSendData[8]);
//-->发送数据.
if Not CanSend(bSendData[0]) Then Begin
result:=2;Exit;
End;
end;Function TForm1.CloseLastOpenPortCan: Integer;{关闭最后打开的串口}
begin
Try
Closecard();
Finally End;
end;
function TForm1.DwonloadMenu(Const Handle: THandle;PosNo: Byte): Boolean;
begin
end;
Function TForm1.SetPosDate(Const iPosAddr,OpId:Integer;Const Pwd:String): integer;
Begin
end;procedure TForm1.seData1KeyPress(Sender: TObject; var Key: Char);
begin
if key='-' then begin
Key := #0;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
LabelCardState.Caption := '未打开卡';
ShowSendData;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
Var Baud1 , Baud2 : Byte;
begin
Case RadioGroup_BPS.ItemIndex of
0 : Begin //--> 50K
Baud1 :=$07; Baud2:=$2F;
End;
1 : Begin //--> 40K
Baud1 :=$07; Baud2:=$FF;
End;
2 : Begin //--> 30K
Baud1 :=$0A; Baud2:=$FF;
End;
3 : Begin //--> 20K
Baud1 :=$0f; Baud2:=$ff;
End;
4 : Begin //--> 10K
Baud1 :=$1f; Baud2:=$ff;
End;
5 : Begin //--> 5 K;
Baud1 :=$3f; Baud2:=$ff;
End;
End;
//-->打开卡.
if Not Opencard() Then Begin
ShowMessage('打开卡失败!') ;
exit;
End;
if Not CanInit($02,$FF,Baud1,Baud2) Then
Begin
ShowMessage('初始化卡失败!');
Exit;
End;
{}
LabelCardState.Caption := '卡已打开'; BitBtn3.Enabled := True;
BitBtn4.Enabled := True;
BitBtn2.Enabled := True;
BitBtn1.Enabled := False;
SysTimer.Enabled := True;
FSending := False;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
begin
If Not Closecard() then begin
ShowMessage('关闭卡失败!') ;
End else begin
BitBtn3.Enabled := False;
BitBtn4.Enabled := False;
BitBtn2.Enabled := False;
BitBtn1.Enabled := True;
SysTimer.Enabled := False;
end;
LabelCardState.Caption := '卡已关闭';
end;
程序启动时,刷卡机向电脑发送数据,程序接收后根据通信协议进行处理,再向数据库(sql server 2000)查询数据,返回结果。unit Txtest;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, Buttons, ComCtrls, Menus, DB, ADODB;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet2: TTabSheet;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
RadioGroup_BPS: TRadioGroup;
GroupBox3: TGroupBox;
seData1: TSpinEdit;
seData2: TSpinEdit;
seData3: TSpinEdit;
seData4: TSpinEdit;
seData5: TSpinEdit;
seData6: TSpinEdit;
seData7: TSpinEdit;
seData8: TSpinEdit;
seData9: TSpinEdit;
seData10: TSpinEdit;
Label26: TLabel;
LabelSendData: TLabel;
BitBtn5: TBitBtn;
GroupBox4: TGroupBox;
MemoShow: TMemo;
LabelCardState: TLabel;
BitBtn2: TBitBtn;
SysTimer: TTimer;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure seData1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure seData1Change(Sender: TObject);
procedure SysTimerTimer(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure Over1Click(Sender: TObject);
private
{ Private declarations }
FSending : Boolean;
Function InitPort(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
Function InitPortCan(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
Function CloseLastOpenPort: Integer;{关闭最后打开的串口}
Function CloseLastOpenPortCan: Integer;{关闭最后打开的串口}
Function ClosePos(Const Handle : Thandle; iPosAddr : Byte) : Integer;
Function ClosePosCan(Const iPosAddr:Integer):Integer;
Function DwonloadMenu(Const Handle : THandle; PosNo : Byte):Boolean;
Function SetPosDate(Const iPosAddr,OpId:Integer;Const Pwd:String): integer; Procedure CloseAllPos(PortHandle : THandle);
Procedure ShowSendData ;
public
{ Public declarations }
end;
//Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;stdcall;
Function Opencard():Boolean;StdCall;
Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;StdCall;
Function Closecard():Boolean;StdCall;
Function CanSend(Var SendData:Byte):Boolean;StdCall;
Function CanRece(Var ReceData:Byte):Boolean;StdCall;var
Form1: TForm1;
PortIndex : Byte; //串口;
PosStyle : Byte =0 ; //POS机类型;0:485POS机;1:CanPos机;
PortHandle : THandle; //打开串口句柄
BoolInitPort : Boolean = False;
sql : string;
requit : string;
implementation{$R *.dfm}
Function Opencard():Boolean;external 'win98dll.dll' name 'Opencard';StdCall;
Function CanInit(address:Byte;mask:Byte;time0:Byte;time1:Byte):Boolean;external 'win98dll.dll' name 'CanInit';StdCall;
Function Closecard():Boolean;external 'win98dll.dll' name 'Closecard';StdCall;
Function CanSend(Var SendData:Byte):Boolean;external 'win98dll.dll' name 'CanSend';StdCall;
Function CanRece(Var ReceData:Byte):Boolean;external 'win98dll.dll' name 'CanRece';StdCall;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//************************函数实现部分************************************************
Function TForm1.InitPort(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
begin
if BoolInitPort Then CloseLastOpenPort;
BoolInitPort := True;
Case PosStyle of 1: Result := InitPortCan(iPort ,iBaudRate,rHandle); end;
end;
Function TForm1.CloseLastOpenPort: Integer;{关闭最后打开的串口}
begin
if Not BoolInitPort Then Exit;
sleep(250);
BoolInitPort := False;
Try
Case PosStyle of
1: Result := CloseLastOpenPortCan;
end;
Except End;
end;Function TForm1.InitPortCan(Const iPort ,iBaudRate: Integer;Out rHandle:Thandle): Integer;{初始化串口}
begin
end;
procedure TForm1.CloseAllPos(PortHandle : THandle);
Var i,PosNo : integer;
begin
//-->
if ClosePos(PortHandle,PosNo)<>0 then exit ;
end;
Function TForm1.ClosePos(Const Handle : Thandle; iPosAddr : Byte) : Integer;
begin
Case PosStyle of
1: Result := ClosePosCan(iPosAddr);
end;
end;
Function TForm1.ClosePosCan(Const iPosAddr:Integer):Integer;
Var bSendData :Array[0..9] of Byte;
begin
Result:=0;
bSendData[0] :=iPosAddr;
bSendData[1] :=8;
bSendData[2] :=$CB;
bSendData[3] :=$AA; bSendData[4] :=$AA;
bSendData[5] :=$AA; bSendData[6] :=$AA;
bSendData[7] :=$AA; bSendData[8] :=$AA;
bSendData[9] :=$FF- (bSendData[2]+bSendData[3]+bSendData[4]+
bSendData[5]+bSendData[6]+bSendData[7]+bSendData[8]);
//-->发送数据.
if Not CanSend(bSendData[0]) Then Begin
result:=2;Exit;
End;
end;Function TForm1.CloseLastOpenPortCan: Integer;{关闭最后打开的串口}
begin
Try
Closecard();
Finally End;
end;
function TForm1.DwonloadMenu(Const Handle: THandle;PosNo: Byte): Boolean;
begin
end;
Function TForm1.SetPosDate(Const iPosAddr,OpId:Integer;Const Pwd:String): integer;
Begin
end;procedure TForm1.seData1KeyPress(Sender: TObject; var Key: Char);
begin
if key='-' then begin
Key := #0;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
LabelCardState.Caption := '未打开卡';
ShowSendData;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
Var Baud1 , Baud2 : Byte;
begin
Case RadioGroup_BPS.ItemIndex of
0 : Begin //--> 50K
Baud1 :=$07; Baud2:=$2F;
End;
1 : Begin //--> 40K
Baud1 :=$07; Baud2:=$FF;
End;
2 : Begin //--> 30K
Baud1 :=$0A; Baud2:=$FF;
End;
3 : Begin //--> 20K
Baud1 :=$0f; Baud2:=$ff;
End;
4 : Begin //--> 10K
Baud1 :=$1f; Baud2:=$ff;
End;
5 : Begin //--> 5 K;
Baud1 :=$3f; Baud2:=$ff;
End;
End;
//-->打开卡.
if Not Opencard() Then Begin
ShowMessage('打开卡失败!') ;
exit;
End;
if Not CanInit($02,$FF,Baud1,Baud2) Then
Begin
ShowMessage('初始化卡失败!');
Exit;
End;
{}
LabelCardState.Caption := '卡已打开'; BitBtn3.Enabled := True;
BitBtn4.Enabled := True;
BitBtn2.Enabled := True;
BitBtn1.Enabled := False;
SysTimer.Enabled := True;
FSending := False;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
begin
If Not Closecard() then begin
ShowMessage('关闭卡失败!') ;
End else begin
BitBtn3.Enabled := False;
BitBtn4.Enabled := False;
BitBtn2.Enabled := False;
BitBtn1.Enabled := True;
SysTimer.Enabled := False;
end;
LabelCardState.Caption := '卡已关闭';
end;
解决方案 »
- 网页填表 文本框 只有ID如何填表 delphi webbrowser
- tkp.PrivilegeCount:=1;这句的注释
- 请问如何将一个指定目录下所有文件的后缀由*.BMP改为*.PBM?
- 文本文件的保存
- 关于IntraWebr
- 请问windows自带的cd唱机里放一张cd就自动从internet上下载该cd的信息这个功能怎么实现?最好有源码,谢谢。
- 谨请大家给点建议:ADO访问ORACLE存储过程
- 谁能详细讲一下delphi中的指针?
- 大富翁怎么死活进不去了?
- 有用report builder做报表的吗?哪里有report builder 可下载,能转告吗?
- 急..多线程访问外部变量..在线等
- 关于自动刷票的功能实现
begin
Close;
end;procedure TForm1.BitBtn3Click(Sender: TObject);
var bData :Array[0..9] of byte;
ShowData : String;
begin
While FSending do Sleep(1);
FSending := True; bData[0] := seData1.Value ;
bData[1] := seData2.Value ;
bData[2] := seData3.Value ;
bData[3] := seData4.Value ;
bData[4] := seData5.Value ;
bData[5] := seData6.Value ;
bData[6] := seData7.Value ;
bData[7] := seData8.Value ;
bData[8] := seData9.Value ;
bData[9] := seData10.Value ;
ShowData := '发送数据 "' +IntToHex(bData[0],2)+','+
IntToHex(bData[1],2)+','+
IntToHex(bData[2],2)+','+
IntToHex(bData[3],2)+','+
IntToHex(bData[4],2)+','+
IntToHex(bData[5],2)+','+
IntToHex(bData[6],2)+','+
IntToHex(bData[7],2)+','+
IntToHex(bData[8],2)+','+
IntToHex(bData[9],2)+'"';
if Not CanSend(bData[0]) Then
Begin
MemoShow.Lines.Add(ShowData + ' [失败]');
FSending := False;
Exit;
End;
MemoShow.Lines.Add(ShowData + ' [成功]');
FSending := False;end;procedure TForm1.ShowSendData;
Var iByte : Byte;
bData :Array[0..9] of byte;
begin
bData[0] := seData1.Value ;
bData[1] := seData2.Value ;
bData[2] := seData3.Value ;
bData[3] := seData4.Value ;
bData[4] := seData5.Value ;
bData[5] := seData6.Value ;
bData[6] := seData7.Value ;
bData[7] := seData8.Value ;
bData[8] := seData9.Value ;
bData[9] := seData10.Value ; iByte := $ff-( bData[2]+
bData[3]+
bData[4]+
bData[5]+
bData[6]+
bData[7]+
bData[8] ); seData10.Value := iByte; LabelSendData.Caption := IntToHex(seData1.Value ,2)+','+
IntToHex(seData2.Value ,2)+','+
IntToHex(seData3.Value ,2)+','+
IntToHex(seData4.Value ,2)+','+
IntToHex(seData5.Value ,2)+','+
IntToHex(seData6.Value ,2)+','+
IntToHex(seData7.Value ,2)+','+
IntToHex(seData8.Value ,2)+','+
IntToHex(seData9.Value ,2)+','+
IntToHex(seData10.Value,2);
end;
procedure TForm1.seData1Change(Sender: TObject);
begin
ShowSendData;
end;procedure TForm1.SysTimerTimer(Sender: TObject);
var bData :Array[0..9] of byte;
var sData :Array[0..9] of byte;
var cash :Array[0..2] of byte;
var temp10 : string ;
var temp9 : integer;
var temp8 : string;
var temp7 : string;
var temp6 : string;
var temp5 : string;
var temp4 : integer;
var xiaofei : integer;
var bianliang : string;
var bianliang1 : string;
var bianliang2 : string;
var bianliang3 : string;
var bianliang4 : string;
var bianliang5 : string;
ShowData : String;
begin
While FSending do
//exit;
FSending := True;
If CanRece(bData[0]) then Begin
/////////////////////////////
if bData[2]=$C8 then begin
sData[0] := bData[0] ;
sData[1] := seData2.Value ;
sData[2] := seData3.Value ;
sData[3] := seData4.Value ;
sData[4] := seData5.Value ;
sData[5] := seData6.Value ;
sData[6] := seData7.Value ;
sData[7] := seData8.Value ;
sData[8] := seData9.Value ;
sData[9] := seData10.Value ; if Not CanSend(sData[0]) Then
Begin
//MemoShow.Lines.Add(ShowData + ' [失败]');
//FSending := False;
Exit;
End;
end;
/////////////////////////////
if bData[2]=$00 then begin
ShowData := '接收到数据 "' +IntToHex(bData[0],2)+','+
IntToHex(bData[1],2)+','+
IntToHex(bData[2],2)+','+
IntToHex(bData[3],2)+','+
IntToHex(bData[4],2)+','+
IntToHex(bData[5],2)+','+
IntToHex(bData[6],2)+','+
IntToHex(bData[7],2)+','+
IntToHex(bData[8],2)+','+
IntToHex(bData[9],2)+'"';
MemoShow.Lines.Add(ShowData);
//////////////////
begin
edit9.text:=string(IntToHex(bData[0],2));
temp5:=string(IntToHex(bData[6],2)) + string(IntToHex(bData[7],2)) + string(IntToHex(bData[8],2));
edit4.Text:=temp5 ;
xiaofei:=strtoint('$'+edit4.Text);
edit11.Text:=inttostr(xiaofei); edit5.text:=String(IntToHex(bData[3],2)+IntToHex(bData[4],2)+IntToHex(bData[5],2)) ; bianliang1:='已授权';
sql:='select * from tbl_Peruser where cardkeynum ='+#39+trim(edit5.text)+#39' and valid='+#39+trim(bianliang1)+#39'';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
adoquery1.Open;
temp9:=AdoQuery1.fieldbyname('cashSmoney').asinteger;
edit6.Text:=AdoQuery1.fieldbyname('CardID').asstring;
edit7.Text:=AdoQuery1.fieldbyname('CashSMoney').asstring;
edit8.Text:=AdoQuery1.fieldbyname('CashLMoney').asstring;
//edit9.Text:=AdoQuery1.fieldbyname('CashLMoney').asstring;
edit10.Text:=AdoQuery1.fieldbyname('ID').asstring;
edit12.Text:=AdoQuery1.fieldbyname('name').asstring;
edit13.Text:=AdoQuery1.fieldbyname('department').asstring;
edit15.Text:=AdoQuery1.fieldbyname('cardtype').asstring;
edit16.Text:=AdoQuery1.fieldbyname('valid').asstring;
edit17.Text:=AdoQuery1.fieldbyname('riqi').asstring;
bianliang:='禁餐卡';
if (edit10.Text<>'') and (edit15.Text<>bianliang) then
begin bianliang:='三餐卡';
//bianliang1:='已授权';
if (edit15.Text=bianliang) and (edit16.Text=bianliang1) then
begin
if strtoint(edit7.Text)<xiaofei then
begin
if (strtoint(edit7.Text)+strtoint(edit8.text))<xiaofei then
begin
//exit ;
end;
if strtoint(edit7.text)+strtoint(edit8.text)>=xiaofei then
begin
temp4:=(strtoint(edit7.text)+strtoint(edit8.text))-xiaofei;
///////////////////////////////补贴余额不足
temp10:=IntToHex(temp4,6);
temp6:=copy(temp10,1,2) ;
temp7:=copy(temp10,3,2) ;
temp8:=copy(temp10,5,2) ;
edit1.Text:=temp6;
edit2.Text:=temp7;
edit3.text:=temp8;
cash[0]:=strtoint('$'+edit1.Text);
cash[1]:=strtoint('$'+edit2.Text);
cash[2]:=strtoint('$'+edit3.text);
temp9:=strtoint(edit7.text)+strtoint(edit8.text);
temp4:=temp9-xiaofei ;
///////////////数据库更新
edit14.Text:=inttostr(temp4);
sql:='update tbl_peruser set cashSmoney=0,cashLmoney ='+#39+trim(edit14.text)+#39' where cardkeynum ='+#39+trim(edit5.text)+#39'';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
Adoquery1.ExecSQL; sql:='insert into tbl_liushui (cardkeynum,CardID,Cash,Opmid,CashSMoney,CashLMoney,yuanid,name,department) '+'values ('+#39+trim(edit5.text)+#39','+Edit6.Text+','+edit11.Text+','+Edit9.text+',0,'+#39+trim(edit14.text)+#39','+#39+trim(edit10.text)+#39','+#39+trim(edit12.text)+#39','+#39+trim(edit13.text)+#39')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;
sData[0] := bData[0] ;
sData[1] := $08 ;
sData[2] := $22 ;
sData[3] := cash[0] ;
sData[4] := cash[1] ;
sData[5] := cash[2] ;
sData[6] := $00 ;
sData[7] := $00 ;
sData[8] := $00 ;
//sData[9] := 164;
sData[9]:=$ff-( sData[2]+
sData[3]+
sData[4]+
sData[5]+
sData[6]+
sData[7]+
sData[8] ); if Not CanSend(sData[0]) Then
Begin
//MemoShow.Lines.Add(ShowData + ' [失败]');
//FSending := False;
//Exit;
End;
//////////////// end;
//end;
FSending := False;
//exit;
end;
end;
//end;
//////////////////////////////////////////// if strtoint(edit7.Text)>=xiaofei then
begin
temp9:=strtoint(edit7.text)+strtoint(edit8.text); temp4:=temp9-xiaofei ; temp10:=IntToHex(temp4,6);
temp6:=copy(temp10,1,2) ;
temp7:=copy(temp10,3,2) ;
temp8:=copy(temp10,5,2) ;
edit1.Text:=temp6;
edit2.Text:=temp7;
edit3.text:=temp8;
cash[0]:=strtoint('$'+edit1.Text);
cash[1]:=strtoint('$'+edit2.Text);
cash[2]:=strtoint('$'+edit3.text);
temp9:=strtoint(edit7.text);
temp4:=temp9-xiaofei ;
///////////////数据库更新
edit14.Text:=inttostr(temp4);
sql:='update tbl_peruser set cashSmoney ='+#39+trim(edit14.text)+#39' where cardkeynum ='+#39+trim(edit5.text)+#39'';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
Adoquery1.ExecSQL; sql:='insert into tbl_liushui (cardkeynum,CardID,Cash,Opmid,CashSMoney,CashLMoney,yuanid,name,department) '+'values ('+#39+trim(edit5.text)+#39','+Edit6.Text+','+edit11.Text+','+Edit9.text+','+#39+trim(edit14.text)+#39','+Edit8.Text+','+#39+trim(edit10.text)+#39','+#39+trim(edit12.text)+#39','+#39+trim(edit13.text)+#39')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;
//////////////////////////
//end;
end;
//end;
//end; sData[0] := bData[0] ;
sData[1] := $08 ;
sData[2] := $22 ;
sData[3] := cash[0] ;
sData[4] := cash[1] ;
sData[5] := cash[2] ;
sData[6] := $00 ;
sData[7] := $00 ;
sData[8] := $00 ;
//sData[9] := 164;
sData[9]:=$ff-( sData[2]+
sData[3]+
sData[4]+
sData[5]+
sData[6]+
sData[7]+
sData[8] ); if Not CanSend(sData[0]) Then
Begin
//MemoShow.Lines.Add(ShowData + ' [失败]');
//FSending := False;
//Exit;
End;
////////////////// end;
//end;
// FSending := False;///////////////////////////////////////////////////////一餐卡
bianliang:='一餐卡';
//bianliang1:='已授权';
if (edit15.Text=bianliang) and (edit16.Text=bianliang1) then
begin
bianliang3:=formatdatetime('yyyy-mm-dd',now());
if edit17.Text=bianliang3 then
begin
//exit;
end; if strtoint(edit7.Text)<xiaofei then
begin
if (strtoint(edit7.Text)+strtoint(edit8.text))<xiaofei then
begin
//exit ;
end;
if strtoint(edit7.text)+strtoint(edit8.text)>=xiaofei then
begin
temp4:=(strtoint(edit7.text)+strtoint(edit8.text))-xiaofei;
///////////////////////////////补贴余额不足
temp10:=IntToHex(temp4,6);
temp6:=copy(temp10,1,2) ;
temp7:=copy(temp10,3,2) ;
temp8:=copy(temp10,5,2) ;
edit1.Text:=temp6;
edit2.Text:=temp7;
edit3.text:=temp8;
cash[0]:=strtoint('$'+edit1.Text);
cash[1]:=strtoint('$'+edit2.Text);
cash[2]:=strtoint('$'+edit3.text);
temp9:=strtoint(edit7.text)+strtoint(edit8.text);
temp4:=temp9-xiaofei ;
///////////////数据库更新
edit14.Text:=inttostr(temp4);
sql:='update tbl_peruser set cashSmoney=0,cashLmoney ='+#39+trim(edit14.text)+#39' where cardkeynum ='+#39+trim(edit5.text)+#39'';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
Adoquery1.ExecSQL; sql:='insert into tbl_liushui (cardkeynum,CardID,Cash,Opmid,CashSMoney,CashLMoney,yuanid,name,department) '+'values ('+#39+trim(edit5.text)+#39','+Edit6.Text+','+edit11.Text+','+Edit9.text+',0,'+#39+trim(edit14.text)+#39','+#39+trim(edit10.text)+#39','+#39+trim(edit12.text)+#39','+#39+trim(edit13.text)+#39')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;
////////////////////////// sData[0] := bData[0] ;
sData[1] := $08 ;
sData[2] := $22 ;
sData[3] := cash[0] ;
sData[4] := cash[1] ;
sData[5] := cash[2] ;
sData[6] := $00 ;
sData[7] := $00 ;
sData[8] := $00 ;
//sData[9] := 164;
sData[9]:=$ff-( sData[2]+
sData[3]+
sData[4]+
sData[5]+
sData[6]+
sData[7]+
sData[8] ); if Not CanSend(sData[0]) Then
Begin
//MemoShow.Lines.Add(ShowData + ' [失败]');
//FSending := False;
Exit;
End;
//////////////// end; //////////////////////////////////////////// if strtoint(edit7.Text)>=xiaofei then
begin
temp9:=strtoint(edit7.text)+strtoint(edit8.text); temp4:=temp9-xiaofei ; temp10:=IntToHex(temp4,6);
temp6:=copy(temp10,1,2) ;
temp7:=copy(temp10,3,2) ;
temp8:=copy(temp10,5,2) ;
edit1.Text:=temp6;
edit2.Text:=temp7;
edit3.text:=temp8;
cash[0]:=strtoint('$'+edit1.Text);
cash[1]:=strtoint('$'+edit2.Text);
cash[2]:=strtoint('$'+edit3.text);
temp9:=strtoint(edit7.text);
temp4:=temp9-xiaofei ;
///////////////数据库更新
edit14.Text:=inttostr(temp4);
sql:='update tbl_peruser set cashSmoney ='+#39+trim(edit14.text)+#39' where cardkeynum ='+#39+trim(edit5.text)+#39'';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
Adoquery1.ExecSQL; sql:='insert into tbl_liushui (cardkeynum,CardID,Cash,Opmid,CashSMoney,CashLMoney,yuanid,name,department) '+'values ('+#39+trim(edit5.text)+#39','+Edit6.Text+','+edit11.Text+','+Edit9.text+','+#39+trim(edit14.text)+#39','+Edit8.Text+','+#39+trim(edit10.text)+#39','+#39+trim(edit12.text)+#39','+#39+trim(edit13.text)+#39')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;//////////////////////////
end;
end;
end;
end;
end;
end;
if (edit10.Text='') OR (edit15.Text=bianliang) then
begin
sData[0] := bData[0] ;
sData[1]:= 8;
sData[2]:= $13;
sData[3]:= 0;
sData[4]:= $00;
sData[5]:= $00;
sData[6]:= $00;
sData[7]:= $00;
sData[8]:= $00;
sData[9]:=$ff-( sData[2]+
sData[3]+
sData[4]+
sData[5]+
sData[6]+
sData[7]+
sData[8] ); if Not CanSend(sData[0]) Then
Begin
//MemoShow.Lines.Add(ShowData + ' [失败]');
//FSending := False;
Exit;
End; end;
end;
end;procedure TForm1.N1Click(Sender: TObject);
begin
//seData1.Value := 0;
seData2.Value := 8;
seData3.Value := $C8;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;procedure TForm1.N2Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $22;
seData4.Value := 0;
seData5.Value := $30;
seData6.Value := $39;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;
procedure TForm1.N11Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $13;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;procedure TForm1.N21Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $14;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;procedure TForm1.N31Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $15;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;procedure TForm1.N41Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $16;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;procedure TForm1.Over1Click(Sender: TObject);
begin
seData2.Value := 8;
seData3.Value := $17;
seData4.Value := 0;
seData5.Value := 0;
seData6.Value := 0;
seData7.Value := 0;
seData8.Value := 0;
seData9.Value := 0;
If BitBtn3.Enabled Then BitBtn3.Click;end;end.