Exemple #1
0
// [03/24/2015 shizd DJ] 用通用接口读非接卡数据
int PubReadCardM1( void)
{
	uchar ucRet;
	uchar ucConfig;
	uint  uiLen;
	DevHandle hDevHandle;
	uchar  ucDataout[256];
	uchar  ucKey[6] = {0x11, 0x11, 0x22, 0x22, 0x33, 0x33};
	char  szTrack2Buf[256];
	ET_MAGCARD szTrack2;
	int nTrack2StxLen;			// 保存二磁道SS标志的长度
    int nTrack2FsPos;			// 保存二磁道分隔符FS的位置
	int i;

	ucRet = EA_ucOpenRfCardDevEI((char *)"COM1", &hDevHandle, &ucConfig);// by shizd20150324 内外置射频统一打开接口
	if( ucRet != EM_SUCCESS )
	{
		EA_vDisplay(2 ,"打开RFCARD失败!");
		EA_ucCloseRfCardDevEI(&hDevHandle); // by shizd20150324 内外置射频统一关闭接口
		PubuiInkey(2);
		return EXCEPTION;
	}

	EA_vDisplay(2 ,"请放卡");

	uiLen = 0;
	BUFCLR(ucDataout);
	ucRet = EA_ucMIFActivateLib(hDevHandle, 5, &uiLen, ucDataout);
	EA_ucSetRFParamLib(hDevHandle,7,11);// by shizd20150324 统一在EA_ucMIFActivateLib之后调用

	/*
	// 根据卡片类型进行激活
	switch(ucMifType)
	{
    case EM_mifs_S50:
          ucRet = EA_ucMIFActivateLib(hDevHandle, EM_mifs_S50, &uiLen, ucDataout);
          break;
    case EM_mifs_S70:
          ucRet = EA_ucMIFActivateLib(hDevHandle, EM_mifs_S70, &uiLen, ucDataout);
          break;
    case EM_mifs_PROCARD:
          ucRet = EA_ucMIFActivateLib(hDevHandle, EM_mifs_PROCARD, &uiLen, ucDataout);
          break;
    case EM_mifs_PRO_S50:
          // 对于这种卡片,如果按照S50存储卡方式激活,则后继该卡只能做为S50存 储卡使用
  		  // ucRet = EA_ucMIFCardActivate(hDevHandle, EM_mifs_S50, &uiLen, ucDataout);
          // 如果按照Pro卡方式激活,则后继该卡做为Pro卡使用
		  ucRet = EA_ucMIFCardActivate(hDevHandle, EM_mifs_PROCARD, &uiLen, ucDataout);
          break;
    case EM_mifs_PRO_S70:
          // 对于这种卡片,如果按照S70存储卡方式激活,则后继只能做为S70存储卡 使用
 		  // ucRet = EA_ucMIFCardActivate(hDevHandle, EM_mifs_S70, &uiLen, ucDataout);
          // 如果按照Pro卡方式激活,则后继只能做为Pro卡使用
		 ucRet = EA_ucMIFCardActivate(hDevHandle, EM_mifs_PROCARD, &uiLen, ucDataout);
          break;
    case EM_mifs_TYPEBCARD:
          ucRet = EA_ucMIFCardActivate(hDevHandle, EM_mifs_TYPEBCARD, &uiLen, ucDataout);
          break;
     default:
          ucRet = EM_ERROR;
          break;
	}
	*/

	if( ucRet != EM_SUCCESS )
	{
		EA_vDisplay(2 ,"激活卡片失败=%d!", ucRet);
		EA_ucCloseRfCardDevEI(&hDevHandle);
		PubuiInkey(2);
		return EXCEPTION;
	} else { // by shizd20150324 读取非接卡二磁道数据
		ucRet = EA_ucMIFAuthToRamLib(hDevHandle, 2, EM_mifs_KEYA, ucKey);
		if (ucRet != EM_mifs_SUCCESS)
		{
			EA_vDisplay(2 ,"卡片认证失败!");
			EA_ucCloseRfCardDevEI(&hDevHandle);
			PubuiInkey(2);
			return EXCEPTION;
		}

		BUFCLR(szTrack2Buf);
		BUFCLR(ucDataout);
		ucRet = EA_ucMIFReadLib(hDevHandle, 8, ucDataout);
		if (ucRet != EM_SUCCESS)
		{
			EA_vDisplay(2 ,"读卡片失败!");
			EA_ucCloseRfCardDevEI(&hDevHandle);
			PubuiInkey(2);
			return EXCEPTION;
		}
		memcpy(szTrack2Buf, ucDataout, 16);

		BUFCLR(ucDataout);
		ucRet = EA_ucMIFReadLib(hDevHandle, 9, ucDataout);
		if (ucRet != EM_SUCCESS)
		{
			EA_vDisplay(2 ,"读卡片失败!");
			EA_ucCloseRfCardDevEI(&hDevHandle);
			PubuiInkey(2);
			return EXCEPTION;
		}
		memcpy(szTrack2Buf+16, ucDataout, 16);

		BUFCLR(ucDataout);
		ucRet = EA_ucMIFReadLib(hDevHandle, 10, ucDataout);
		if (ucRet != EM_SUCCESS)
		{
			EA_vDisplay(2 ,"读卡片失败!");
			EA_ucCloseRfCardDevEI(&hDevHandle);
			PubuiInkey(2);
			return EXCEPTION;
		}
		memcpy(szTrack2Buf+32, ucDataout, 2);

		EA_ucMIFHalt(hDevHandle);//by shizd20150324 挂起卡片
	}
	
	memset ((char *) &szTrack2, 0, sizeof (ET_MAGCARD));
	memcpy(szTrack2.aucTrkBuf , szTrack2Buf,strlen(szTrack2Buf));
	szTrack2.ucTrkFlag = EM_mag_SUCCESS;
	szTrack2.ucTrkLength = strlen(szTrack2Buf);

	nTrack2StxLen = 0;
	for (i = 0; i < szTrack2.ucTrkLength; i++)	// 确定分隔符FS的位置,如果不是0-9,就认为是FS,Mastercard的FS为符号'='
	{
		if ((szTrack2.aucTrkBuf[i] < '0')
			|| (szTrack2.aucTrkBuf[i] > '9'))
			break;
	}
	if (i >= szTrack2.ucTrkLength)	// 若没找到分隔符,按PAN长度位最长算即19推算,FS的位置
	{
		i = nTrack2StxLen + 19;//chenjs20061025 add
	}
	nTrack2FsPos = i;
	memcpy (GBTRANSDATA.stPosLs.szCardNo, szTrack2.aucTrkBuf + nTrack2StxLen,
					nTrack2FsPos - nTrack2StxLen);

	EA_vDisplay(2 ,"卡号:%s",GBTRANSDATA.stPosLs.szCardNo);
	EA_vDisplay(3 ,"请确认");
	EA_uiInkey(10);

	EA_ucCloseRfCardDevEI(&hDevHandle);
	return NORMAL;
}
Exemple #2
0
void vHaveNoDialNum(void)
{
	INT8 cTempNo[DIALNOLEN];
	UINT8 i,ucAct,ucKeyValue;
	UINT8 ucReFlag=0,ucKeyFlag=0;
	vClearCallNo();
	memset(cTempNo,0x00,sizeof(cTempNo));
	while(1)
	{
		ucAct=ucGetActAndKey(&ucKeyValue);						
		if(ucAct==KEYHIT)
		{
			switch(ucKeyValue) 
			{			
			case KEY_X07:
				ucKeyValue='#';
			case KEY_X08:
				if(ucKeyValue==KEY_X08)
				{
					ucKeyValue='*';
				}
			case KEY_0:
			case KEY_1:
			case KEY_2:
			case KEY_3:
			case KEY_4:
			case KEY_5:
			case KEY_6:
			case KEY_7:
			case KEY_8:
			case KEY_9:
				EA_cPhoneDial((char)ucKeyValue);
				vSetCallNo(ucKeyValue);
				vGetCallNo(cTempNo);
				display(3,cTempNo);
				ucKeyFlag=1;
				break;
			case KEY_REDIAL:
				if(ucKeyFlag==0)
				{
					cls();
					EA_vDisplay(3, "无号码不可以重拨");
					break;
				}		
				vCallEnd();//挂机
				ucReFlag=0;
				if(EA_cPhoneGetHs())
				{
					vSwitchHandSet();
				}
				else
				{
					vSwitchHandFree();
				}	
				EA_vDelayMs(400);
				memset(cTempNo, 0x00, sizeof(cTempNo));
				vGetReDialNo(cTempNo);
				vClearCallNo();
				EA_ucTeleDialStr(cTempNo);
				for(i = 0 ; i < strlen(cTempNo); i ++)
				{
					vSetCallNo(cTempNo[i]);
				}
				ucReFlag = 1;
				EA_vDisplay(1, "      重拨电话");
				display(3, cTempNo);
				
				break;
			default:
				break;
			}	
		}
		else if(ucAct==CALLON_SET)
		{
			vSwitchHandSet();
		}
		else if(ucAct==CALLON_FREE)
		{
			vSwitchHandFree();
		}
		else if(ucAct==CALLEND)
		{
			vCallEnd();
			ucReFlag=0;
			return;
		}	
	}
}
Exemple #3
0
int read_from_EFT(int *pLen, char *readstr)
{
	char buffer[512];
	ET_ProductInfo tProductInfo;
	uint unActLen;
	uchar ucRet;
	DevHandle hRS232Handle = EM_INVALID_HANDLE;
	
	unActLen = 0;
	
#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 || hRS232Handle == EM_INVALID_HANDLE)
	{
		EA_vCls();
		EA_vDisplay(2, "打开RS232口出错[%02x]", ucRet);
		EA_ucCloseDevice(&hRS232Handle);
		
		PubuiInkey(3);
		return (EXCEPTION);
	}

	ucRet = EA_ucInitRS232(hRS232Handle, EM_232_9600BPS, EM_232_NOPAR, EM_232_8DBS);
    if (ucRet != EM_SUCCESS)
    {
        EA_vCls();
        EA_vDisplay(2, "RS232初始化错[%02x]", ucRet);
        EA_ucCloseDevice(&hRS232Handle);
        
        PubuiInkey(3);
		return (EXCEPTION);
    }

	while (1)
    {
		*pLen = 0;
		/*
		* read STX 0x02 until time out
		*/
		memset (buffer ,0 ,sizeof(buffer));
		do
		{
			if(EM_key_HIT == EA_ucKBHit()) 
			{		
				EA_ucCloseDevice(&hRS232Handle);
				return (EXCEPTION);	    
			}
			EA_ucReadDeviceMs(hRS232Handle, 1, 10, buffer, &unActLen);
        } while (buffer[0] != 0x02);
		
        //read left data
		ucRet = EA_ucReadDeviceMs(hRS232Handle, 200, 10, buffer+1, &unActLen);
        if (ucRet != EM_SUCCESS || unActLen > 200)
            continue;

//        debug_print((char*)"SERIAL CMD", buffer, unActLen + 1);//FIXME
        
        *pLen = unActLen + 1;
        memcpy(readstr, buffer, *pLen);

		break;
	} //end of while
	
	EA_ucCloseDevice(&hRS232Handle);
	return (NORMAL);
}
Exemple #4
0
/*****************************************************************
 函数原型:Device_Handle_Init()
 功能描述:设备所有句柄初始化
 参数描述:	
				 
 返回值:	OK ? NOTOK
 
 作  者: 刘及华
 日  期:	2012-11-24
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
*****************************************************************/
INT8U Device_Handle_Init(void)
{
	uchar  ucRet;
	uint   cap_sd;

	if (EA_ucOpenDevice("RFCARD", EM_mifs_TYPEA, &hMifsHandle) != EM_SUCCESS)
	{
		lcddisperr("读卡器初始化失败");
		return notok;
	}
	if ( EA_ucOpenDevice("PRINT", EM_io_REALMODE, &hDprinterHandle) != EM_SUCCESS )
	{
		lcddisperr("获得打印操作句柄失败!");
		return notok;
	}
	if ( EA_ucOpenDevice("USBD", EM_io_REALMODE, &hUSBDHandle) != EM_SUCCESS )
	{
		lcddisperr("获得打印操作句柄失败!");
		return notok;
	}
//  if ( EA_ucOpenDevice("WLM", 0, &hWLMHandle) != EM_SUCCESS )
//  {
//  	lcddisperr("获得GPRS句柄失败!");
//  	return notok;
//  }
///////////////////////////////////////////////打印机设置参数
	ucRet =  EA_ucInitPrinter(hDprinterHandle);
	if ( ucRet != EM_SUCCESS )
	{
		EA_vDisplay(2, "初始化打印机芯失败!");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_XSPACE, 0);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印字符间距设置失败");
		return notok;
	}
	ucRet =  EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_YSPACE, 8);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印行距设置失败");
		return notok;
	}

	//  ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PAGESPACE, 578);
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PAGESPACE , 180);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印页长度设置失败");
		return notok;
	}

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_ASCII_DOTTYPE, EM_prn_ASCIIDOT24X12); 
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印ASCII字符设置失败");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_ASCII_PRNTYPE, EM_prn_ASCIIPRN1X1);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印ASCII字符大小失败");
		return notok;
	}
	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_HZ_DOTTYPE, EM_prn_HZDOT24X24);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印汉字设置失败!");
		return notok;
	}

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_HZ_PRNTYPE, EM_prn_HZPRN1X1);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印汉字大小设置失败");
		return notok;
	}	

	ucRet = EA_ucSetPrinterFormat(hDprinterHandle, EM_prn_PRNGRAY, 4);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("打印灰度设置失败");
		return notok;
	}
