Fredrik Bjørken
/
Alarmsystem-FINAL1
ok
Fork of Alarmsystem-FINAL1 by
main.cpp
- Committer:
- Bjorken
- Date:
- 2016-02-25
- Revision:
- 2:557f07ece834
- Parent:
- 0:c9f607286335
File content as of revision 2:557f07ece834:
#include "mbed.h" #include <stdio.h> Serial pc(USBTX,USBRX); int valg=1; int i,b=0,passforsok=0; int antallbokstaver=0; char passord[30]="NULL"; // array som vi lagrer det valgte passord char pass[30]; // array som vi lagrer passordet vi tester mot valgte passord void flushSerialBuffer(void); int menyvalg,returnvalg,passriktig; Timer t; int main() { while(1) { switch (valg) { //Vi har valgt å bruke switch cases fordi dette gjør det lettere //å gå fram og tilbake avhengig av riktig eller galt passord. case 1: // i case 1 er meny valgene man får, man lagrer da valget i en variabel pc.printf("\n 1. Sett alarm paa."); // som man setter i en annen switch case. pc.printf("\n 2. Slaa av alarm. "); pc.printf("\n 3. Skifte passord. "); pc.printf("\n 4. Reset system "); pc.printf("\n 5. Status "); pc.printf("\n skriv inn ditt valg: "); pc.scanf("%d",&menyvalg); // menyvalg er det vi setter som valg i vår andre switch løkke til valg=2; break; case 2: while(1) { if(!strcmp(passord,"NULL")) { // her tester vi om vi har tidligere satt et valgfritt passord pc.printf("\n Skriv inn nytt passord: "); // hvis ikke, vil vi gå inn her og lage et nytt passord. //fflush(stdout); // dette gjør vi fordi hadde problemer med tera term og ville resette buffer. antallbokstaver=0; flushSerialBuffer(); // bruker denne void for å flushe buffer fordi enter er lagret i bufferen etter menyen. // og da gikk den inn i if passord=\r hver gang og breaket ut. while(1) { if(pc.readable()) { passord[antallbokstaver]=pc.getc(); // I dette arrayet lagrer vi det valgte passordet. if(passord[antallbokstaver]=='\r') { // \r betyr carrage return og når vi trykker enter vil denne være aktiv passord[antallbokstaver]='\0'; break; } antallbokstaver++; } } } else { t.start(); b=0; printf("\n Skriv inn passord: "); flushSerialBuffer(); // bruker denne for å flushe input data fra tera term. Så vi while( t < 31 && passforsok<3) { // ikke direkte hopper inn i if setningen og breaker. if(pc.readable()) { pass[b]=pc.getc(); if(pass[b]=='\r') { pc.printf("\n breaker ut fra pw"); valg=3; pass[b]='\0'; b=0; break; } b++; } } if(t>30) { pc.printf("\n brukte for lang tid, alarm gatt \n"); valg=1; // setter switch case tilbake til meny. passriktig=2; // dette returnerer vi for å signalisere at alarmen er gått. } } break; } break; case 3: //testing av passord pc.printf("\n testing av passord"); if( !strcmp(passord, pass)) { // tester to array mot hverandre for å sjekke om disse er lik. pass[0]='0'; valg=1; t.stop(); t.reset(); pc.printf("\n passord er riktig"); passriktig=1; passforsok=0; } else { pc.printf("\n passord er feil"); valg=2; passforsok++; if(passforsok>3) { casenummer=6; break; } break; } } if(passriktig==1) { passriktig=0; menyvalg=casenummer; } } } int tilstand() { switch (casenummer) { case 1: // alarm på void systempaa(int aktiv);/* Komplett funksjon for systempa, inkl, loggforing og varsling av krets. */ case 2: // alarm av void logg_system_av(float timer); case 3: // skifting av passord passord[30]="NULL"; case 4: // reset void nullstilling(int servicebryter);/* Nullstiller hele systemet ved aktivering av servicebryter */ case 5: void natid_status(void);/* Funksjon for å lese av nåværende status på valgt krets. */ case 6: // alarm gått void logg_feilpass(); void led_status(void); } } void flushSerialBuffer(void) { while (pc.readable()) { (void) pc.getc(); } return; }