📄 rucniterminal.cpp
字号:
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 + -