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
00001 00002 #include "mbed.h" 00003 #include <stdio.h> 00004 Serial pc(USBTX,USBRX); 00005 int valg=1; 00006 int i,b=0,passforsok=0; 00007 int antallbokstaver=0; 00008 char passord[30]="NULL"; // array som vi lagrer det valgte passord 00009 char pass[30]; // array som vi lagrer passordet vi tester mot valgte passord 00010 void flushSerialBuffer(void); 00011 int menyvalg,returnvalg,passriktig; 00012 Timer t; 00013 00014 int main() 00015 { 00016 while(1) { 00017 switch (valg) { //Vi har valgt å bruke switch cases fordi dette gjør det lettere 00018 //å gå fram og tilbake avhengig av riktig eller galt passord. 00019 00020 case 1: // i case 1 er meny valgene man får, man lagrer da valget i en variabel 00021 pc.printf("\n 1. Sett alarm paa."); // som man setter i en annen switch case. 00022 pc.printf("\n 2. Slaa av alarm. "); 00023 pc.printf("\n 3. Skifte passord. "); 00024 pc.printf("\n 4. Reset system "); 00025 pc.printf("\n 5. Status "); 00026 pc.printf("\n skriv inn ditt valg: "); 00027 pc.scanf("%d",&menyvalg); // menyvalg er det vi setter som valg i vår andre switch løkke til 00028 valg=2; 00029 00030 break; 00031 00032 case 2: 00033 while(1) { 00034 if(!strcmp(passord,"NULL")) { // her tester vi om vi har tidligere satt et valgfritt passord 00035 pc.printf("\n Skriv inn nytt passord: "); // hvis ikke, vil vi gå inn her og lage et nytt passord. 00036 //fflush(stdout); // dette gjør vi fordi hadde problemer med tera term og ville resette buffer. 00037 antallbokstaver=0; 00038 flushSerialBuffer(); // bruker denne void for å flushe buffer fordi enter er lagret i bufferen etter menyen. 00039 // og da gikk den inn i if passord=\r hver gang og breaket ut. 00040 while(1) { 00041 00042 if(pc.readable()) { 00043 passord[antallbokstaver]=pc.getc(); // I dette arrayet lagrer vi det valgte passordet. 00044 00045 if(passord[antallbokstaver]=='\r') { // \r betyr carrage return og når vi trykker enter vil denne være aktiv 00046 passord[antallbokstaver]='\0'; 00047 break; 00048 } 00049 antallbokstaver++; 00050 } 00051 } 00052 00053 } else { 00054 t.start(); 00055 b=0; 00056 printf("\n Skriv inn passord: "); 00057 flushSerialBuffer(); // bruker denne for å flushe input data fra tera term. Så vi 00058 while( t < 31 && passforsok<3) { // ikke direkte hopper inn i if setningen og breaker. 00059 00060 if(pc.readable()) { 00061 00062 pass[b]=pc.getc(); 00063 00064 if(pass[b]=='\r') { 00065 pc.printf("\n breaker ut fra pw"); 00066 valg=3; 00067 00068 pass[b]='\0'; 00069 b=0; 00070 break; 00071 00072 } 00073 b++; 00074 00075 } 00076 00077 } 00078 if(t>30) { 00079 pc.printf("\n brukte for lang tid, alarm gatt \n"); 00080 valg=1; // setter switch case tilbake til meny. 00081 passriktig=2; // dette returnerer vi for å signalisere at alarmen er gått. 00082 00083 } 00084 } 00085 break; 00086 } 00087 break; 00088 00089 case 3: //testing av passord 00090 pc.printf("\n testing av passord"); 00091 if( !strcmp(passord, pass)) { // tester to array mot hverandre for å sjekke om disse er lik. 00092 pass[0]='0'; 00093 valg=1; 00094 t.stop(); 00095 t.reset(); 00096 pc.printf("\n passord er riktig"); 00097 passriktig=1; 00098 passforsok=0; 00099 } else { 00100 pc.printf("\n passord er feil"); 00101 valg=2; 00102 passforsok++; 00103 if(passforsok>3) { 00104 casenummer=6; 00105 break; 00106 } 00107 break; 00108 } 00109 } 00110 00111 if(passriktig==1) { 00112 passriktig=0; 00113 menyvalg=casenummer; 00114 } 00115 } 00116 } 00117 00118 int tilstand() 00119 { 00120 switch (casenummer) { 00121 case 1: // alarm på 00122 void systempaa(int aktiv);/* Komplett funksjon for systempa, inkl, loggforing og varsling av krets. */ 00123 00124 00125 case 2: // alarm av 00126 void logg_system_av(float timer); 00127 case 3: // skifting av passord 00128 passord[30]="NULL"; 00129 00130 case 4: // reset 00131 void nullstilling(int servicebryter);/* Nullstiller hele systemet ved aktivering av servicebryter */ 00132 00133 case 5: 00134 void natid_status(void);/* Funksjon for å lese av nåværende status på valgt krets. */ 00135 case 6: // alarm gått 00136 void logg_feilpass(); 00137 void led_status(void); 00138 00139 } 00140 } 00141 void flushSerialBuffer(void) 00142 { 00143 while (pc.readable()) { 00144 (void) pc.getc(); 00145 } 00146 return; 00147 } 00148
Generated on Thu Jul 14 2022 05:31:55 by
1.7.2