/////////////////////////////////////////////////////////////////////////////初始化时候只设置一次
	if (EA_ucOpenDevice("SAM1CARD", 0, &hSam1Handle) != EM_SUCCESS)
	{
		lcddisperr("PSAM卡初始化失败");
		return notok;
	}
//  if (EA_ucOpenDevice("USERCARD", 0, &hCpuHandle) != EM_SUCCESS)
//  {
//  	lcddisperr("CPU卡初始化失败");
//  	return notok;
//  }
//  if (EA_ucICInitModule(hCpuHandle, EM_ic_VOLDEFAULT, EM_ic_TCRMODE) != EM_SUCCESS)
//  {
//      lcddisperr("设置CPU规范失败");
//   	return notok;
//  }
    ucRet = EA_ucOpenDevice("USBD", 0, &hRS232Handle);
	if ( ucRet != EM_SUCCESS )
	{
		(void)EA_ucCloseDevice(&hRS232Handle);
		lcddisperr("COM口初始化失败!");
		return notok;
	}
	ucRet = EA_ucInitRS232(hRS232Handle, EM_232_115200BPS, EM_232_NOPAR, EM_232_8DBS);
	if ( ucRet != EM_SUCCESS )
	{
		(void)EA_ucCloseDevice(&hRS232Handle);
		lcddisperr("COM口设置失败!");
		return notok;
	}
