Example #1
0
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

}
Example #2
0
/*
* 函数功能:查看柜员
* 入口参数:无
* 出口参数:无
* 返 回 值:无
*/
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;
}
Example #3
0
/*
 * 函数功能:读取卡组织代码
 * 入口参数:无
 * 出口参数:无
 * 返 回 值: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;
	    }
	}
}
Example #4
0
File: main.c Project: 12019/zibogas
/*****************************************************************
 函数原型: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;
}
Example #5
0
File: main.c Project: 12019/zibogas
/******************************************************************************
 函数名称:TimeModify
 功能描述:要求输入时间,进行修改
 参数描述:
 参数名称:	输入/输出?	类型		描述
				
 返  回  值:无
				   
 作      者	:许岩
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void TimeModify(void)
{
	INT8U i = 0;
	INT8U input[50];
	INT8U buf[50];
	BUS_TIME ltime;

	for (;;)
	{
		EA_vCls();
		Get_Time(&ltime);
		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(&ltime);
		if ( i != ok )
		{
			EA_vCls();
			EA_vDisp(4, 1, "时间格式错误");
			SleepMs(1500);
			//  		EA_vCls();
			continue;
		}

		Modify_Time(&ltime);
		EA_vCls();
		EA_vDisp(4, 1, "时间修改成功");
		SleepMs(1500);
		break;
	}
}
Example #6
0
/*
 * 函数功能:读取卡组织代码
 * 入口参数:无
 * 出口参数:无
 * 返 回 值: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;
    }
}
Example #7
0
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;
}
Example #8
0
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 ;
}
Example #9
0
/**********************************************************************
* 函数名称:
*
* 功能描述:
*
* 输入参数:     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 );
	}
}
Example #10
0
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;
}
Example #11
0
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;
}
Example #12
0
File: main.c Project: 12019/zibogas
// *****************************************************************
// 功能:		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);
}
Example #13
0
File: main.c Project: 12019/zibogas
// *****************************************************************
// 功能:		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);
}
Example #14
0
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;
}
Example #15
0
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;
}
Example #16
0
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;
}
Example #17
0
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;
}
Example #18
0
File: main.c Project: 12019/zibogas
/*****************************************************************
函数原型: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;
}
Example #19
0
void PubAbout( void )
{
	EA_vCls();
	PubDisplayCen(1, "南京德基");
//	PubGetFileInfo( szBuff );
	PubDisplayCen(3, "Ver.010105");
	PubDisplayCen(4, "福建联迪商用"   );
	if (PubuiInkey(2) == EM_key_CANCEL)   //如果误选通讯方式(无线),造成死机,在这里可以进行设置。
		PubSetupSys();
	return;
}
Example #20
0
/*
 * 函数功能:结算交易:包含正常商户结算和分期付款商户结算。
 * 入口参数:无
 * 出口参数:无
 * 返 回 值: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;
}
Example #21
0
File: main.c Project: 12019/zibogas
// *****************************************************************
// 功能:		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;
}
Example #22
0
//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;
}
Example #23
0
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;
}
Example #24
0
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;	
}
Example #25
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;	
}
Example #26
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;
}
Example #27
0
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;
}
Example #28
0
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) ;
}
Example #29
0
File: main.c Project: 12019/zibogas
/*****************************************************************
函数原型: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 ;
}
Example #30
0
/***********************************************************************
* 函数名称: 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);
}