📄 posfunc.c
字号:
{
short sLevel;
char temp[10];
int nCommWay;
static int nModuleType = -1;
if (nModuleType == -1) {
Syd_GetModuleType(temp, sizeof(temp)); temp[1] = 0;
nModuleType = atoi(temp);
}
sLevel = Syd_GetBatteryVolume();
if (sLevel >= 0)
Syd_DisplayBattery(sLevel);
if (nModuleType == CDMA) return;
Syd_GetEnv("#COMM", temp, 1);
temp[1] = 0;
nCommWay = atoi(temp);
switch (nCommWay)
{
case COMM_GPRS:
if (nModuleType == GSM) {
if (Syd_IsGprsExist() == 1)
Syd_DisplayGprs(1);
else
Syd_DisplayGprs(0);
}
case COMM_SMS:
case COMM_DATA:
sLevel = Syd_GetSignalLevel();
if (sLevel >= 0)
Syd_DisplaySignal(sLevel);
break;
default:
break;
}
}
// *******************************************************************
// Function Name : PrintReceipt
// Function : print the receipt
// Parameter :
// Return :
// *******************************************************************
int PrintReceipt( )
{
int nRet;
if ( !Syd_CheckPaper() )
{
Syd_ErrorMessageWait( 3, "Out Of Paper", 0, ALIGN_CENTER );
return RET_FAILURE;
}
if ( Syd_OpenPrinter() < 0 )
{
Syd_ErrorMessageWait( 3, "Open Printer Err.", 0, ALIGN_CENTER );
return RET_FAILURE;
}
nRet = PrintNormal( );
Syd_ClosePrinter();
if ( RET_PRINT_ERR == nRet )
{
Syd_ErrorMessage( 3, "Print Fail", 0, ALIGN_CENTER );
Syd_WaitReturn();
}
return nRet;
}
// *******************************************************************
// Function Name : PrintNormal
// Function : print the receipt
// Parameter :
// Return :
// *******************************************************************
static int PrintNormal( )
{
char temp[ 32 + 1 ], buf[ 40 + 1 ], tt[30];
int x, y, i, nGray;
x = 2;
y = 2;
memset( buf, 0, sizeof( buf ) );
if ( Syd_GetEnv( "#GRAY", buf, 1) < 0 )
{
nGray = 1;
}
else
nGray = atoi(buf);
Sys_Prn_Gray(nGray);
// MERCHANT NO
Syd_FieldVar( gTrans.strHdtBuf, HDT_MID, HDT_FS, buf );
strcpy( temp, "MERCHANT NO");
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
sprintf(temp, "%32s", buf);
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
// TERMINAL NO
Syd_FieldVar( gTrans.strHdtBuf, HDT_TID, HDT_FS, buf );
strcpy( temp, "TERMINAL NO");
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
sprintf( temp, "%32s", buf );
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
if ( Syd_PrinterFeed( 4 ) < 0 )
return RET_PRINT_ERR;
// AMOUNT
sprintf( temp, "AMOUNT");
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
sprintf( temp, " RMB%.2lf", atof( gTrans.strAmt ) / 100.00 );
if (Syd_PrintText12(temp, x, y) != 0)
return RET_PRINT_ERR;
if ( Syd_PrinterFeed( 25 ) < 0 )
return RET_PRINT_ERR;
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosPaperChk
// Function : check paper
// Parameter :
// Return :
// *******************************************************************
int DoPosPaperChk( void )
{
if ( !Syd_CheckPaper() )
{
Syd_ErrorMessageWait( 5, "Out Of Paper", 0, ALIGN_CENTER );
return RET_FAILURE;
}
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosCard
// Function : get card info
// Parameter :
// Return :
// *******************************************************************
int DoPosCard( void )
{
unsigned char cMode;
if ( GetCardNo( CARD1, SWIPE ) < 0 )
return RET_FAILURE;
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosPin
// Function : get holder pin
// Parameter :
// Return :
// *******************************************************************
int DoPosPin( void )
{
if ( GetHolderPin() < 0 )
return RET_FAILURE;
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosAmount
// Function : get transaction amount
// Parameter :
// Return :
// *******************************************************************
int DoPosAmount( void )
{
char strAmt[ 12 + 1 ], temp[ 30 ];
short sRet;
strcpy( temp, "Transaction Amount: " );
Syd_DisplayLine( 3, temp, 0, ALIGN_LEFT );
do
{
Syd_ClearLine( 5 );
sRet = Syd_GetMoney( 5, strAmt, 9 );
if ( sRet < 0 )
return RET_FAILURE;
} while( sRet <= 0 );
strcpy( gTrans.strAmt, strAmt );
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosHost
// Function : commnuication with host
// Parameter :
// Return :
// *******************************************************************
int DoPosHost( void )
{
int nRet;
char temp[20];
Syd_DisplayLine( 3, "Processing ...", 0, ALIGN_LEFT );
nRet = CommHost( );
if (nRet < 0) return RET_FAILURE;
if ( strcmp( gTrans.strRejcode, "00" ) != 0 )
{
sprintf(temp, "Err code: %s", gTrans.strRejcode);
Syd_ErrorMessageWait( 3, temp, 0, ALIGN_CENTER );
return RET_FAILURE;
}
return RET_SUCCESS;
}
// *******************************************************************
// Function Name : DoPosPrint
// Function :
// Parameter :
// Return :
// *******************************************************************
int DoPosPrint( void )
{
Syd_DisplayLine( 3, "Printing...", 0, ALIGN_LEFT );
return PrintReceipt( );
}
// *******************************************************************
// Function Name : DoPosPin
// Function : get holder pin
// Parameter :
// Return :
// *******************************************************************
int DoPosStoreTrans( void )
{
int nRet;
if (Syd_OpenFLASH() < 0)
RET_FAILURE;
nRet = Syd_FlashStoreData( TYPE_TRANSACTION, gTrans.sHostNo, atoi( gTrans.strPosser ), gTrans.strHostser, (unsigned char *)&gTrans, sizeof( TRANS_REC ) );
Syd_CloseFLASH();
return nRet;
}
int DoGetPosser(int flag)
{
char temp[ 10 ];
long posser;
Syd_FieldVar( gTrans.strHdtBuf, HDT_PSER, HDT_FS, temp );
posser = atol( temp );
switch ( flag )
{
case INC:
sprintf( gTrans.strPosser, "%06ld", ( posser >= MAX_POSSER ) ? 1L : ++posser );
break;
case DEC:
sprintf( gTrans.strPosser, "%06ld", ( posser == 1L ) ? MAX_POSSER : --posser );
break;
default:
sprintf( gTrans.strPosser, "%06ld", posser );
break;
}
Syd_FieldPut( gTrans.strHdtBuf, HDT_PSER, HDT_FS, gTrans.strPosser );
sprintf(temp, "HDT%d", gTrans.sHostNo);
if (Syd_PutEnv(temp, gTrans.strHdtBuf)<0)
return RET_FAILURE;
return RET_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -