void TmsMenu(void) { #ifdef TMS uint uiRet; while(1) { PubDisplayCen(0 , "TMS分发"); PubDisplay(1 , "1.签到 2.通讯设置"); PubDisplay(2 , "3.新装机密钥分发"); PubDisplay(3 , "4.重置密钥5.密钥加载"); PubDisplay(4 , "6.离线分发"); uiRet = PubuiInkey(60); PubDisplayCen(0 , " ");//清屏 switch(uiRet) { case EM_key_NOHIT: case EM_key_CANCEL: EA_vCls(); return; case EM_key_1: EI_tms_ucKeyposLogin(&EG_TMSHead,&FV.EG_TMSstru); break; case EM_key_2: PubTMSSet(&EG_TMSHead,&FV.EG_TMSstru); break; case EM_key_3: EI_tms_ucPosDownKey(&EG_TMSHead,&FV.EG_TMSstru); break; case EM_key_4: EI_tms_ucPosResetKey(&EG_TMSHead,&FV.EG_TMSstru); break; case EM_key_5: EI_tms_ucPosLoadKey(&EG_TMSHead,&FV.EG_TMSstru); break; case EM_key_6: TMKDeliveTMS(); break; case EM_key_FUNC5: if (PubuiInkey(5) == EM_key_FUNC6) { gbDebugFlag = 1; EA_vCls(); PubDisplay(2 , "设置debug成功"); PubuiInkey(5); } break; default: break; } } return; #else EA_vCls(); PubDisplay(1 , "目前不支持TMS分发"); PubuiInkey(60); return; #endif }
/* * 函数功能:查看柜员 * 入口参数:无 * 出口参数:无 * 返 回 值:无 */ int ProQueryOper(void) { int nCount; uchar nNum; EA_vCls(); nNum = 1; for (nCount = 0; nCount < FV.gbnOperCnt; nCount++) { if (nNum > 6) { nNum = 1; PubuiInkey(TIPS_TIMEOUT); EA_vCls(); } if (nCount + 1 < FV.gbnOperCnt) { PubDisplays(nNum, 1, "%d.[%s] %d.[%s]", nCount, FV.gbStruOperSeq[nCount].szOperNo, nCount + 1, FV.gbStruOperSeq[nCount + 1].szOperNo); } else { // 奇数个,最后一排只显示一个 PubDisplays(nNum, 1, "%d.[%s]", nCount, FV.gbStruOperSeq[nCount].szOperNo); } nCount++; nNum++; } PubuiInkey(TIPS_TIMEOUT); return NORMAL; }
/* * 函数功能:读取卡组织代码 * 入口参数:无 * 出口参数:无 * 返 回 值:NORMAL--成功 * EXCEPTION--失败 */ int ProReadCardId(void) { uint uiRet; if(strlen(TlvSendValue.szCreditCompany)>0) { memcpy(szCardId,TlvSendValue.szCreditCompany,3); return NORMAL; } else { EA_vCls(); PubDisplay(0, " 离线结算"); PubDisplayInv(1, "选择国际公司代码:"); PubDisplays(3, 1, "1.CUP 2.VIS"); PubDisplays(4, 1, "3.MCC 4.MAE"); PubDisplays(5, 1, "5.JCB 6.DCC"); PubDisplays(6, 1, "7.AEX"); while (1) { uiRet = PubuiInkey(60); if (uiRet == EM_key_CANCEL) { PubDisplay(0, " "); return EXCEPTION; } if ((uiRet > '0' && uiRet < '8') || uiRet == EM_key_ENTER) break; } EA_vCls(); PubDisplay(0, " ");//第0行必须用空格才能清屏 switch (uiRet) { case '1': case EM_key_ENTER: strcpy(szCardId, "CUP"); return NORMAL; case '2': strcpy(szCardId, "VIS"); return NORMAL; case '3': strcpy(szCardId, "MCC"); return NORMAL; case '4': strcpy(szCardId, "MAE"); return NORMAL; case '5': strcpy(szCardId, "JCB"); return NORMAL; case '6': strcpy(szCardId, "DCC"); return NORMAL; case '7': strcpy(szCardId, "AEX"); return NORMAL; default: return EXCEPTION; } } }
/***************************************************************** 函数原型:System_Init() 功能描述:参数等初始化 参数描述: 返回值: OK ? NOTOK 作 者: 许岩/刘及华 日 期: 2012-11-24 修改历史: 日期 修改人 修改描述 ------ --------- ------------- *****************************************************************/ INT8U System_Init(void) { INT8U i = 0; INT16U key = EM_key_NOHIT; EA_vCls(); EA_ucSetInverse(EM_lcd_INVOFF); EA_vDisp(1, 1, " 版本号: "); EA_vDisp(1, 13, VERSION); SleepMs(2000); EA_vCls(); EA_vDisp(2, 1, " 系统初始化中... "); key = EA_uiInkeyMs(2000); if ( key == EM_key_F3 ) { format_process(); //可以进行系统格式化操作 } //重要参数部分初始化函数 appfile_Init(); memset((void *)&DevStat, 0x00, sizeof(DevStat)); i = ReadParam(); if ( i != ok ) { param_factory_default(0); //格式化重要参数DEV.STATE } DevStat.POS_type = POS_T_NORMAL; //盒类型为正常采集 DevStat.record_number = query_rec_num(); memset((void *)&CardInfo, 0x00, sizeof(CardInfo)); //清除卡的信息 memset((void *)&ErrCardInfo, 0x00, sizeof(ErrCardInfo)); //清除错误卡的信息 //这里应该添加一个函数,负责管理所有的设备的句柄结构!!!! i = Device_Handle_Init(); if( i != ok) { return notok; } if( LowBatteryDisplay() != ok ) //电池电量检测 { lcddisperr("电池电量检测失败"); return notok; } if( SystemCheck() != ok ) //PSAM系统检测 { lcddisperr("PSAM卡检测失败"); return notok; } return ok; }
/****************************************************************************** 函数名称:TimeModify 功能描述:要求输入时间,进行修改 参数描述: 参数名称: 输入/输出? 类型 描述 返 回 值:无 作 者 :许岩 日 期:2004-09-02 修改历史: 日期 修改人 修改描述 ------ --------- ------------- ******************************************************************************/ void TimeModify(void) { INT8U i = 0; INT8U input[50]; INT8U buf[50]; BUS_TIME ltime; for (;;) { EA_vCls(); Get_Time(<ime); EA_vDisp(1, 1, "当前时间:"); sprintf((void *)buf, "%02X%02X-%02X-%02X-%02X:%02X:%02X", ltime.century, ltime.year, ltime.month, ltime.day, ltime.hour, ltime.minute, ltime.second); EA_vDisp(2, 1, (void *)buf); EA_vDisp(3, 1, "请输入新的时间:"); (void)EA_ucClrKeyBuf(); strcpy((void *)input, ""); i = EA_ucGetInputStr(4, 1, 20, EM_BIG_FONT | EM_MODE_NUMBER | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY , 14, 14, 0, (void *)input); // sprintf(dbuf, "%s", input); // EA_vDisp(3, 1, dbuf); // sprintf(dbuf, "result:%02X", i); // EA_vDisp(4, 1, dbuf); if ( i == EM_ABOLISH ) return; if ( i != EM_SUCCESS ) continue; ltime.century = (ascii_to_hex(input[0]) << 4) | ascii_to_hex(input[1]); ltime.year = (ascii_to_hex(input[2]) << 4) | ascii_to_hex(input[3]); ltime.month = (ascii_to_hex(input[4]) << 4) | ascii_to_hex(input[5]); ltime.day = (ascii_to_hex(input[6]) << 4) | ascii_to_hex(input[7]); ltime.hour = (ascii_to_hex(input[8]) << 4) | ascii_to_hex(input[9]); ltime.minute = (ascii_to_hex(input[10]) << 4) | ascii_to_hex(input[11]); ltime.second = (ascii_to_hex(input[12]) << 4) | ascii_to_hex(input[13]); i = CheckTimeFormat(<ime); if ( i != ok ) { EA_vCls(); EA_vDisp(4, 1, "时间格式错误"); SleepMs(1500); // EA_vCls(); continue; } Modify_Time(<ime); EA_vCls(); EA_vDisp(4, 1, "时间修改成功"); SleepMs(1500); break; } }
/* * 函数功能:读取卡组织代码 * 入口参数:无 * 出口参数:无 * 返 回 值:NORMAL--成功 * EXCEPTION--失败 */ int ProReadCardId(void) { uint uiRet; EA_vCls(); PubDisplay(0, " 离线结算"); PubDisplayInv(1, "选择国际公司代码:"); PubDisplays(3, 1, "1.CUP 2.VIS"); PubDisplays(4, 1, "3.MCC 4.MAE"); PubDisplays(5, 1, "5.JCB 6.DCC"); PubDisplays(6, 1, "7.AMX"); //AEX ->AMX modify by chenjis 20120719 while (1) { uiRet = PubuiInkey(60); if (uiRet == EM_key_CANCEL || uiRet == EM_key_NOHIT) { PubClearIcon(); EA_vCls(); return EXCEPTION; } if ((uiRet > '0' && uiRet < '8') || uiRet == EM_key_ENTER) break; } EA_vCls(); PubClearIcon(); switch (uiRet) { case '1': case EM_key_ENTER: strcpy(szCardId, "CUP"); return NORMAL; case '2': strcpy(szCardId, "VIS"); return NORMAL; case '3': strcpy(szCardId, "MCC"); return NORMAL; case '4': strcpy(szCardId, "MAE"); return NORMAL; case '5': strcpy(szCardId, "JCB"); return NORMAL; case '6': strcpy(szCardId, "DCC"); return NORMAL; case '7': strcpy(szCardId, "AMX"); //AEX ->AMX modify by chenjis 20120719 return NORMAL; default: return EXCEPTION; } }
int PubICReadCard(char* pszOut, int *pLen) { unsigned char ucRecBuf[256]; unsigned int uiRetLen; unsigned char CFlagGetKey; EA_vCls(); CFlagGetKey = NO; EA_vCls(); if ( PubOpenUserICCardDev () != NORMAL ) return EXCEPTION; PubDisplayInv(1, "联名卡"); PubDisplayCen(2, "请插入IC卡"); PubDisplayCen(3, "按<取消>退出"); while(1) { if ( PubUserICCardIn() == NORMAL ) break; if (EA_ucKBHit () == EM_key_HIT) { if (PubuiInkey (1) == CANCEL) { return EXCEPTION; } } } if ( PubUserICCardPowerUp() != NORMAL ) return EXCEPTION; if ( ProICCComm1 ("MF选择",CPU_CARD, 0x00, 0xa4, 0x00, 0x00, 0x02, "\x3f\x00", 0x00, ucRecBuf, &uiRetLen) != NORMAL ) return EXCEPTION; if ( ProICCComm1 ("EF05选择",CPU_CARD, 0x00, 0xa4, 0x00, 0x00, 0x02, "\xEF\x05", 0x00, ucRecBuf, &uiRetLen) != NORMAL ) return EXCEPTION; if ( ProICCComm1 ("读文件选择",CPU_CARD, 0x00, 0xB0, 0x00, 0x00, 0x00, "", 0x00, ucRecBuf, &uiRetLen) != NORMAL ) return EXCEPTION; EA_ucCloseDevice (&gbhdlUserCard); memcpy(pszOut, ucRecBuf, uiRetLen); *pLen = uiRetLen; EA_ucCloseDevice (&gbhdlUserCard); return NORMAL; }
void SetComNumber(void) { uint uiRet ; int nComNumber , nComHostNumber; nComNumber = FV.gbnComNumber; nComHostNumber = FV.gbnComHostNumber; while(1) { EA_vCls(); PubDisplay(0 , " "); PubDisplayInv( 1 , "设置接收密钥端口号"); PubDisplay( 2 , "输入端口号(0-9):%d", nComHostNumber); PubDisplay( 3 , "提示:8-USBH 9-USBD"); PubDisplay( 4 , "0-设置为默认端口"); uiRet = PubuiInkey(0); if (uiRet>='0' && uiRet<='9') nComHostNumber = uiRet - '0'; EA_vCls(); PubDisplay(0 , " "); PubDisplayInv( 1 , "设置下载密钥端口号"); PubDisplay( 2 , "输入端口号(0-9):%d", nComNumber); PubDisplay( 3 , "提示:8-USBH 9-USBD"); PubDisplay( 4 , "0-设置为默认端口"); uiRet = PubuiInkey(0); if (uiRet>='0' && uiRet<='9') nComNumber = uiRet - '0'; if (nComNumber == 0 &&nComHostNumber == 0) { SetE5DefaultPort(); return; } if (nComHostNumber == nComNumber) { EA_vCls(); PubDisplay(1 , "接收和下载密钥使用"); PubDisplay(2 , "相同的端口,联机分发"); PubDisplay(3 , "时候要拔插串口"); PubDisplay(4 , "按1键确认 其他键重设"); if (PubuiInkey(10) != '1') continue; } FV.gbnComNumber = nComNumber; PubWriteMemFile(&FV.gbnComNumber, sizeof(FV.gbnComNumber)); FV.gbnComHostNumber = nComHostNumber; PubWriteMemFile(&FV.gbnComHostNumber, sizeof(FV.gbnComHostNumber)); break; } return ; }
/********************************************************************** * 函数名称: * * 功能描述: * * 输入参数: arc - 无意义 * argv - 无意义 * 输出参数: * * 返回值: * * 历史纪录 * 修改人 日期 版本号 修改内容 * 洪晓辉 2004-01-21 1.00 创建 ***********************************************************************/ int dlm_main(void) { int nTransType; uint uiRet; PubDispHeadTitle( ); PubInitData(); PubInitGlobal( ); PubAbout( ); PubCheckTerminal( ); while(1) { PubDispHeadTitle( ); if( FV.gbstCfg.nPosState == POSLOGOUT) //增加取消键切换应用 { EA_vCls(); PubDisplayInv(1,"储值卡"); PubDisplayCen(3,"按任意键签到"); PubDisplayCen(4,"按取消键切换应用"); uiRet = PubuiInkey(10); if (uiRet == EM_key_FUNC9|| uiRet == EM_key_CANCEL) { EA_vCls(); // PubClearIcon();// //清图标行 PubDisplayCen(2, "应用切换"); PubuiInkeyMs(500); // PubDelAllBit(&iso); // close_all_dev(); EA_vCls(); return EM_ERROR; } } if( PubBeForeTrans() != NORMAL ) continue; memset( (char *)&gbstTrackInfo, 0x00, sizeof(ST_TRACK)); nTransType = PubProcMenu(FV.gbstMenuRes, (char *)"德基广场", 120); // [4/23/2013 zyf] 取消键切换应用 if ( nTransType == EM_key_CANCEL) return EM_ERROR; PubTransProcess( nTransType ); } }
void ProDisdoterColor(void) { char szBuffer[100]; uint nLen; BUFCLR(szBuffer); PubGetPosTypeName(szBuffer); nLen = 21 - 8 - strlen(szBuffer); EA_vCls(); if (strlen(gbPosTags))// 有广告 { if(PubDispJpg(5, 45, EM_BMP_ROTATE0,EM_BMP_NOT_TRANSPARENCE,"银联LOGO.jpg")!=EM_SUCCESS) { EA_vDrawBitmap(1, 48, EM_BMP_ROTATE0, EM_BMP_NOT_TRANSPARENCE, dispstr); } EA_vTextOut(185, 50, EM_key_FONT12X24, 0, 1, 1, "苏州银行"); EA_vTextOut(170, 90, EM_key_FONT12X24, 0, 1, 1, "请刷卡/插卡"); EA_vTextOut(170, 130, EM_key_FONT12X24, 0, 1, 1, "%s%s", szBuffer,FV.Other.gbszVerNoYS); } else { if(PubDispJpg(15, 68, EM_BMP_ROTATE0,EM_BMP_NOT_TRANSPARENCE,"银联LOGO.jpg")!=EM_SUCCESS) { EA_vDrawBitmap(1, 48, EM_BMP_ROTATE0, EM_BMP_NOT_TRANSPARENCE, dispstr); } EA_vTextOut(195, 80, EM_key_FONT12X24, 0, 1, 1, "苏州银行"); EA_vTextOut(178, 120, EM_key_FONT12X24, 0, 1, 1, "请刷卡/插卡"); EA_vTextOut(178, 180, EM_key_FONT12X24, 0, 1, 1, "%s%s", szBuffer,FV.Other.gbszVerNoYS); } return; }
void ProDisdoterNormal(void) { char szBuffer[100]; uint nLen; BUFCLR(szBuffer); PubGetPosTypeName(szBuffer); nLen = 21 - 8 - strlen(szBuffer); EA_vCls(); if (strlen(gbPosTags))// 有广告 { PubClearIcon();// //清图标行 EA_vDrawBitmap(1, 2, EM_BMP_ROTATE0, EM_BMP_NOT_TRANSPARENCE, dispstr); EA_vTextOut(70, 4, EM_key_FONT6X12, 0, 1, 1, "苏州银行"); EA_vTextOut(60, 18, EM_key_FONT6X12, 0, 1, 1, "请刷卡/插卡"); PubDisps(3 ,nLen+1, "%s%s",szBuffer , FV.Other.gbszVerNoYS); } else { EA_vDrawBitmap(1, 13, EM_BMP_ROTATE0, EM_BMP_NOT_TRANSPARENCE, dispstr); PubDisp(1 , 13 , "苏州银行"); EA_vTextOut(60, 34, EM_key_FONT6X12, 0, 1, 1, "请刷卡/插卡"); PubDisps(5 ,nLen+1, "%s%s",szBuffer , FV.Other.gbszVerNoYS); } return; }
// ***************************************************************** // 功能: AnalyAndDisplayNote // 说明: 查询日结表,并显示日结信息 // 入口参数: // 出口参数: Null // 作者: // 返回值: // ***************************************************************** void AnalyAndDisplayNote(INT8U * strTradeInfo) { INT8U time[7+2]; char strbuff[30]; INT8U temp[30]; // float fBuf = 0; // INT8U LOCAL_V_TYPE temp_buf[100]; _BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)strTradeInfo; EA_vCls(); sprintf(strbuff, "加油次数:%7d次", prec->consume_cnt); EA_vDisplay(1, strbuff); //消费金额 sprintf(strbuff, "加油体积:%6.2f元", (float)(prec->consume_amt)/100); EA_vDisplay(2, strbuff); //上班时间 memcpy(time, (INT8U*)&prec->work_datetime,7); htoa(temp, time, 7); sprintf(strbuff, "上班:%s", temp); EA_vDisplay(3, strbuff); //下班时间 memcpy(time, (INT8U*)&prec->down_datetime,7); htoa(temp, time, 7); sprintf(strbuff, "下班:%s",temp); EA_vDisplay(4, strbuff); }
// ***************************************************************** // 功能: AnalyAndDisplayNote // 说明: 查询日结表,并显示日结信息 // 入口参数: // 出口参数: Null // 作者: // 返回值: // ***************************************************************** void AnalyAndDisplayNote(INT8U * strTradeInfo) { INT8U time[7+2]; char strbuff[30]; INT8U temp[30]; _BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)strTradeInfo; EA_vCls(); sprintf(strbuff, "加油次数:%7d次", (prec->consume_cnt[0]+prec->consume_cnt[1]+prec->consume_cnt[2]+prec->consume_cnt[3])); EA_vDisplay(1, strbuff); //消费金额 sprintf(strbuff, "加油金额:%6.2lf元", (double)(prec->consume_amt[0]+prec->consume_amt[1]+prec->consume_amt[2]+prec->consume_amt[3])/100.0); EA_vDisplay(2, strbuff); //上班时间 memcpy(time, (INT8U*)&prec->work_datetime, 6); htoa(temp, time, 6); sprintf(strbuff, "上班时间:%s", temp); EA_vDisplay(4, strbuff); //操作员 memcpy(strbuff, (INT8U*)&prec->oper_id, 3); htoa((void *)temp, (void *)strbuff, 3); sprintf(strbuff, "加 油 员:%s",temp); EA_vDisplay(3, strbuff); }
int ProFuncOthergbnSKFlag(void *p1, void *p2) { int iOption; uint uiKey; iOption = FV.Other.gbnSKFlag; EA_vCls(); PubDisplay(1 , "设置闪卡功能[%d]", iOption); PubDisplay(2 , "0 不支持闪卡"); PubDisplay(3 , "1 支持闪卡"); uiKey = PubuiInkey(120); switch(uiKey) { case EM_key_CANCEL: case EM_key_NOHIT: return CANCELED; case EM_key_F1: case EM_key_FEED: return BACK; case '1': FV.Other.gbnSKFlag = 1; PubWriteMemFile(&FV.Other.gbnSKFlag,sizeof(FV.Other.gbnSKFlag)); break; case '0': FV.Other.gbnSKFlag = 0; PubWriteMemFile(&FV.Other.gbnSKFlag,sizeof(FV.Other.gbnSKFlag)); break; default : break; } return NORMAL; }
int SetS100LoadKeyMode(void) { uchar aucOut[20], ucRet; DevHandle hDevHandle; uint uiOutLen; int nReturn; nReturn = 0; ucRet = EA_ucOpenDevice("COM", EM_io_PORT2, &hDevHandle); if ( ucRet != EM_SUCCESS) { EA_vCls(); PubDisplay(2,"打开端口错误 %d", ucRet); PubuiInkey(30); return -1; } EA_ucInitRS232(hDevHandle, EM_232_115200BPS, EM_232_NOPAR, EM_232_8DBS); EA_ucClearRS232(hDevHandle);//清除缓冲区 memcpy(aucOut,"\x02\x06\x9a\x01\x00\x00\x03\x02",8); ucRet = EA_ucWriteDevice(hDevHandle, 8, 1, (char*)aucOut); memset(aucOut, 0x00, 8); memcpy(aucOut+8,"\x06\x02\x04\x00\x01\x03\x02",7); uiOutLen = 0; ucRet = EA_ucReadDevice(hDevHandle, 7, 3, aucOut, &uiOutLen); if ( ucRet != EM_SUCCESS|| uiOutLen != 7) { EA_vCls(); PubDisplay(2,"从端口读数据错 %d %d", ucRet, uiOutLen); PubuiInkey(30); nReturn = -2; } else { if(memcmp(aucOut+8, aucOut, 7)) { EA_vCls(); PubDisplay(2,"数据校验错误"); PubuiInkey(30); nReturn = -3; } } EA_ucCloseDevice(&hDevHandle); return nReturn; }
void ProDispQuickColor(void) { EA_vCls(); if(PubDispJpg(1, 45, EM_BMP_ROTATE0,EM_BMP_NOT_TRANSPARENCE,"闪付LOGO.jpg")!=EM_SUCCESS) { EA_vDrawBitmap(1, 40, EM_BMP_ROTATE0, EM_BMP_NOT_TRANSPARENCE, dispstrQuick); } return; }
int ProFuncOthergbcSignLcdMode(void *p1,void *p2) { // modify by chenjis 20121024 #ifndef EPT56X0 #ifndef EPT5610 char cOption; uint uiKey; if(FV.Other.gbcSignLcdMode == EM_FACE_MODE1) cOption = 1; else if(FV.Other.gbcSignLcdMode == EM_FACE_MODE0) cOption = 2; else if(FV.Other.gbcSignLcdMode == EM_FACE_MODE3) cOption = 3; else if(FV.Other.gbcSignLcdMode == EM_FACE_MODE4) cOption = 4; else cOption = 0; EA_vCls(); PubDisplay(1 , "选择屏类型(%d)", cOption); PubDisplay(2 , "1 3.5横 2 3.5竖"); PubDisplay(3 , "3 128x64 4 320x240"); //PubDisplay(4 , ""); uiKey = PubuiInkey(120); switch(uiKey) { case EM_key_CANCEL: case EM_key_NOHIT: return CANCELED; case EM_key_F1: case EM_key_FEED: return BACK; case '1': FV.Other.gbcSignLcdMode = EM_FACE_MODE1; WRITE_nVAR(FV.Other.gbcSignLcdMode); break; case '2': FV.Other.gbcSignLcdMode = EM_FACE_MODE0; WRITE_nVAR(FV.Other.gbcSignLcdMode); break; case '3': FV.Other.gbcSignLcdMode = EM_FACE_MODE3; WRITE_nVAR(FV.Other.gbcSignLcdMode); break; case '4': FV.Other.gbcSignLcdMode = EM_FACE_MODE4; WRITE_nVAR(FV.Other.gbcSignLcdMode); break; default : break; } #endif #endif return NORMAL; }
/***************************************************************** 函数原型:SystemCheck 功能描述:本函数为系统检测 参数描述:无 参数名称: 输入/输出? 类型 描述 ----------- ----------- ------ ------- 作 者: 刘及华 日 期: 2012-11-28 返 回 值:有 1:成功 0:失败 *****************************************************************/ INT8U SystemCheck() { INT8U ret = 0; //SAM卡检测 EA_vCls(); // EA_vDisp(2, 1, " PSAM卡检测中... "); // (void)EA_uiInkeyMs(2000); ret = SamCheck(); if ( ret != ok ) { EA_vCls(); lcddisp(1, 1, (void *)" PSAM卡检测错误 "); lcddisp(2, 1, (void *)" 请检查插槽 "); (void)EA_uiInkeyMs(2000); return notok; } // lcddisperr(" PSAM卡检测成功!"); return ok; }
void PubAbout( void ) { EA_vCls(); PubDisplayCen(1, "南京德基"); // PubGetFileInfo( szBuff ); PubDisplayCen(3, "Ver.010105"); PubDisplayCen(4, "福建联迪商用" ); if (PubuiInkey(2) == EM_key_CANCEL) //如果误选通讯方式(无线),造成死机,在这里可以进行设置。 PubSetupSys(); return; }
/* * 函数功能:结算交易:包含正常商户结算和分期付款商户结算。 * 入口参数:无 * 出口参数:无 * 返 回 值:NORMAL ―― 成功 * EXCEPTION ―― 失败 */ int PubSettle(void) { EA_vCls(); PubDisplayInv(1, "结 算");//090924 ASSERT_NORMAL(PubConnect(&CommInfo)); if (FV.bank.cCommFlag == NAC) FV.gbNacInfo.cPreState = 1; POS_ASSERT(ProSettleNormal()); //正常商户结算 return END; }
// ***************************************************************** // 功能: query_oil_price // 说明: 查询当前油价 // 入口参数: // 出口参数: Null // 作者: frank // 返回值: Null // ***************************************************************** void query_oil_price(void) { //当前油价显示 EA_vCls(); EA_vDisplay(2, "天然气 :%2.2f元/立方", DevStat.price[0]/100.0); EA_vDisplay(3, "汽油93#:%2.2f元/升 ", DevStat.price[1]/100.0); EA_vDisplay(4, "汽油97#:%2.2f元/升 ", DevStat.price[2]/100.0); EA_vDisplay(5, "柴 油 :%2.2f元/升 ", DevStat.price[3]/100.0); //按任意键退出 (void)EA_uiInkey(0); return; }
//end 20120713 int ProFuncOthergbszSignPanelPort(void *p1,void *p2) { char cOption; uint uiKey; if(memcmp(FV.Other.gbszSignPanelPort, "USBH", 4) == 0) cOption = 4; else if(memcmp(FV.Other.gbszSignPanelPort, "COM2", 4) == 0) cOption = 2; else if(memcmp(FV.Other.gbszSignPanelPort, "COM3", 4) == 0) cOption = 3; else cOption = 1; EA_vCls(); PubDisplay(1 , "外置电子签字板串口"); PubDisplay(2 , "1 COM1"); PubDisplay(3 , "2 COM2"); PubDisplay(4 , "3 COM3 4 USBH [%d]", cOption); uiKey = PubuiInkey(120); switch(uiKey) { case EM_key_CANCEL: case EM_key_NOHIT: return CANCELED; case EM_key_F1: case EM_key_FEED: return BACK; case '2': strcpy(FV.Other.gbszSignPanelPort, "COM2"); WRITE_nVAR(FV.Other.gbszSignPanelPort); break; case '3': strcpy(FV.Other.gbszSignPanelPort, "COM3"); WRITE_nVAR(FV.Other.gbszSignPanelPort); break; case '1': strcpy(FV.Other.gbszSignPanelPort, "COM1"); WRITE_nVAR(FV.Other.gbszSignPanelPort); break; case '4': strcpy(FV.Other.gbszSignPanelPort, "USBH"); WRITE_nVAR(FV.Other.gbszSignPanelPort); break; default : break; } return NORMAL; }
int iRestoreAllTmsVar (void *pAddress, uint uiSize) { EV_cfs_fHandle fHandle; int_64 iLen; if ((pAddress == EM_NULL) || (uiSize == 0) || (uiSize > sizeof(gbszTmsBuffer))) { EA_vCls(); PubDisplay(2, "参数错误."); PubuiInkey(60); return -1; } fHandle = EA_iCfsOpen(TMS_STRU_FILENAME, "r"); if (fHandle == 0) { PubDisplay(1, "EA_iCfsOpen Error"); PubDisplay(2, "[%d]", EA_iCfsGetError()); PubuiInkey(60); return -1; } gbpAddressTms = pAddress; gbuiSizeTms = uiSize; if(EA_i64CfsSeek(fHandle , 0,SEEK_SET)<0) { PubDisplay(1, "EA_i64CfsSeek Error"); PubDisplay(2, "[%d]", EA_iCfsGetError()); EA_iCfsClose(fHandle); PubuiInkey(60); return -1; } // 从文件读全部数据到备份缓冲区 iLen = EA_i64CfsPread(fHandle, (void *)gbszTmsBuffer, gbuiSizeTms, 0); if ( iLen != gbuiSizeTms) { PubDisplay(1, "EA_i64CfsPread Error"); PubDisplay(2, "[%d]", EA_iCfsGetError()); EA_iCfsClose(fHandle); PubuiInkey(60); return -1; } // 把数据存放到TMS结构中 memcpy ( pAddress, gbszTmsBuffer, gbuiSizeTms ); EA_iCfsClose(fHandle); return EM_SUCCESS; }
UINT8 ucInitRS232(DevHandle hDev, uchar ucBPS) { uchar ucRet = 0; ucRet = EA_ucInitRS232(hDev, ucBPS, EM_232_NOPAR, EM_232_8DBS); if (ucRet != EM_SUCCESS) { EA_vCls(); display(2, "打印口初始化失败[%02X]", ucRet); inkey(0); return 1; } return 0; }
UINT8 ucClosePrinter(DevHandle *hDev) { uchar ucRet = 0; ucRet = EA_ucCloseDevice(hDev); if (ucRet != EM_SUCCESS) { EA_vCls(); display(2, "打印口关闭失败[%02X]", ucRet); inkey(0); return 1; } return 0; }
//add by baijz 20120220 电子签字板设置 int ProFuncOthergbcSignPanel(void *p1,void *p2) { char cOption; uint uiKey; cOption = FV.Other.gbcSignPanel; EA_vCls(); PubDisplay(1 , "设置电子签字板类型"); PubDisplay(2 , "0 不支持电子签字"); PubDisplay(3 , "1 内置"); PubDisplay(4 , "2 外置 [%d]", cOption); uiKey = PubuiInkey(120); switch(uiKey) { case EM_key_CANCEL: case EM_key_NOHIT: return CANCELED; case EM_key_F1: case EM_key_FEED: return BACK; case '1': FV.Other.gbcSignPanel = 1; WRITE_nVAR(FV.Other.gbcSignPanel); //strcpy(FV.Other.gbszSignPanelPort, "INSPAD"); //WRITE_nVAR(FV.Other.gbszSignPanelPort); break; case '2': FV.Other.gbcSignPanel = 2; WRITE_nVAR(FV.Other.gbcSignPanel); break; case '0': FV.Other.gbcSignPanel = 0; WRITE_nVAR(FV.Other.gbcSignPanel); break; default : break; } if(FV.Other.gbcSignPanel == 1) { ProFuncOthergbcSignLcdMode(NULL,NULL); } else if(FV.Other.gbcSignPanel == 2) { ProFuncOthergbszSignPanelPort(NULL,NULL); } return NORMAL; }
int ProDisplayECBal(char * pszAddiAmount, int nLen) { DevHandle hdlPinpad; if (iPinpadType == 1) { if (PubOpenDevice((char *)"PINPAD", EM_io_EPP, &hdlPinpad) != EM_SUCCESS) { EA_vCls(); PubDisplay(2, "无法打开密码键盘"); PubDisplay(3, "按任意键返回"); PubuiInkey(TIPS_TIMEOUT); ASSERT_NORMAL(EXCEPTION); } PubucDispPinpad(hdlPinpad, 1, (char *)" "); PubucDispPinpad(hdlPinpad, 2, (char *)" "); } PubClearAll(); PubDisplay(2, "电子现金余额:"); PubDisplay(3, "%s", pszAddiAmount); if (iPinpadType == 1) //外置PINPAD { PubucDispPinpad(hdlPinpad, 1, (char*)"BALANCE:"); PubucDispPinpad(hdlPinpad, 2, pszAddiAmount); } if (IsDisplayExtRf(0) == YES) { EA_ucDisplay_ExtRF(gbMifCardHandle,2, 1," 余额:"); EA_ucDisplay_ExtRF(gbMifCardHandle,3, 1," %s", pszAddiAmount); EA_ucDisplay_ExtRF(gbMifCardHandle,4, 1," "); } PubuiInkey(TIPS_TIMEOUT); if (iPinpadType == 1) { ClearPinpadDisp(hdlPinpad); while (EA_ucCloseDevice(&hdlPinpad) != EM_SUCCESS) ; } return NORMAL; }
int send_to_EFT(int len, char *p) { uchar ucRet; DevHandle hRS232Handle; ET_ProductInfo tProductInfo; #ifdef EPT_A9L memset(&tProductInfo, 0x00, sizeof(ET_ProductInfo)); EA_ucGetProductInfo(&tProductInfo); if ( memcmp(tProductInfo.acName , "E520" , 4) == 0 && tProductInfo.ucMachType == 2) { ucRet = EA_ucOpenDevice("COM3", 0, &hRS232Handle); } else { ucRet = EA_ucOpenDevice(SERIAL_PORT, 0, &hRS232Handle); } #else ucRet = EA_ucOpenDevice("COM", EM_io_PORT1, &hRS232Handle); #endif if (ucRet != EM_SUCCESS) { EA_vCls(); EA_vDisplay(2, "打开RS232口出错"); EA_ucCloseDevice(&hRS232Handle); PubuiInkey(3); return (EXCEPTION); } EA_ucInitRS232(hRS232Handle, EM_232_9600BPS, EM_232_NOPAR, EM_232_8DBS); EA_ucClearRS232(hRS232Handle);//清除RS232缓冲区 ucRet = EA_ucWriteDevice(hRS232Handle, (uint)len, 0, p); EA_ucCloseDevice(&hRS232Handle); // debug_print((char*)"SendToPC", p, len); if (ucRet == EM_io_SUCCESS) return NORMAL; else return EXCEPTION; return (NORMAL) ; }
/***************************************************************** 函数原型:DisplayWelcomeMenu 功能描述:本函数为显示欢迎界面 参数描述:无 参数名称: 输入/输出? 类型 描述 ----------- ----------- ------ ------- 返 回 值:无 *****************************************************************/ void DisplayWelcomeMenu(void) { EA_vCls(); EA_vDrawIcons(); EA_ucSetInverse(EM_lcd_INVOFF); EA_vDisp(1, 1, " 淄博市公共汽车公司 "); EA_vDisp(2, 1, " 手持POS加油机 "); EA_vDisp(3, 6, (void *)VERSION); if ( DevStat.record_number >= MAX_REC_NUM ) { EA_vDisp(3, 1, " 记录已满, 请上传 "); } EA_vDisp(4, 1, "设置 快捷 登陆"); return ; }
/*********************************************************************** * 函数名称: SendAdviceToHost * 功能描述: 向Host发送通知 * 输入参数: * 输出参数: * 返 回 值:0 - 成功 * 0xE0 - 与主机通信错误 * 其它说明: * 修改日期 版本号 修改人 修改内容 * * ------------------------------------------------- * xxxx/xx/xx xxxx xxx XXXX *************************************************************************/ int SendAdviceToHost () { uchar szGetBuffer[50]; PubGetBankcMacChk((char*)szGetBuffer); if (szGetBuffer[0]!= MAC_ECB) { PubSetBankcMacChk(MAC_ECB); } PubCalcMac (FV.EmvStru.gbszScript, FV.EmvStru.gbnScriptLen - 8, FV.EmvStru.gbszScript + FV.EmvStru.gbnScriptLen - 8); // WRITE_nVAR(FV.EmvStru.gbszScript); // 这里不需要保存,因为每次mac都要重新算 if (szGetBuffer[0]!= MAC_ECB) { PubSetBankcMacChk(szGetBuffer[0]); } // PubClearAll(); EA_vCls (); ProDispCommMsg (7); // PubDisplay(4, "处理中,请稍候..."); ASSURE_NORMAL(PubYlConnect(&CommInfo)); if (ProSendToHost (&CommInfo, FV.EmvStru.gbnScriptLen, FV.EmvStru.gbszScript) != NORMAL) return EXCEPTION; ProDispCommMsg (8); BUFCLR (gbszReadStr); if (ProReadFromHost (&CommInfo, &gbnReadLen, gbszReadStr) != NORMAL) return EM_ERROR; if (PubDispScriptMsg () != NORMAL) return EM_ERROR; PubSetScriptFlag (0);// by wei ,bctc检测要看放这里合适不。 return (0); }