📄 tcommsenddatathread_unit.pas
字号:
iLength := 0;
CopyMemory(@iLength,@CommNetDriver.GDataBuf,2);
iHead := FindBufHead(@CommNetDriver.GDataBuf[3],iLength);
CommNetDriver.m_hSection.Release;
if (iHead>0) then
begin
if (CommNetDriver.GDataBuf[iHead+1]=RIGHT_CALL) then
begin
crc16:=chkcrc16(4,@CommNetDriver.GDataBuf[iHead]);
CopyMemory(@crc161,@CommNetDriver.GDataBuf[iHead+4],2);
if (crc16=crc161) then
begin
SETUPDOWN[TCTLINK[iContrl]]:=true;
SYSTIMEDOWN[TCTLINK[iContrl]] :=false;
break;
end
else
begin
ZeroMemory(@bSendDataBuf,1024);
bSendDataBuf[1] := $b4;
CommNetDriver.ClientComm.SendData(@bSendDataBuf,1);
end;
end;
end;
end;
end;
end;
end;
$01: //账户查询请求
begin
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
$02://打开账户请求
begin
begin
In_Pay :=false;
in_ServPay :=false;
//Open_Pay :=false;
IsOperCard :=false;
NowOper :=0;
NowPayNo :=0;
crc16 := chkcrc16(9,@CommNetDriver.GDataBuf[iHead]);
CopyMemory(@crc161,@CommNetDriver.GDataBuf[iHead+9],2);
//Main_Form.Edit2.text :=IntTostr(strToint(Main_Form.Edit2.Text)+1);
if (crc16<>crc161) then
begin
//Main_Form.Edit8.text :=IntTostr(strToint(Main_Form.Edit8.Text)+1);
bSendDataBuf[1] := ERROR_CALL;
nLen :=CommNetDriver.ClientComm.SendData(@bSendDataBuf,1);
if (nLen<=0) then
CommNetDriver.ClientComm.SendData(@bSendDataBuf,1);
end
else
begin
ZeroMemory(@bSendDataBuf,1024);
bSendDataBuf[1] :=$69;
// Main_Form.Edit3.text := IntTostr(Strtoint(Main_Form.Edit3.text)+1);
nLen := CommNetDriver.ClientComm.SendData(@bSendDataBuf,1);
if (nLen<=0) then
CommNetDriver.ClientComm.SendData(@bSendDataBuf,1);
With GLBDataModule.PDADOQuery do
begin
CopyMemory(@bSendDataBuf,@CommNetDriver.GDataBuf[iHead+4],4);
//若未反则不用进行
{bSendDataBuf[5]:=bSendDataBuf[1];
bSendDataBuf[1]:=bSendDataBuf[4];
bSendDataBuf[4]:=bSendDataBuf[2];
bSendDataBuf[2]:=bSendDataBuf[3];
bSendDataBuf[3]:=bSendDataBuf[4];
bSendDataBuf[4]:=bSendDataBuf[5];}
CopyMemory(@iAccount,@bSendDataBuf,4);
/////////判断POS机类型//////////////
Close;
Sql.Text :='Select CT_Type From CTMachineTAB '+
' WHERE (CTMachineTAB.CT_CommandNum = 1) AND '+
' (CTMachineTAB.CT_TCPathNUM = '+IntToStr(CommNetDriver.GDataBuf[iHead+2])+')'+
' AND (CTMachineTAB.CT_MachineNUM= '+IntToStr(CommNetDriver.GDataBuf[iHead+3])+') ';
try
Open;
PosType :=FieldbyName('CT_type').AsInteger;
CardNo := iAccount;
/////查询出纳机数组
if PosType =2 then
begin
NowPayNo:=0;
for PayCount :=1 to PayTotalCount do
begin
///伺服机
if (ServPay_Path =CommNetDriver.GDataBuf[iHead+2]) and
(ServPay_num=CommNetDriver.GDataBuf[iHead+3]) then
begin
//////////////////////////
In_pay :=true;
In_Servpay :=true;
NowPayNo :=PayCount; //当前伺服机号
break;
///////////////////////////
end
else
begin
//出纳
if (PayApp[PayCount].PayPath =CommNetDriver.GDataBuf[iHead+2]) and
(PayApp[PayCount].PayNum =CommNetDriver.GDataBuf[iHead+3]) then
begin
In_pay :=true;
NowPayNo :=PayCount; //当前出纳机号
break;
end
else
begin
In_Pay :=false;
In_Servpay :=false;
NowPayNo :=0;
end;
end;
end;
end;
except
end;
/////////////////////////////////
if not (iAccount=0) then //正常帐户打开请求
begin
AccountOpen :=false;
iAccountPwd := 0;
iStatus := 0;
//iIfOpen := 0;
iAMoney := 0;
iALMoney := 0;
//iMFMoney := 0;
iChange := 0;
iRate := 0;
iSendStaMoney := 0;
Close;
case Postype of
0,5,6: 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, ToTalDay_Limit, Pass_Limit '+
' FROM PERSON_ACCOUNT INNER JOIN '+
' DEGREETYPE ON '+
' PERSON_ACCOUNT.PA_DEGREEID = DEGREETYPE.DEGREE_ID'+
' WHERE (PERSON_ACCOUNT.PA_CARDNO = ' + IntToStr(iAccount) + ') AND '+
' (PERSON_ACCOUNT.PA_MONEY> 0) and (PA_STATUS=1)';// AND '+
//' (PERSON_ACCOUNT.PA_IFOPEN = ''0'')';
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;
if (iIfOpen=1) then
begin
Inc(LockCount);
if (LockCount mod 6 =0) then
begin
iIfOpen :=0;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -