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

📄 tcommsenddatathread_unit.pas

📁 这是一个非常实用的实时串口通讯程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
                                                                           /////////////////////////
                                                                         end
                                                                         else
                                                                         begin
                                                                           IsOperCard :=false;
                                                                           iStatus :=0;
                                                                         end;
                                                                       end;
                                                                    ///不是操作员卡判断是否开机 //没开机则不用查询
                                                                   if (iStatus =0) then
                                                                   begin
                                                                     if (not PayApp[NowPayNo].Open_Pay) then
                                                                     begin
                                                                       iStatus :=$80;
                                                                       AccountOpen:=false;
                                                                     end
                                                                     else
                                                                     begin
                                                                       SQL.Text :=' SELECT PERSON_ACCOUNT.PA_ACCOUNT, PERSON_ACCOUNT.PA_PWD, '+
                                                                                  '          PERSON_ACCOUNT.PA_STATUS, PERSON_ACCOUNT.PA_IFOPEN, '+
                                                                                  '          PERSON_ACCOUNT.PA_MONEY,  DEGREETYPE.ChangeScale '+
                                                                                  ' FROM PERSON_ACCOUNT INNER JOIN '+
                                                                                  '          DEGREETYPE ON '+
                                                                                  '          PERSON_ACCOUNT.PA_DEGREEID = DEGREETYPE.DEGREE_ID'+
                                                                                  ' WHERE (PERSON_ACCOUNT.PA_CARDNO = ' + IntToStr(iAccount) + ') and (PA_STATUS=1) ';
                                                                       try
                                                                         Open;
                                                                         if RecordCount >0 then
                                                                         begin
                                                                           AccountOpen :=true;
                                                                           iAccount     := FieldByName('PA_ACCOUNT').AsInteger;
                                                                           iAccountPwd  := FieldByName('PA_PWD').AsInteger;
                                                                           iStatus      := FieldByName('PA_STATUS').AsInteger-1;
                                                                           //iIfOpen      := FieldByName('PA_IFOPEN').AsInteger;
                                                                           iAMoney      := FieldByName('PA_MONEY').AsInteger;
                                                                           //iALMoney     := FieldByName('Pass_Limit').AsInteger;
                                                                           //iMFMoney     := FieldByName('MF_MONEY').AsInteger;
                                                                           //iChange      := FieldbyName('ChangeScale').AsInteger;
                                                                         end;
                                                                       except
                                                                       end;
                                                                     end;
                                                                   end;
                                                                   {if ((not PayApp[NowPayNo].Open_Pay) and (PayApp[NowPayNo].User_CardNo <>CardNo))
                                                                      or (PayApp[NowPayNo].User_CardNo = CardNo) then
                                                                   begin
                                                                     iStatus :=$80;
                                                                     AccountOpen:=false;
                                                                   end}
                                                                  end;
                                                                 end;
                                                          3,4:   begin      //考勤门禁
                                                                   SQL.Text :=' SELECT PERSON_ACCOUNT.PA_ACCOUNT, PERSON_ACCOUNT.PA_PWD, '+
                                                                              '      PERSON_ACCOUNT.PA_STATUS, PERSON_ACCOUNT.PA_IFOPEN, '+
                                                                              '      PERSON_ACCOUNT.PA_MONEY, DEGREETYPE.ChangeScale,  '+
                                                                              '      CTMachineTAB.CT_GroupID, DEGREETYPE.DEGREE_NAME,  '+
                                                                              '      PERSON_ACCOUNT.PA_DEPTID, DEPARTMENT.DEPT_NAME,  '+
                                                                              '      PERSON_ACCOUNT.PA_NAME    '+
                                                                              ' FROM PERSON_ACCOUNT INNER JOIN  '+
                                                                              '      DEGREETYPE ON        '+
                                                                              '      PERSON_ACCOUNT.PA_DEGREEID = DEGREETYPE.DEGREE_ID INNER JOIN   '+
                                                                              '      AccDoorTAB ON    '+
                                                                              '      PERSON_ACCOUNT.PA_ACCOUNT = AccDoorTAB.Account_No INNER JOIN   '+
                                                                              '      CTMachineTAB ON AccDoorTAB.Path_Num = CTMachineTAB.CT_TCPathNUM AND     '+
                                                                              '      AccDoorTAB.Mac_Num = CTMachineTAB.CT_MachineNUM AND  '+
                                                                              '      AccDoorTAB.Command_Num = CTMachineTAB.CT_CommandNum INNER JOIN    '+
                                                                              '      DEPARTMENT ON PERSON_ACCOUNT.PA_DEPTID = DEPARTMENT.DEPT_ID   '+
                                                                              ' WHERE (AccDoorTAB.Command_Num = 1) AND (AccDoorTAB.Path_Num = '+IntToStr(CommNetDriver.GDataBuf[iHead+2])+') AND  '+
                                                                              '        (AccDoorTAB.Mac_Num = '+IntToStr(CommNetDriver.GDataBuf[iHead+3])+') '+
                                                                              '        And  (PERSON_ACCOUNT.PA_CARDNO = ' + IntToStr(iAccount) + ') and (PA_STATUS=1) ';


                                                                   try
                                                                     Open;
                                                                     if RecordCount >0 then
                                                                     begin
                                                                       AccountOpen :=true;
                                                                       iAccount     := FieldByName('PA_ACCOUNT').AsInteger;
                                                                       iAccountPwd  := FieldByName('PA_PWD').AsInteger;
                                                                       iStatus      := FieldByName('PA_STATUS').AsInteger-1;
                                                                       //iIfOpen      := FieldByName('PA_IFOPEN').AsInteger;
                                                                       iAMoney      := FieldByName('PA_MONEY').AsInteger;
                                                                       //iALMoney     := FieldByName('Pass_Limit').AsInteger;
                                                                       //iMFMoney     := FieldByName('MF_MONEY').AsInteger;
                                                                       //iChange      := FieldbyName('ChangeScale').AsInteger;
                                                                       iOAGroupID :=FieldbyName('CT_GroupID').AsInteger;
                                                                       idegname   :=FieldbyName('DEGREE_NAME').AsString;
                                                                       idepid     :=FieldbyName('PA_DEPTID').AsInteger;
                                                                       idepname   :=FieldbyName('DEPT_NAME').AsString;
                                                                       ipername   :=FieldbyName('PA_NAME').AsString;

                                                                       Close;
                                                                       Sql.Text:=' begin tran '+      {插入原始表}
                                                                                 '   INSERT INTO OrigAttDataTAB '+
                                                                                 '          (Account_AttID, Account_DeptName, Account_DeptID, Account_Name, Account_Degree,  '+
                                                                                 '          PushCard_Time, OA_TPathNum, OA_MachineNum, OA_CommandNum, OA_GroupID,  '+
                                                                                 '           Operator_Name, Operator_ID, ReCord_time, OriApp_type)  '+
                                                                                 '   VALUES ('+IntToStr(iAccount)+','''+idepname+''','+IntToStr(idepid)+', '''+ipername+''', '''+idegname+''', getdate(),'+
                                                                                 '   '+IntToStr(CommNetDriver.GDataBuf[iHead+2])+', '+IntToStr(CommNetDriver.GDataBuf[iHead+3])+','+
                                                                                 '   1, '+IntToStr(iOAGroupID)+', '''+Username+''', '+IntToStr(UserID)+', '+
                                                                                 '   getdate(),'+IntToStr(Postype - 3)+') '+
                                                                                 ' commit tran';
                                                                                
                                                                       try
                                                                         ExecSql;
                                                                       except
                                                                       end;
                                                                     end;
                                                                   except
                                                                   end;
                                                                 end;
                                                          End;
                                                          try
                                                             if AccountOpen then
                                                               begin
                                                                   ZeroMemory(@bSendDataBuf,1024);
                                                                   bSendDataBuf[1] := STARSIGN;
                                                                   bSendDataBuf[2] := $80;
                                                                   bSendDataBuf[3] := CommNetDriver.GDataBuf[iHead+2];
                                                                   bSendDataBuf[4] := CommNetDriver.GDataBuf[iHead+3];
                                                                   /// //////小组费率/////
                                                                   if (PosType=0) or (PosType=5) or (PosType=6) or (PosType=7) then
                                                                   begin
                                                                     with GLBDataModule.ADOQuery2 do
                                                                     begin
                                                                       Close;
                                                                       Sql.Text :='SELECT SALEGROUPTAB.Group_Rate '+
                                                                                  ' FROM SALEGROUPTAB INNER JOIN '+
                                                                                  '    CTMachineTAB ON SALEGROUPTAB.Group_ID = CTMachineTAB.CT_GroupID '+
                                                                                  ' WHERE (CTMachineTAB.CT_CommandNum = 1) AND '+
                                                                                  '      (CTMachineTAB.CT_TCPathNUM = '+IntToStr(CommNetDriver.GDataBuf[iHead+2])+')'+
                                                                                  '  AND (CTMachineTAB.CT_MachineNUM= '+IntToStr(CommNetDriver.GDataBuf[iHead+3])+') '+
                                                                                  '  UPDATE PERSON_ACCOUNT SET PA_IFOPEN= ''1'' '+
                                                                                  '    WHERE (PA_ACCOUNT='+IntToStr(iAccount)+')  ';
                                                                       try
                                                                         Open;
                                                                         iRate :=0;
                                                                         if RecordCount >0 then
                                                                         begin
                                                                           iRate :=Round(FieldbyName('Group_Rate').AsFloat*iChange);
                                                                         end;
                                                                       except

                                                                       end;
                                                                     end;
                                                                   end;  

                                                                   CopyMemory(@bSendDataBuf[29],@iAccount,4);
                                                                   bSendDataBuf[5] := bSendDataBuf[32];
                                                                   bSendDataBuf[6] := bSendDataBuf[31];
                                                                   bSendDataBuf[7] := bSendDataBuf[30];
                                                                   bSendDataBuf[8] := bSendDataBuf[29];

                                                                   CopyMemory(@bSendDataBuf[29],@iALMoney,2);
                                                                   bSendDataBuf[9] := bSendDataBuf[30];
                                                                   bSendDataBuf[10]:= bSendDataBuf[29];
                                                                   CopyMemory(@bSendDataBuf[29],@iAccountPwd,2);
                                                                   bSendDataBuf[11]:= bSendDataBuf[30];
                                                                   bSendDataBuf[12]:= bSendDataBuf[29];
                                    {begin 修改状态位,状态位低半节金额的高位 }
                                                                   bSendDataBuf[13] := iStatus;
                                                                   bSendDataBuf[14] := 0;
                                                                   bSendDataBuf[15] := 0;
                                                                   CopyMemory(@bSendDataBuf[29],@iAMoney,3);
                                                                   bSendDataBuf[16] := bSendDataBuf[30];
                                                                   bSendDataBuf[17] := bSendDataBuf[29];
                                                                   bSendDataBuf[13] := iStatus Or bSendDataBuf[31];
                                    {end 修改状态位,状态位低半节金额的高位 }
                                                                

⌨️ 快捷键说明

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