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

📄 rucniterminal.cpp

📁 load data from pc to hand held terminal and vice versa
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        if ( !bIspravanID ) {
            PorukaID = IDS_LOS_PCAPP_ID;
        }
        else if ( bZakljucan ){
            PorukaID = IDS_TERMINAL_ZAKLJUCAN;
        }
        else {
            bVezaOK = true;
        }
    }

    return bVezaOK;
}

// Procedura proverava da li je terminal spreman za prijem naredne komande vezanu za lozinke
// ( stara verzija rucnog terminala ne podrzava lozinke ).
// Ako je terminal spreman, vraca true i podatke o terminalu ( admInf ).
// Ako terminal nije spreman, vraca false i poruku sa opisom problema( PorukaID ).
bool CRucniTerminalApp::TerminalSpremanZaLozinke( EIDKomande ID, int& PorukaID, 
                                                  KAdminInfo& admInf ){
    bool bSpreman = false;

    if( TerminalSpreman( PorukaID, admInf ) ) {
        if( KKomunikator::Instance()->RTPodrzavaKomandu( admInf.nVerzija, admInf.nPodverzija, ID ) ) {
            bSpreman = true;
        }
        else {
            PorukaID = IDS_FUNKCIJA_NIJE_PODRZANA;
        }
    }

    return bSpreman;
}

// Setuje/resetuje indikator prikljucenosti terminala
void CRucniTerminalApp::TerminalPrikljucen( bool bOnOff ){
    bTerminalPrikljucen = bOnOff;
}

// Vraca vrednost indikatora prikljucenosti terminala;
// Ako je bProveri = true, proverava na serijskom portu da li se terminal odaziva,
// na osnovu toga setuje indikator i tek onda vraca vrednost indikatora.
bool CRucniTerminalApp::IsTerminalPrikljucen( bool bProveri ){

    if ( bProveri ) {
        // Ocitaj 'admin info' sa terminala: ako uspe, terminal je prikljucen.
        KAdminInfo admInf;
        TerminalPrikljucen( OcitajUbrzanoAdminInfo( admInf ) );
    }

    return bTerminalPrikljucen;
}

// Pamti trenutne parametre komunikacije i uspostavlja 'brzu' komunikaciju
// ( broj pokusaja = 1, tajmaut = zadata vrednost ).
// Ova procedura treba da se koristi u paru sa 'VratiNormalnuKomunikaciju()' !
void CRucniTerminalApp::UspostaviBrzuKomunikaciju( double nTajmaut ){
    // Zapamti stara setovanja za tajmaute i broj pokusaja
    KKomunikator::Instance()->DajParametreKomunikacije( nTajmautOld, nTransakcTajmautOld, nBrPokusajaOld );

    // Postavi 'brze' parametre komunikacije
    KKomunikator::Instance()->PostaviParametreKomunikacije( nTajmaut, nTransakcTajmautOld, 1 );
}

// Vraca parametre komunikacije zapamcene pri pozivu f-je 'UspostaviBrzuKomunikaciju'
void CRucniTerminalApp::VratiNormalnuKomunikaciju( void ){
    KKomunikator::Instance()->PostaviParametreKomunikacije( nTajmautOld, nTransakcTajmautOld, nBrPokusajaOld );
}

    // Funkcija koja postavlja vrednost promenljive koja pamti verziju Windowsa
void CRucniTerminalApp::ProcitajVerzijuWindowsa( void ){
    // Initialize the OSVERSIONINFO structure.
    ZeroMemory( &osvi, sizeof( osvi ) );
    osvi.dwOSVersionInfoSize = sizeof( osvi );
        
    GetVersionEx( &osvi );  // Assume this function succeeds.
    
    bVerzijaOcitana = true;
}

// Funkcija vraca true ako se program izvrsava na Windowsu 9x ( a ne na NT-u )
bool CRucniTerminalApp::IsWindows9x( void ){
    if ( !bVerzijaOcitana ) ProcitajVerzijuWindowsa();

    if( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) 
        return true;
    else
        return false;
}

