Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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;
}