//获取SD卡信息
	ucRet = EA_ucGetDiskInfo(EM_DISK_SDCARD, &ptDiskInfo);
	if ( ucRet != EM_SUCCESS )
	{
		lcddisperr("请插入SD卡!");
		return notok;
	}
	cap_sd = ptDiskInfo.ullSize / 0x100000;
	EA_vDisplay(3, "  SD卡可用容量%dM", cap_sd);
	SleepMs(2000);
	if(cap_sd < 1)
	{
		lcddisperr("请及时清理SD中数据!");
		Beeperr();
	}
//  // 分配空间来存储磁盘的分区列表
//  ptPartList = EA_pvMalloc(ptDiskInfo.uiPartNum * sizeof(ptPartList));
//  if (!ptPartList)
//  {
//  	lcddisperr("分配SD卡缓存区失败!");
//  	return notok;
//  }
//  // 获取磁盘的分区列表
//  ucRet = EA_ucGetPartList(EM_DISK_SDCARD, ptDiskInfo.uiPartNum, &uiRealPartNum, ptPartList);
//  if (ucRet != EM_SUCCESS)
//  {
//  	EA_vFree(ptPartList);
//  	lcddisperr("获取SD卡列表失败!");
//  	return notok;
//  }
//
//  EA_vDisplay(1, "分区数目:%d", ptDiskInfo.uiPartNum);
//  SleepMs(3000);

	ucRet = EA_ucGetPartInfo(EM_DISK_SDCARD, 0, &ptPartInfo);
	if (ucRet != EM_SUCCESS)
	{
		lcddisperr("获取SD卡分区信息失败!");
		return notok;
	}

	return ok;
}
Exemple #5
0
/******************************************************************************
 函数名称:print_work_note_history
 功能描述:打印日结算历史票据
 参数名称:输入/输出?	类型		描述
 输入		
 
 返  回  值:
 
 作      者	:于福勇
 日      期:2004-09-02
 修改历史:
		日期		修改人		修改描述
		------		---------	-------------
******************************************************************************/
void print_work_note_his(INT8U * rec)
{
	uchar       ucRet;
	INT8U		RecBuff[70];
	INT8U		strbuff[50];
	INT8U		time[7+2];


	_BANLANCE_IN_HAND * prec = (_BANLANCE_IN_HAND *)rec;

	EA_vCls();
	
	EA_vDisplay(1, "  历史日结帐单打印  ");//(int qx, int qy, char * ceStr, int xyFlag)
	EA_vDisplay(2, "       请等待...    ");//(int qx, int qy, char * ceStr, int xyFlag)
	SleepMs(1500);

	memset(RecBuff, 0, sizeof(RecBuff));

	ucRet = EA_ucGetPrinterStatus(hDprinterHandle);      //打印前必须判断打印机的状态
	if( ucRet == EM_prn_PAPERENDED )
	{
		EA_vCls();
		EA_vDisplay(1, "   缺纸,打印失败!  ");
		EA_vDisplay(2, "   请放入纸张后    ");
		EA_vDisplay(3, "   按确认任意键    ");
		EA_uiInkey(0);
	}
	if( ucRet == EM_prn_OVERHEAT )
	{
		EA_vDisplay(2, "    机芯温度过高    ");
		EA_vDisplay(3, "    请稍后再打印     ");
		EA_uiInkeyMs(500);
		return;
	}
	if( ucRet == EM_prn_LOWVOL )
	{
		EA_vDisplay(2, "    电池电量过低    ");
		EA_vDisplay(3, "   请充电后再打印   ");
		EA_uiInkeyMs(500);
		return;
	}

	(void)EA_ucPrinterAutoFeeding(hDprinterHandle);
///打印头
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"淄博市公共汽车公司\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"日结帐单历史记录\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费次数
	sprintf((void *)strbuff, "天然气加气次数 :%6d次\r\n", prec->consume_cnt[0]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#加油次数:%6d次\r\n", prec->consume_cnt[1]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#加油次数:%6d次\r\n", prec->consume_cnt[2]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴油加油次数   :%6d次\r\n", prec->consume_cnt[3]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费体积
	sprintf((void *)strbuff, "天然气体积 :%6.2lf元\r\n", (double)(prec->consume_cap[0])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#体积:%6.2lf元\r\n", (double)(prec->consume_cap[1])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#体积:%6.2lf元\r\n", (double)(prec->consume_cap[2])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴 油 体 积:%6.2lf元\r\n", (double)(prec->consume_cap[3])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
//消费金额
	sprintf((void *)strbuff, "天然气金额 :%6.2lf元\r\n", (double)(prec->consume_amt[0])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油93#金额:%6.2lf元\r\n", (double)(prec->consume_amt[1])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "汽油97#金额:%6.2lf元\r\n", (double)(prec->consume_amt[2])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	sprintf((void *)strbuff, "柴 油 金 额:%6.2lf元\r\n", (double)(prec->consume_amt[3])/100);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");
	sprintf((void *)strbuff, "总  金  额 :%6.2lf元\r\n", (double)(prec->consume_amt[0]+prec->consume_amt[1]+prec->consume_amt[2]
															+prec->consume_amt[3])/100);

	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)"------------------------------\r\n");

//上班时间	
	memcpy(time, (INT8U*)&prec->work_datetime, 7);
	sprintf((void *)strbuff, "上班时间:\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);
	sprintf((void *)strbuff, "%02X%02X-%02X-%02X %02X:%02X:%02X\r\n", time[0],time[1],time[2],time[3],time[4],time[5],time[6]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);	
//下班时间
	memcpy(time, (INT8U*)&prec->down_datetime,7);
	sprintf((void *)strbuff, "下班时间:\r\n");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);
	sprintf((void *)strbuff, "%02X%02X-%02X-%02X %02X:%02X:%02X\r\n", time[0],time[1],time[2],time[3],time[4],time[5],time[6]);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char*)strbuff);	