// Cita 'dodatni opis' sa terminala koriscenjem 'brze' komunikacije ( kraci tajmauti )
// i smesta u datu promenljivu ( opisRT ). U slucaju neuspeha vraca 'false'.
bool CRucniTerminalApp::OcitajUbrzanoDodatniOpisRT( KOpisRT& opisRT ) {
    bool izlaz;

    UspostaviBrzuKomunikaciju();
    izlaz = KKomunikator::Instance()->DajOpisRT( opisRT, true );
    VratiNormalnuKomunikaciju();

    return izlaz;
}
/////////////////// Funkcije za regulisanje dozvola pristupa <<BEGIN>> //////////////////

// Funkcija poziva dijalog za otkjucavanje rucnog terminala.
// Pod otkljucavanjem se podrazumeva izmena lozinke.
void CRucniTerminalApp::IzmeniLozinkuZaPristupRT( CWnd* pParentWnd )
{
    bool bLozinkePodrzane;
    bool bPrvaLozinka;
    KAdminInfo admInf;

    if ( !OcitajUbrzanoAdminInfo( admInf ) ) {
        // Po defaultu, omogucen je ulazak u masku za izmenu lozinke
        // ( npr. ako terminal nije prikljucen ili ako se ne odaziva iz nekog razloga )
        bLozinkePodrzane = true;
        bPrvaLozinka = false;
    }
    else {
        // Proveri da li su lozinke podrzane na prikljucenom terminalu
        bLozinkePodrzane = KKomunikator::Instance()->RTPodrzavaKomandu( admInf.nVerzija,
                                                                        admInf.nPodverzija,
                                                                        KT_IZMENA_LOZINKE );
        bPrvaLozinka = admInf.bPrviUnosLozinke;
    }

    // Pozovi odgovarajucu verziju forme
    if ( bLozinkePodrzane ) {
        if ( bPrvaLozinka ) {
    	    CPrvaLozinkaDlg prvaLozinka;
            prvaLozinka.DoModal();
        }
        else {
    	    CLozinkaDlg lozinka;
            lozinka.PostaviParametre( KT_IZMENA_LOZINKE, NAZIV_DLG_ZA_IZMENU_LOZINKE_PRISTUP );
            lozinka.DoModal();
        }
    }
    else MyMessageBox( IDS_FUNKCIJA_NIJE_PODRZANA );
}

// Otkljucavanje funkcije sa datim ID-om.
void CRucniTerminalApp::OtkljucajFunkciju( EIDKomande ID, CWnd* pParentWnd, CString naslov )
{
    bool bPrikaziPoruku = true;

    // Najpre proveri da li je terminal spreman za narednu komandu
    int PorukaID;
    KAdminInfo admInf;
    if( TerminalSpremanZaLozinke( ID, PorukaID, admInf ) ){

        // Unesi lozinku i otkljucaj odgovarajucu funkciju
        bool bLozinkaOK = true;
        if( KKomunikator::Instance()->RTPodrzavaKomandu( admInf.nVerzija, admInf.nPodverzija, ID ) ){
            CUnosLozinkeDlg unosLozinke;
            unosLozinke.PostaviParametre( ID, IDS_OTKLJUCAVANJE_NIJE_USPELO, naslov );
            unosLozinke.DoModal();
            bLozinkaOK = unosLozinke.LozinkaUspesnoUneta();
        }
        if ( bLozinkaOK ) PorukaID = IDS_OTKLJUCAVANJE_USPELO;
        else bPrikaziPoruku = false;
    }

    if ( bPrikaziPoruku ) MyMessageBox( PorukaID );

}

// Zakljucavanje funkcije sa datim ID-om.
void CRucniTerminalApp::ZakljucajFunkciju( EIDKomande ID, CWnd* pParentWnd )
{
    PrikaziPorukuIKursorZaCekanje( IDS_SNIMANJE_PODATAKA, pParentWnd );

    // Najpre proveri da li je terminal spreman za narednu komandu
    int PorukaID;
    KAdminInfo admInf;
    if( TerminalSpremanZaLozinke( ID, PorukaID, admInf ) ) {

        // Formiraj poruku
        KString cAppID = KVazeciID::Instance()->DajAppID();
        cAppID.rpad( 0, BROJ_BAJTOVA_ZA_PCAPP_ID );

        // Zakljucaj funkciju
        if ( ZakljucajFunkcijuUbrzano( ID, admInf, cAppID.cString ) )
            PorukaID = IDS_ZAKLJUCAVANJE_USPELO;
        else
            PorukaID = IDS_ZAKLJUCAVANJE_NIJE_USPELO;
    }

    UkloniPorukuIKursorZaCekanje();

    MyMessageBox( PorukaID );
}

