⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 posfunc.c

📁 这是一个基于UCLinux下的一个GPRS 移动POS设备的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
{
    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 + -