//分行符号
	strcpy((void *)strbuff, "---------------------------------- \r\r\r");
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	
//设备编号
	htoa(RecBuff, &prec->equ_id[0], 3);
	sprintf((void *)strbuff, "设备编号  :%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//商户号
	htoa(RecBuff, &prec->acnt_id[0], 2);
	sprintf((void *)strbuff, "站  点  号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
//操作员号
	htoa(RecBuff, &prec->oper_id[0], 1);
	sprintf((void *)strbuff, "加油员工号:%s\r\n", RecBuff);
	(void)EA_ucLinePrinter(hDprinterHandle, 0, (char *)strbuff);
	// 打印最后调用换页命令
	ucRet = EA_ucLinePrinter(hDprinterHandle, 0, "\f");
	if ( ucRet == EM_SUCCESS )
	{
		EA_vDisplay(2, "本次打印结束!");
		Beep(1000);
		EA_uiInkeyMs(2000);
	}
		
}
Exemple #6
0
// *****************************************************************
// 功能:		man_set_busnum
// 说明:		手动输入车号
// 入口参数:	
// 出口参数:	Null
// 作者:
// 返回值:		Null		
// *****************************************************************
void man_set_busnum(void)
{
	INT8U i = 0;
	INT8U input1[20];
	uchar  uckey;
	uint   uikey;
	uchar  ret;
	uchar  temp_uc[5];
//  if ( strcmp((void *)&DevStat.bus_number[0], "12345") == 0 )
//  {
//  	goto set_bus_number;
//  }

	EA_vCls();
	lcddisp(2, 1, (void *)"输入车号:           ");
	strcpy((void *)input1, "");

	for ( ;; )
	{
		i = EA_ucGetInputStr(2, 10, 20, EM_BIG_FONT | EM_MODE_CHAR | EM_ALIGN_LEFT | EM_SHOW_ORIGINALLY
							 , 5, 5, 0, (void *)input1); //刘及华,修改只能输入数字和字母
		if ( i == EM_SUCCESS )
			break;
		if ( i == EM_ABOLISH )
			return;      //do nothing
	}

	memcpy((void *)&CardInfo.bus_number[0], (void *)input1, 5);

	WriteParam();

	EA_ucSetInverse(EM_lcd_INVON);
	lcddisp(3, 1, (void *)"      输入成功      ");
	EA_ucSetInverse(EM_lcd_INVOFF);
	SleepMs(1500);

RESELECT:
	

	memcpy(temp_uc, &CardInfo.bus_number[0], 5);

	i = BlackName_Find((char *)temp_uc);	//白名单判断
	if ( i != ok )	 						//不是白名单
	{
		lcddisperr("该卡不在白名单中");
		Beeperr();
		return;
	}

	EA_vCls();
	EA_vDisplay(1, "车  号 :鲁C-%s", CardInfo.bus_number);

	lcddisp(4, 1, (void *)"     请刷员工卡     ");

	while(1)
	{
		if( CardInit() == ok )
			break;

		uckey = EA_ucKBHit();
		if ( uckey ==  EM_key_HIT )		 	//按下取消键
		{
			uikey = EA_uiInkey(0);
			if ( uikey == EM_key_CANCEL )   //按下取消键
			{
				return ;
			}
		}
	}

	ret = M1CardProcess();   //再检测员工卡
	if(ret == ok)
	{
		;
	}
	else
	{
		goto RESELECT;
	}

	return;
}
Exemple #7
0
/*
ucKeyFileID : 密钥文件ID
ucBossNo[] : 商户号,有效长度15
ucTermNo[] : 终端号,有效长度8

返回值
uiRecID : 记录号(第几组密钥)
uiState : 状态,0表示可用,1表示已用
uiKEKIndex :  KEK索引
ucKeyInfo[] : 密钥信息,有效长度24

步骤:
1、通过 商户号+终端号,搜索密钥文件是否存在该记录,返回记录号uiRecID
2、若存在该记录,读取该记录信息。返回 EM_SUCCESS
3、若不存在该记录,返回 EM_ERROR
*/
uchar ucKeyExtract(uchar ucKeyFileID,uchar ucBossNo[],uchar ucTermNo[],uint *uiRecID,uint *uiState,uint *uiKEKIndex, uchar ucKeyInfo[] ,uchar * ucTMKIndex)
{
    uchar ucResult;         //返回API函数的结果
    ushort usLen,usOffset;  //用于搜索
    uchar ucSearchArr[23];  //存放 商户号+终端号,用于搜索
    uchar ucBuff[30];       //搜索关键字格式

    uint iIndex;          //用于循环
    uchar ucRecInfo[100]; //ucKeyInfo[]+1字节的状态字(初始为0x00)
    uint uiRecCntW;
    uint uiTmkIndex;

    //搜索是否有同一 (商户号+终端号)
    for( iIndex = 0; iIndex < 15; iIndex++)
        ucSearchArr[iIndex] = ucBossNo[iIndex];
    for( iIndex = 0; iIndex < 8; iIndex++)
        ucSearchArr[15 + iIndex] = ucTermNo[iIndex];

    //先构造搜索关键字
    usLen = 23; // 要查找数据的长度 An23: 商户号An15 + 终端号An8

    usOffset = 0; // 从版本号 N4 字符串后面开始,strlen("0001")

    memcpy(ucBuff, &usLen, sizeof(ushort)); // 拷贝要查找的关键字长度

    memcpy(&ucBuff[sizeof(ushort)], &usOffset, sizeof(ushort)); // 拷贝要查找数据在记录中的偏移

    memcpy(&ucBuff[2*sizeof(ushort)], ucSearchArr, usLen); // 拷贝要查找的关键字

    usOffset = 0;      // 结束查找数据
    memcpy(&ucBuff[2*sizeof(ushort)+usLen], &usOffset, sizeof(ushort));

    *uiRecID=0;
    //从文件头信息文件中 第一条记录 开始查找
    ucResult =EA_ucPFFindRec( ucKeyFileID, 1, ucBuff, uiRecID);

    if( ucResult == EM_SUCCESS && uiRecID != 0 )
    {
        //读取记录信息
        if(EA_ucPFReadRec( ucKeyFileID, *uiRecID, 1, &uiRecCntW, ucRecInfo) ==EM_SUCCESS)
        {
            //提取记录信息供返回

            //状态
            *uiState = ucRecInfo[48] - '0';

            //KEY索引
            *uiKEKIndex = ucRecInfo[47]/16*10 + ucRecInfo[47] % 16;
            uiTmkIndex = ucRecInfo[49]/16*10 + ucRecInfo[49] % 16;
            sprintf(ucTMKIndex , "%02d" , uiTmkIndex);
#ifdef SET_DEBUG
            PubDisplay(1 , "[%ld]tmk[%ld]", *uiKEKIndex ,uiTmkIndex );
            PubDisplay(2 , "[%02x][%02x]" , ucRecInfo[47] , ucRecInfo[49]);
            PubuiInkey(0);
#endif

            //密钥密文
            for( iIndex = 0; iIndex < 24; iIndex++)
                ucKeyInfo [iIndex] = ucRecInfo [23 + iIndex];
        }

    }
    else if( ucResult == EM_ffs_NOTFIND || ucResult == EM_ffs_INPUTERR)
    {
        //记录未找到,或者输入参数错误
        PubClearAll();
        PubDisplayInv(1, "错误");
        PubDisplayCen(3,"没有找到匹配的密钥");

        PubuiInkey(3);
        return EM_ERROR;
    }
    else
    {
        //其他出错
        PubClearAll();

        if(ucResult == EM_ffs_CHECKERR)
            EA_vDisplay(4,"内存变量校验出错");
        if(ucResult == EM_ffs_FLASHERR)
            EA_vDisplay(4,"flash坏");
        if(ucResult == EM_ffs_NOTFMT)
            EA_vDisplay(4,"未格式化");
        if(ucResult == EM_ffs_SYSCLP)
            EA_vDisplay(4,"文件系统崩溃");
        if(ucResult == EM_ffs_NOTOPEN)
            EA_vDisplay(4,"未打开文件");

        PubuiInkey(3);
        //关闭文件
        ucResult = EA_ucPFClose( ucKeyFileID );
        return EM_ERROR;
    }
    return EM_SUCCESS;
}