BOOL CComm_Thread::OnIdle(LONG lCount) { // TODO: Add your specialized code here and/or call the base class COApp* pApp=(COApp*)AfxGetApp(); unsigned char ucAddr; static BOOL AorB=true; memset(CommMsgR,0,sizeof(CommMsgR)); if(CommLink) { if(pApp->x_stop) { //冻结屏幕 if(pApp->ChkClock) { //关闭其他功能,只提取遥信时钟 if(bOutComm) { CommSend(CommMsgS,xLength); ucAddr=CommMsgS[2]*256+CommMsgS[3]; bOutComm=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x11,0x00); } else//实时询问报文 { //询问开入状态 if((pApp->ChkOff && (pApp->uiLed[5] & 0x08)) || pApp->ChkOn) { //自动提取事件 if(AorB && pApp->B) { //提取开入信号 CommMsgS[0]=0xFF; CommMsgS[1]=0x03; CommMsgS[2]=0x00; CommMsgS[3]=0x00; CommMsgS[4]=0x00; CommMsgS[5]=0x03; CRC16(CommMsgS,6,&CommMsgS[6]); pApp->test.Format("发送报文: → %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgS[0],CommMsgS[1],CommMsgS[2],CommMsgS[3],CommMsgS[4],CommMsgS[5],CommMsgS[6],CommMsgS[7]); AorB=!AorB; } else { //提取事件 CommMsgS[0]=0xFF; CommMsgS[1]=0x03; CommMsgS[2]=0x00; CommMsgS[3]=0x01; CommMsgS[4]=0x00; CommMsgS[5]=0x07; CRC16(CommMsgS,6,&CommMsgS[6]); pApp->test.Format("发送报文: → %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgS[0],CommMsgS[1],CommMsgS[2],CommMsgS[3],CommMsgS[4],CommMsgS[5],CommMsgS[6],CommMsgS[7]); AorB=!AorB; if(!(pApp->uiLed[5] & 0x08)) { pApp->NewEvent1=true; } } } else { //只提取开入信号 CommMsgS[0]=0xFF; CommMsgS[1]=0x03; CommMsgS[2]=0x00; CommMsgS[3]=0x00; CommMsgS[4]=0x00; CommMsgS[5]=0x03; CRC16(CommMsgS,6,&CommMsgS[6]); pApp->test.Format("发送报文: → %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgS[0],CommMsgS[1],CommMsgS[2],CommMsgS[3],CommMsgS[4],CommMsgS[5],CommMsgS[6],CommMsgS[7]); } CommSend(CommMsgS,8); ucAddr=CommMsgS[2]*256+CommMsgS[3]; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x11,0x00); } } else { //提取时钟 CommMsgS[0]=0xFF; CommMsgS[1]=0x03; CommMsgS[2]=0x00; CommMsgS[3]=0x02; CommMsgS[4]=0x00; CommMsgS[5]=0x04; CRC16(CommMsgS,6,&CommMsgS[6]); pApp->test.Format("发送报文: → %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgS[0],CommMsgS[1],CommMsgS[2],CommMsgS[3],CommMsgS[4],CommMsgS[5],CommMsgS[6],CommMsgS[7]); CommSend(CommMsgS,8); ucAddr=CommMsgS[2]*256+CommMsgS[3]; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x11,0x00); } if(CommRecv(CommMsgR)) { switch(CommMsgR[1]) { case 0x03: switch(ucAddr) { case 0: { //开入信号状态响应 pApp->uiLed[0]=CommMsgR[3]; pApp->uiLed[1]=CommMsgR[4]; pApp->uiLed[2]=CommMsgR[5]; pApp->uiLed[3]=CommMsgR[6]; pApp->uiLed[4]=CommMsgR[7]; pApp->uiLed[5]=CommMsgR[8]; //判断故障事件 if(pApp->NewEvent1) { //有新的事件记录 if(pApp->uiLed[5] & 0x08) { pApp->NewEvent1=false; if(!pApp->ChkOff) { SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x12,0x00); } } } if(pApp->NewEvent2) { //板卡故障1 if(pApp->uiLed[5] & 0x10) { pApp->NewEvent2=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x13,0x00); } } if(pApp->NewEvent3) { //板卡故障2 if(pApp->uiLed[5] & 0x20) { pApp->NewEvent3=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x14,0x00); } } if(pApp->NewEvent4) { //板卡故障3 if(pApp->uiLed[5] & 0x40) { pApp->NewEvent4=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x15,0x00); } } if(pApp->NewEvent5) { //板卡故障4 if(pApp->uiLed[5] & 0x80) { pApp->NewEvent5=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x16,0x00); } } pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7],CommMsgR[8],CommMsgR[9],CommMsgR[10]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); break; } case 1://提取事件记录响应 { if(CommMsgR[2]==0x0E) { //有新事件 pApp->NoneEvent=true; if(pApp->bEnum) { pApp->Enum=0; pApp->bEnum=false; } pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7],CommMsgR[8],CommMsgR[9],CommMsgR[10],CommMsgR[11],CommMsgR[12],CommMsgR[13],CommMsgR[14],CommMsgR[15],CommMsgR[16],CommMsgR[17],CommMsgR[18]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); pApp->MilliSecondH=(CommMsgR[11])*256+(CommMsgR[12]); if(CommMsgR[4]==0x55) { pApp->test.Format("第 %02d 路产生变位,变位类型: 0->1 (上升沿),变位时间: %d年%02d月%02d日%02d时%02d分%02d秒%03d毫秒\r\n",CommMsgR[3],CommMsgR[5]+2000,CommMsgR[6],CommMsgR[7],CommMsgR[8],CommMsgR[9],CommMsgR[10],pApp->MilliSecondH); } if(CommMsgR[4]==0xAA) { pApp->test.Format("第 %02d 路产生变位,变位类型: 1->0 (下降沿),变位时间: %d年%02d月%02d日%02d时%02d分%02d秒%03d毫秒\r\n",CommMsgR[3],CommMsgR[5]+2000,CommMsgR[6],CommMsgR[7],CommMsgR[8],CommMsgR[9],CommMsgR[10],pApp->MilliSecondH); } if(CommMsgR[4]!=0x55 && CommMsgR[4]!=0xAA) { pApp->test.Format("提取事件失败!\r\n"); } SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x01,0x00); } else { //无事件记录 pApp->NewEvent1=true; pApp->NewEvent2=true; pApp->NewEvent3=true; pApp->NewEvent4=true; pApp->NewEvent5=true; pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4]); pApp->bEnum=true; pApp->ChkOn=false; pApp->B=true; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); if(pApp->NoneEvent) { pApp->NoneEvent=false; SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x09,0x00); } } break; } case 2://提取实时时钟响应 { pApp->Year=CommMsgR[3]; pApp->Month=CommMsgR[4]; pApp->Day=CommMsgR[5]; pApp->Hour=CommMsgR[6]; pApp->Minute=CommMsgR[7]; pApp->Second=CommMsgR[8]; pApp->MilliSecondH=(CommMsgR[9])*256+(CommMsgR[10]); pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7],CommMsgR[8],CommMsgR[9],CommMsgR[10],CommMsgR[11],CommMsgR[12]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x02,0x00); //提取遥信时钟 if(!pApp->ChkClock) { pApp->test.Format("遥信时钟: %d年%02d月%02d日%02d时%02d分%02d秒%03d毫秒\r\n",pApp->Year+2000,pApp->Month,pApp->Day,pApp->Hour,pApp->Minute,pApp->Second,pApp->MilliSecondH); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x18,0x00); Sleep(180); } break; } case 3://提取软件版本号响应 { pApp->edition=(float(CommMsgR[3]*256+CommMsgR[4]))/100; pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7],CommMsgR[8]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x03,0x00); break; } case 4://提取防抖时间响应 { for(int m=0,n=3; m<36; n+=2,m++) { pApp->JH[m]=CommMsgR[n]; pApp->JL[m]=CommMsgR[n+1]; } pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgS[0],CommMsgS[1],CommMsgS[2],CommMsgS[3],CommMsgS[4],CommMsgS[5],CommMsgS[6],CommMsgS[7],CommMsgS[8],CommMsgS[9],CommMsgS[10],CommMsgS[11],CommMsgS[12],CommMsgS[13],CommMsgS[14],CommMsgS[15],CommMsgS[16],CommMsgS[17],CommMsgS[18],CommMsgS[19],CommMsgS[20],CommMsgS[21],CommMsgS[22],CommMsgS[23],CommMsgS[24],CommMsgS[25],CommMsgS[26],CommMsgS[27],CommMsgS[28],CommMsgS[29],CommMsgS[30],CommMsgS[31],CommMsgS[32],CommMsgS[33],CommMsgS[34],CommMsgS[35],CommMsgS[36],CommMsgS[37],CommMsgS[38],CommMsgS[39],CommMsgS[40],CommMsgS[41],CommMsgS[42],CommMsgS[43],CommMsgS[44],CommMsgS[45],CommMsgS[46],CommMsgS[47],CommMsgS[48],CommMsgS[49],CommMsgS[50],CommMsgS[51],CommMsgS[52],CommMsgS[53],CommMsgS[54],CommMsgS[55],CommMsgS[56],CommMsgS[57],CommMsgS[58],CommMsgS[59],CommMsgS[60],CommMsgS[61],CommMsgS[62],CommMsgS[63],CommMsgS[64],CommMsgS[65],CommMsgS[66],CommMsgS[67],CommMsgS[68],CommMsgS[69],CommMsgS[70],CommMsgS[71],CommMsgS[72],CommMsgS[73],CommMsgS[74],CommMsgS[75],CommMsgS[76]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x07,0x00); break; } case 5: { pApp->x_Address=CommMsgR[3]; pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x00,0x00); break; } } break; case 0x10: switch(ucAddr) { case 1://设定实时时钟响应 pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x04,0x00); break; case 2://清除事件记录响应 { pApp->NewEvent1=true; pApp->NewEvent2=true; pApp->NewEvent3=true; pApp->NewEvent4=true; pApp->NewEvent5=true; pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x08,0x00); break; } case 3://设定防抖时间响应 pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x05,0x00); break; } break; default: { pApp->test.Format("收到报文: ← %02X %02X %02X %02X %02X %02X %02X %02X",CommMsgR[0],CommMsgR[1],CommMsgR[2],CommMsgR[3],CommMsgR[4],CommMsgR[5],CommMsgR[6],CommMsgR[7]); SendMessage(pApp->m_pMainWnd->m_hWnd,WM_MSGCOMMANS,0x17,0x00); break; } } } } //计算报文收发成功率 pApp->pbt=((float(pApp->Rnum))/(float(pApp->Snum)))*100; Sleep(20); return true; } }
/** * @brief pos结算 * @param in cFlag 结算标识0正常结算 非0结算中断后的再次结算 * @return * @li APP_SUCC * @li APP_FAIL * @li APP_QUIT */ int Settle(char cFlag) { char *pszTitle="结算"; STSYSTEM stSystem; STAMT_NUM_SETTLE stAmtNumSettle; STAMT_NUM_INFO_SETTLE stAmtNumInfo; int nRet = 0; char sPackBuf[MAX_PACK_SIZE]; int nPackLen = 0; int nFieldLen = 0; char szSettleDateTime[5+1]; char cProcStep = 0; int nTagSum=0; memset(&stSystem, 0, sizeof(STSYSTEM)); /* * 检查POS限制,电量是否充足 */ ASSERT_QUIT(DealPrintLimit()); if (cFlag) { /* * 取原来结算中断的步骤 */ if (YES == GetVarBatchHaltFlag()) { cProcStep = 2; } else if (YES == GetVarPrintSettleHalt()) { cProcStep = 3; } else if (YES == GetVarPrintDetialHalt()) { cProcStep = 4; } else if (YES == GetVarClrSettleDataFlag()) { cProcStep = 5; } } else { cProcStep = 0; /* * 将批上送中断标识的数置为1,从第一笔开始送 */ SetVarBatchMagOfflineHaltFlag(1); SetVarFinanceHaltFlag(1); SetVarMessageHaltFlag(1); SetVarEmvOfflineUpNum(1); SetVarEmvOnlineUpNum(1); SetVarEMVOfflineFailHaltFlag(1); SetVarEMVOnlineARPCErrHaltFlag(1); /* * 将批上送的笔数置为0,重新统计 */ SetVarBatchSum(0); } /** * 联机结算 */ if (cProcStep <= 1) { /** * 检查是否签到 */ ASSERT_QUIT(ChkLoginStatus()); /** * 执行冲正 */ ASSERT_HANGUP_QUIT(DoReversal()); PubDisplayTitle(pszTitle); /** * 再次判断拨号 */ ASSERT_HANGUP_QUIT(CommConnect()); /** * 采集数据 */ DealSystem(&stSystem); CustodyTlvInit(); DealSettle(&stAmtNumInfo); memset((char *)&stAmtNumSettle, 0, sizeof(stAmtNumSettle)); PubHexToAsc(stAmtNumInfo.nDebitAmount_N.sSettleAmt, 12, 0,(uchar*)stAmtNumSettle.sDebitAmt_N); sprintf(stAmtNumSettle.sDebitNum_N, "%03ld", stAmtNumInfo.nDebitNum_N); PubHexToAsc(stAmtNumInfo.nCreditAmount_N.sSettleAmt, 12, 0, (uchar*)stAmtNumSettle.sCreditAmt_N); sprintf(stAmtNumSettle.sCreditNum_N, "%03ld", stAmtNumInfo.nCreditNum_N); #if 0 stAmtNumSettle.cSettleCode_N = '0'; PubHexToAsc(stAmtNumInfo.nDebitAmount_W.sSettleAmt, 12, 0, (uchar*)stAmtNumSettle.sDebitAmt_W); sprintf(stAmtNumSettle.sDebitNum_W, "%03ld", stAmtNumInfo.nDebitNum_W); PubHexToAsc(stAmtNumInfo.nCreditAmount_W.sSettleAmt, 12, 0, (uchar*)stAmtNumSettle.sCreditAmt_W); sprintf(stAmtNumSettle.sCreditNum_W, "%03ld", stAmtNumInfo.nCreditNum_W); stAmtNumSettle.cSettleCode_W= '0'; #endif memcpy(stSystem.szTransCode, "200001", 6); memset(sPackBuf, 0, sizeof(sPackBuf)); nPackLen =0; ASSERT_FAIL(CustodyTlvAddValue(1, stSystem.szTransCode, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(2, stSystem.szDate, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(3, stSystem.szTime, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(4, stSystem.szTrace, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(5, stSystem.szBatchNo, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(7, stSystem.szPosID, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValue(8, stSystem.szShopID, sPackBuf, &nPackLen, &nTagSum)); ASSERT_FAIL(CustodyTlvAddValueLen(34, (char *)&stAmtNumSettle,36, sPackBuf, &nPackLen, &nTagSum)); /** *拨号 */ ASSERT_HANGUP_QUIT(CommConnect()); ASSERT_HANGUP_FAIL(CustodyPack(sPackBuf, &nPackLen, nTagSum)); IncVarTraceNo(); ASSERT_HANGUP_FAIL(CommSend(sPackBuf, nPackLen)); ASSERT_HANGUP_FAIL(CommRecv(sPackBuf, &nPackLen)); ASSERT_HANGUP_FAIL(CustodyUpPack(sPackBuf, &nPackLen, &nTagSum)); ASSERT_HANGUP_FAIL(CustodyChkRespon(&stSystem, sPackBuf, nPackLen)); if (memcmp(stSystem.szResponse, "00", 2) != 0) { CommHangUp(); CustoyDispResp(stSystem.szResponse, stSystem.szRespInfo); return APP_QUIT; } ASSERT_FAIL(CustodyGetField(34, (char *)&stAmtNumSettle.cSettleCode_N, &nFieldLen)); if(stAmtNumSettle.cSettleCode_N == '1' || stAmtNumSettle.cSettleCode_N == '2' || stAmtNumSettle.cSettleCode_N == '3') { SetVarCnCardFlag(stAmtNumSettle.cSettleCode_N);/*<内卡应答码*/ } else { PubMsgDlg("结算", "内卡\n对帐应答代码错误", 3, 10); CommHangUp(); return APP_FAIL; } /** * 保存结算日期时间 */ PubAscToHex((uchar *)stSystem.szDate+4, 4, 0, (uchar *)szSettleDateTime); PubAscToHex((uchar *)stSystem.szTime, 6, 0, (uchar *)szSettleDateTime + 2); SetVarSettleDateTime(szSettleDateTime); } /** * 批上送 */ if (cProcStep <= 2) { SetVarBatchHaltFlag(YES); /*银商要求除了通讯\打包问题, 批上送应答只显示但是不失败, 都强制成功*/ //现在没有需要离线上送的交易 //ASSERT_HANGUP_FAIL(DoBatchUp()); SetVarBatchHaltFlag(NO); } CommHangUp(); /** * 打印结算单 */ if (cProcStep <= 3) { SetVarPrintSettleHalt(YES); PubClearAll(); PubDisplayTitle("正在打印结算单"); PubDisplayGen(3, "请稍候"); PubUpdateWindow(); nRet = PrintSettle(FIRSTPRINT); if (nRet == APP_FAIL) { return APP_FAIL; } SetVarPrintSettleHalt(NO); } /** * 打印明细单 */ if (cProcStep <= 4) { SetVarPrintDetialHalt(YES); if (YES == GetVarIsPrintWaterRec()) { int nSelect = 0; nRet = ProSelectList("0.否||1.是", "是否打印明细", 0xFF, &nSelect); if (nRet == APP_SUCC && nSelect == 1) { PubClear2To4(); PubDisplayGen(3, "打印明细单"); PubUpdateWindow(); nRet = PrintAllWater(); if (nRet == APP_FAIL) { return APP_FAIL; } } } SetVarPrintDetialHalt(YES); #if 0 if(GetFailSendNum(0xFF) != 0) { PubClearAll(); PubDisplayGen(3, "打印上送不成功的"); PubDisplayGen(4, "交易明细"); PubUpdateWindow(); nRet = PrintFailWater(0xFF); if (nRet != APP_SUCC) { return APP_FAIL; } } if(GetFailSendNum(0xFE) != 0) { PubClearAll(); PubDisplayGen(3, "打印上送被拒的"); PubDisplayGen(4, "交易明细"); PubUpdateWindow(); nRet = PrintFailWater(0xFE); if (nRet != APP_SUCC) { return APP_FAIL; } } #endif SetVarPrintDetialHalt(NO); } /* * 清除结算数据流水等 */ if (cProcStep <= 5) { SetVarClrSettleDataFlag(YES); PubClearAll(); PubDisplayTitle(pszTitle); PubDisplayGen(2, "正在处理结算"); PubUpdateWindow(); nRet = InitWaterFile();/**<清除流水*/ ASSERT(nRet); if (nRet != APP_SUCC) { InitWaterFile();/**<清除流水*/ } ClearSettle();/**<清除结算数据*/ IncVarBatchNo();/**<批次号加一*/ SetVarClrSettleDataFlag(NO); SetVarOfflineUnSendNum(0); } PubClearAll(); PubDisplayTitle(pszTitle); PubDisplayStrInline(DISPLAY_MODE_CENTER, 2, "结 算 成 功"); PubUpdateWindow(); return APP_SUCC; }