Extras din proiect
Cerintele problemei
Sa se implementeze un system de monitorizare a combustibilului din rezervoarele unui avion. In cazul in care se detecteaza o diferenta intre cantitatea continuta, sa se avertizeze pilotul prin aprinderea unui led pe consola de comanda a avionului si sa se porneasca un sistem de redresare automat care sa echilibreze avionul. Atunci cand pericolul este indepartat, sistemul se opreste, impreuna si cu ledul de avertizare.
Descrierea modului de implementare
Programul este bazat pe un sistem de timere, trei mai precis, unul face achizitia evenimentelor de pe placa 3780 (verifica activitatea switchurilor la 300ms), un al doilea care executa in mod constant, la interval de 1s si scade cantitatea de combustibil din rezervoare, si un al 3-lea care porneste doar in cazul in care este pusa in stare true variabila „problem” care inseamna ca s-a gasit o discrepanta in cantitatea de combustibil din rezervoare, si trebuie pornit sistemul de echilibrare. Acest ultim timer scade combustibil din celelalte rezervoare si adauga aceasta cantitate in rezervorul „problema”.
Diagrama Workflow
Functii principale si functionalitatea lor
Arhitectura de baza a programului este un proiect standard MFC dialog-based, deci vom avea doua clase de baza, „Cproiectsctr” si „CproiectsctrDlg”, pe langa care vom avea o a treia clasa, CprogressBar, clasa adaugata automat de Visual Studio pentru a genera handlerele componentelor ProgressBar V6.00
Sistemul de timere este instantiat in functia OnInitDialog() :
BOOL CProiectsctrDlg::OnInitDialog(){
CDialog::OnInitDialog();
//load the status bitmaps
grn.LoadBitmap(IDB_BITMAP1);
red.LoadBitmap(IDB_BITMAP2);
//advantech var sets:
read_operation_PCM3718 = FALSE;
read_operation_PCM3780 = evet_count_flag = TRUE;
lDevNum1 = 0; lDevNum2 = 2;
//arm the cards:
OpenAndConfigureBoards();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
srand(static_cast<unsigned>(time(NULL)));
for (int i=0; i<4; i++) tanks[i] = 29250;
totalDrainSpeed = 12;
drainSpeed = totalDrainSpeed/4;
problem = false;
//fill up dialog components with data
m_tank1.SetValue(tanks[0]);
m_tank1val.Format("%.0f",tanks[0]);
m_tank2.SetValue(tanks[0]);
m_tank2val.Format("%.0f",tanks[1]);
m_tank3.SetValue(tanks[0]);
m_tank3val.Format("%.0f",tanks[2]);
m_tank4.SetValue(tanks[0]);
m_tank4val.Format("%.0f",tanks[3]);
//get 3780 ready to monitor for events
ReadEventOnDI();
SetTimer(IDT_TANKS, 1000, NULL);
SetTimer(IDT_MONITOR, 500, NULL);
SetTimer(IDT_SWITCH, 300, NULL);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control}
Preview document
Conținut arhivă zip
- Debug
- progressbar.obj
- proiect sctr.exe
- proiect sctr.ilk
- proiect sctr.obj
- proiect sctr.pch
- proiect sctr.pdb
- proiect sctr.res
- proiect sctrDlg.obj
- StdAfx.obj
- vc60.idb
- vc60.pdb
- Include
- 839p.h
- COMM.H
- DEVICE.H
- DNET.H
- Driver.h
- EVENT.H
- OS.H
- PARAS.H
- USBErrorCode.h
- Lib
- Ads839p.lib
- Ads841.lib
- Adsapi32.lib
- adsapi32bcb.lib
- ADSCOMM.LIB
- ADSDEV.LIB
- adsdnet.lib
- res
- green.bmp
- proiect sctr.ico
- proiect sctr.rc2
- red.bmp
- progressbar.cpp
- progressbar.h
- proiect sctr.aps
- proiect sctr.clw
- proiect sctr.cpp
- proiect sctr.dsp
- proiect sctr.dsw
- proiect sctr.h
- proiect sctr.ncb
- proiect sctr.opt
- proiect sctr.plg
- proiect sctr.rc
- proiect sctrDlg.cpp
- proiect sctrDlg.h
- ReadMe.txt
- resource.h
- Sistem de Monitorizare a Combustibilului din Rezervoarele unui Avion.docx
- StdAfx.cpp
- StdAfx.h