// Lozinka za otkljucavanje date funkcije
void CRucniTerminalApp::IzmeniLozinkuZaFunkciju( EIDKomande ID, CWnd* pParentWnd, CString naslov )
{
    bool bPrikaziPoruku = true;

    // Najpre proveri da li je terminal spreman za narednu komandu
    int PorukaID;
    KAdminInfo admInf;
    if( TerminalSpremanZaLozinke( ID, PorukaID, admInf ) ) {
        bPrikaziPoruku = false;
        CLozinkaDlg lozinkaDlg;
        lozinkaDlg.PostaviParametre( ID, naslov );
        lozinkaDlg.DoModal();
    }

    if ( bPrikaziPoruku ) MyMessageBox( PorukaID );

}

// Otkljucavanje funkcije za programiranje vremena na rucnom terminalu
void CRucniTerminalApp::OtkljucajVreme( CWnd* pParentWnd )
{
    OtkljucajFunkciju( KT_OTKLJUCAVANJE_VREMENA, pParentWnd, NAZIV_DLG_ZA_LOZINKU_VREME );
}

// Zakljucavanje funkcije za programiranje vremena na rucnom terminalu
void CRucniTerminalApp::ZakljucajVreme( CWnd* pParentWnd )
{
    ZakljucajFunkciju( KT_ZAKLJUCAVANJE_VREMENA, pParentWnd );
}

// Lozinka za otkljucavanje funkcije za programiranje vremena na rucnom terminalu
void CRucniTerminalApp::IzmeniLozinkuZaVreme( CWnd* pParentWnd )
{
    IzmeniLozinkuZaFunkciju( KT_IZMENA_VREME_LOZINKE, pParentWnd, 
                             NAZIV_DLG_ZA_IZMENU_LOZINKE_VREME );
}

// Otkljucavanje funkcije za programiranje tarife na rucnom terminalu
void CRucniTerminalApp::OtkljucajTarifu( CWnd* pParentWnd )
{
    OtkljucajFunkciju( KT_OTKLJUCAVANJE_TARIFE, pParentWnd, NAZIV_DLG_ZA_LOZINKU_TARIFA );
}

// Zakljucavanje funkcije za programiranje tarife na rucnom terminalu
void CRucniTerminalApp::ZakljucajTarifu( CWnd* pParentWnd )
{
    ZakljucajFunkciju( KT_ZAKLJUCAVANJE_TARIFE, pParentWnd );
}

// Lozinka za otkljucavanje funkcije za programiranje tarife na rucnom terminalu
void CRucniTerminalApp::IzmeniLozinkuZaTarifu( CWnd* pParentWnd )
{
    IzmeniLozinkuZaFunkciju( KT_IZMENA_TARIF_LOZINKE, pParentWnd,
                             NAZIV_DLG_ZA_IZMENU_LOZINKE_TARIFA );
}

// Lozinka za otkljucavanje funkcije za reset maksimuma srednje snage na rucnom terminalu
void CRucniTerminalApp::OtkljucajResetMSS( CWnd* pParentWnd )
{
    OtkljucajFunkciju( KT_OTKLJUCAVANJE_RESETA_MSS, pParentWnd, NAZIV_DLG_ZA_LOZINKU_RESET_MSS );
}

// Lozinka za zakljucavanje funkcije za reset maksimuma srednje snage na rucnom terminalu
void CRucniTerminalApp::ZakljucajResetMSS( CWnd* pParentWnd )
{
    ZakljucajFunkciju( KT_ZAKLJUCAVANJE_RESETA_MSS, pParentWnd );
}

// Lozinka za otkljucavanje funkcije za programiranje reset maksimuma srednje snage
void CRucniTerminalApp::IzmeniLozinkuZaResetMSS( CWnd* pParentWnd )
{
    IzmeniLozinkuZaFunkciju( KT_IZMENA_RESET_MSS_LOZINKE, pParentWnd,
                             NAZIV_DLG_ZA_IZMENU_LOZINKE_RESET_MSS );
}
/////////////////// Funkcije za regulisanje dozvola pristupa <<END>> //////////////////

void CRucniTerminalApp::NeRadiNista( void )
{
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -