📄 admindlg.cpp
字号:
// AdminDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RucniTerminal.h"
#include "AdminDlg.h"
#include "Konfig.h"
#include "Komunikator.h"
#include "DozvolePristupaDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAdminDlg dialog
CAdminDlg::CAdminDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAdminDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAdminDlg)
m_SerijskiBrojTerminala = 0;
m_FlegPotrosnja = FALSE;
m_FlegVreme = FALSE;
m_FlegTarifa = FALSE;
m_FlegTabela1 = FALSE;
m_FlegMaxSS = FALSE;
m_FlegPotrosnjaPrethMesec = FALSE;
m_FlegNapomena = FALSE;
m_Verzija = _T("");
m_FlegMaxUI = FALSE;
m_FlegStatus = FALSE;
//}}AFX_DATA_INIT
}
void CAdminDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAdminDlg)
DDX_Text(pDX, IDC_SERIJSKI_BROJ, m_SerijskiBrojTerminala);
DDV_MinMaxInt(pDX, m_SerijskiBrojTerminala, 0, 99999999);
DDX_Check(pDX, IDC_FLEG_POTROSNJA, m_FlegPotrosnja);
DDX_Check(pDX, IDC_FLEG_VREME, m_FlegVreme);
DDX_Check(pDX, IDC_FLEG_TARIFA, m_FlegTarifa);
DDX_Check(pDX, IDC_FLEG_TABELA_1, m_FlegTabela1);
DDX_Check(pDX, IDC_FLEG_MAX_SS, m_FlegMaxSS);
DDX_Check(pDX, IDC_FLEG_POTR_PRETH_MESEC, m_FlegPotrosnjaPrethMesec);
DDX_Check(pDX, IDC_FLEG_NAPOMENA, m_FlegNapomena);
DDX_Text(pDX, IDC_VERZIJA, m_Verzija);
DDX_Check(pDX, IDC_FLEG_MAX_UI, m_FlegMaxUI);
DDX_Check(pDX, IDC_FLEG_STATUS, m_FlegStatus);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAdminDlg, CDialog)
//{{AFX_MSG_MAP(CAdminDlg)
ON_BN_CLICKED(IDC_SNIMI_SERIJSKI, OnSnimiSerijski)
ON_BN_CLICKED(IDC_PREUZMI_ADMIN_INFO, OnPreuzmiAdminInfo)
ON_BN_CLICKED(IDC_SNIMI_FLEGOVE, OnSnimiFlegove)
ON_BN_CLICKED(IDC_DOZVOLE_PRISTUPA, OnDozvolePristupa)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAdminDlg message handlers
BOOL CAdminDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Preuzmi 'admin info' sa terminala
KAdminInfo admInf;
KKomunikator::Instance()->DajAdminInfoTerminala( admInf, false );
// Inicijalizuj opis verzije rucnog terminala
PostaviVerziju( admInf.nVerzija, admInf.nPodverzija, admInf.KapacitetEEPROMa() );
// Inicijalizuj sadrzaj polja sa serijskim brojem
m_SerijskiBrojTerminala = admInf.nSerijskiBrojTerminala;
// Inicijalizuj flegove
PostaviFlegPromenljive( admInf.nKontrolniFlegovi );
// Osvezi polja forme ( usaglasi sa vrednostima odgovarajucih promenljivih )
CAdminDlg::UpdateData( FALSE );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAdminDlg::OnSnimiSerijski()
{
CRucniTerminalApp* pRTApp = ( CRucniTerminalApp* ) AfxGetApp();
pRTApp->PrikaziPorukuIKursorZaCekanje( IDS_SNIMANJE_PODATAKA, this );
// Najpre proveri da li je terminal spreman za narednu komandu
int PorukaID;
KAdminInfo admInf;
if( pRTApp->TerminalSpreman( PorukaID, admInf ) ) {
// Preuzmi podatke iz forme u odgovarajuce promenljive
this->UpdateData();
// Formiraj poruku sa serijskim brojem :
string cSadrzajPoruke = KKorisno::Instance()->KonvertIntUBCD( m_SerijskiBrojTerminala, 4 ).cString;
PorukaID = IDS_SNIMANJE_NEUSPELO;
// Snimi serijski broj na terminal
if ( KKomunikator::Instance()->SnimiNaTerminal( KT_POSTAVI_SERIJSKI_BROJ, cSadrzajPoruke ) ) {
// Procitaj podatke ( proveri da li je dobro snimljeno )
KAdminInfo admInf;
if ( KKomunikator::Instance()->DajAdminInfoTerminala( admInf, true ) ) {
if ( admInf.nSerijskiBrojTerminala == m_SerijskiBrojTerminala )
PorukaID = IDS_SNIMANJE_USPELO;
}
}
}
pRTApp->UkloniPorukuIKursorZaCekanje();
pRTApp->MyMessageBox( PorukaID );
}
void CAdminDlg::OnPreuzmiAdminInfo()
{
bool bUspeo = false;
CRucniTerminalApp* pRTApp = ( CRucniTerminalApp* ) AfxGetApp();
pRTApp->PrikaziPorukuIKursorZaCekanje( IDS_PREUZIMANJE_PODATAKA, this );
// Preuzmi 'admin info' sa terminala
KAdminInfo admInf;
if ( KKomunikator::Instance()->DajAdminInfoTerminala( admInf, true ) ) {
// Inicijalizuj opis verzije rucnog terminala
PostaviVerziju( admInf.nVerzija, admInf.nPodverzija, admInf.KapacitetEEPROMa() );
// Inicijalizuj sadrzaj polja sa serijskim brojem
m_SerijskiBrojTerminala = admInf.nSerijskiBrojTerminala;
// Inicijalizuj flegove
PostaviFlegPromenljive( admInf.nKontrolniFlegovi );
// Osvezi polja forme ( usaglasi sa vrednostima odgovarajucih promenljivih )
CAdminDlg::UpdateData( FALSE );
bUspeo = true;
}
pRTApp->UkloniPorukuIKursorZaCekanje();
if ( bUspeo ){
pRTApp->MyMessageBox( IDS_PREUZIMANJE_USPELO );
}
else
pRTApp->MyMessageBox( IDS_PREUZIMANJE_NEUSPELO );
}
// Pomocna procedura : postavlja promenljive forme vezane za flegove ( checkboxove )
void CAdminDlg::PostaviFlegPromenljive( unsigned int nFlegovi ){
// Inicijalizuj flegove
if ( nFlegovi & KF_POTROSNJA ) m_FlegPotrosnja= TRUE;
else m_FlegPotrosnja= FALSE;
if ( nFlegovi & KF_VREME ) m_FlegVreme = TRUE;
else m_FlegVreme = FALSE;
if ( nFlegovi & KF_TARIFA ) m_FlegTarifa = TRUE;
else m_FlegTarifa = FALSE;
if ( nFlegovi & KF_TABELA_1 ) m_FlegTabela1 = TRUE;
else m_FlegTabela1 = FALSE;
if ( nFlegovi & KF_MAX_SS ) m_FlegMaxSS = TRUE;
else m_FlegMaxSS = FALSE;
if ( nFlegovi & KF_POTR_PRETH_MESEC ) m_FlegPotrosnjaPrethMesec = TRUE;
else m_FlegPotrosnjaPrethMesec = FALSE;
if ( nFlegovi & KF_NAPOMENA ) m_FlegNapomena = TRUE;
else m_FlegNapomena = FALSE;
if ( nFlegovi & KF_STATUS ) m_FlegStatus = TRUE;
else m_FlegStatus = FALSE;
if ( nFlegovi & KF_MAX_UI ) m_FlegMaxUI = TRUE;
else m_FlegMaxUI = FALSE;
}
// Pomocna procedura : promenljive forme koje predstavljaju flegove konvertuje u jednu celobrojnu promenljivu
unsigned int CAdminDlg::SpojiFlegPromenljive( void ) {
unsigned int nKontrolniFlegovi = 0;
if ( m_FlegPotrosnja ) nKontrolniFlegovi |= KF_POTROSNJA;
if ( m_FlegVreme ) nKontrolniFlegovi |= KF_VREME;
if ( m_FlegTarifa ) nKontrolniFlegovi |= KF_TARIFA;
if ( m_FlegTabela1 ) nKontrolniFlegovi |= KF_TABELA_1;
if ( m_FlegMaxSS ) nKontrolniFlegovi |= KF_MAX_SS;
if ( m_FlegPotrosnjaPrethMesec ) nKontrolniFlegovi |= KF_POTR_PRETH_MESEC;
if ( m_FlegNapomena ) nKontrolniFlegovi |= KF_NAPOMENA;
if ( m_FlegStatus ) nKontrolniFlegovi |= KF_STATUS;
if ( m_FlegMaxUI ) nKontrolniFlegovi |= KF_MAX_UI;
return nKontrolniFlegovi;
}
// Pomocna procedura : postavlja promenljive forme za prikaz verzije rucnog terminala
void CAdminDlg::PostaviVerziju( unsigned char nVerzija, unsigned char nPodverzija,
unsigned int nKapacitetEEPROMa ){
string cPom;
// Iscrtaj verziju firmwera rucnog terminala
cPom = "firmw: "
+ KKorisno::Instance()->KonvertIntUString( nVerzija, 1000, false )
+ "."
+ KKorisno::Instance()->KonvertIntUString( nPodverzija, 1000, false )
+ " mem: "
+ KKorisno::Instance()->KonvertIntUString( nKapacitetEEPROMa, 1000, false )
+ " KB";
m_Verzija = _T( cPom.data() );
}
void CAdminDlg::OnSnimiFlegove()
{
CRucniTerminalApp* pRTApp = ( CRucniTerminalApp* ) AfxGetApp();
pRTApp->PrikaziPorukuIKursorZaCekanje( IDS_SNIMANJE_PODATAKA, this );
// Najpre proveri da li je terminal spreman za narednu komandu
int PorukaID;
KAdminInfo admInf;
if( pRTApp->TerminalSpreman( PorukaID, admInf ) ) {
// Preuzmi podatke iz forme u odgovarajuce promenljive
this->UpdateData();
// Spoji sve flegove u jedan podatak
unsigned int nKontrolniFlegovi = SpojiFlegPromenljive();
// Formiraj poruku sa flegovima :
string cSadrzajPoruke = KKorisno::Instance()->KonvertIntUNiblString( nKontrolniFlegovi, 2 ).cString;
PorukaID = IDS_SNIMANJE_NEUSPELO;
// Snimi flegove na terminal
if ( KKomunikator::Instance()->SnimiNaTerminal( KT_POSTAVI_KONTROLNE_FLEGOVE, cSadrzajPoruke ) ) {
// Procitaj podatke ( proveri da li je dobro snimljeno )
KAdminInfo admInf;
if ( KKomunikator::Instance()->DajAdminInfoTerminala( admInf, true ) ) {
if ( nKontrolniFlegovi == admInf.nKontrolniFlegovi )
PorukaID = IDS_SNIMANJE_USPELO;
}
}
}
pRTApp->UkloniPorukuIKursorZaCekanje();
pRTApp->MyMessageBox( PorukaID );
}
void CAdminDlg::OnDozvolePristupa()
{
CDozvolePristupaDlg dozvoleDlg;
dozvoleDlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -