程序功能,
程序启动时,刷卡机向电脑发送数据,程序接收后根据通信协议进行处理,再向数据库(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;

解决方案 »

  1.   

    procedure TForm1.BitBtn5Click(Sender: TObject);
    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;
      

  2.   

      //////////////////////////
      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;
      

  3.   


    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.