nicklaus lek / Mbed 2 deprecated Alpha_copy

Dependencies:   TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "MODSERIAL.h"
00003 #include <stdio.h>
00004 #include <stdlib.h>
00005 #include <string.h>
00006 #include <iostream>
00007 #include "lib_crc.h"
00008 
00009 // Connect the TX of the GPS module to p10 RX input
00010 Serial Computer(USBTX, USBRX);
00011 MODSERIAL gsm(p13, p14);
00012 DigitalOut Led(LED1);
00013 DigitalOut Led1(LED2);
00014 MODSERIAL RS485(p28,p27);
00015 Serial LEDScreen(p9,p10);
00016 DigitalOut ho(p26);
00017 DigitalOut led(LED3);
00018 Ticker flipper;
00019 
00020 bool Pass = false;
00021 int count1 =0;
00022 int count2 =0;
00023 char buf[18];
00024 char Key[]="OK";
00025 char Hi;
00026 char * pch;
00027 char Ext1[10];
00028 char Ext2[10];
00029 char Ext3[10];
00030 int alert=0;
00031 int Status=0, Status1=0, Status2=0, Status3=0, Status4=0, Status5=0,Status6=0, Status7=0,NumberStat = 0;
00032 int Emer, Emer1, Emer2, Emer3;
00033 char Emergency[]= "1", Emergency1[]="2",Emergency2[]= "3",Emergency3[]= "4";
00034 char line= '\n';
00035 char c;
00036 char SMS1[] ="#Read Volt\r\n", SMS2[] ="#Read Current\r\n", SMS3[] ="#Read All\r\n", SMS4[] ="#Changenum\r\n", SMS5[] ="#Stop Log\r\n", SMS6[] ="#Hi\r\n", SMS7[] ="#Reset Emergerncy\r\n";
00037 char SMS[15];
00038 char Password[]= "1234";
00039 char buffer1[32];
00040 char str[9];
00041 char str2[9];
00042 char ctr= 0x1A;
00043 char buf1[40];
00044 char buf2[4];
00045 char buf3[256];
00046 char buf4[20];
00047 float FinalVoltage=0;
00048 bool newline_detected = false;
00049 char NumberMan[20];
00050 int PassChecker;
00051 int voltcount = 0;
00052 char modbusreply[9];
00053 char modbusreply1[16];
00054 char a[2];
00055 int b;
00056 int firsthex4;   //Modbus Hex4
00057 int firsthex5;   //MOdbus Hex5
00058 int Sechex4;     //Modbus Hex4
00059 int Sechex5;     //Modbus Hex5
00060 char hi= 0x48;
00061 int count = 0;
00062 //uint32_t EnergyGen;
00063 //uint32_t Energyused;
00064 int EnergyGen;
00065 int Energyused;
00066 char crc[10];
00067 char crc1;
00068 char buffer [10];
00069 bool Dam = false;
00070 
00071 
00072 
00073 
00074 
00075 //------------------------------------------------------------------------------------------------------------------
00076 
00077 void LEDSerialstart() {  //Starting code for LED Screen
00078     LEDScreen.putc(0x00);
00079     LEDScreen.putc(0xff);
00080     LEDScreen.putc(0xff);
00081     LEDScreen.putc(0x00);
00082     LEDScreen.putc(0x0b);
00083     LEDScreen.putc(0x00);
00084     LEDScreen.putc(0x01);
00085     LEDScreen.putc(0xff);
00086     LEDScreen.putc(0x01);
00087     LEDScreen.putc(0x01);
00088     LEDScreen.putc(0x03);
00089     LEDScreen.putc(0xef);
00090     LEDScreen.putc(0xb0);
00091     LEDScreen.putc(0xef);
00092     LEDScreen.putc(0xa2);
00093 }
00094 //------------------------------------------------------------------------------------------------------------------
00095 //------------------------------------------------------------------------------------------------------------------
00096 
00097 void New_Screen() {   //New Frame for LED screeen
00098     LEDScreen.putc(0xef);
00099     LEDScreen.putc(0xb1);
00100     LEDScreen.putc(0xef);
00101     LEDScreen.putc(0xa0);
00102     LEDScreen.putc(0xff);
00103     LEDScreen.putc(0xef);
00104     LEDScreen.putc(0xb0);
00105     LEDScreen.putc(0xef);
00106     LEDScreen.putc(0xa2);
00107 
00108 }
00109 //------------------------------------------------------------------------------------------------------------------
00110 //------------------------------------------------------------------------------------------------------------------
00111 
00112 void LEDSerial_end() {  //Ending code for LED screen
00113     LEDScreen.putc(0xff);
00114     LEDScreen.putc(0xff);
00115     LEDScreen.putc(0x00);
00116 }
00117 //------------------------------------------------------------------------------------------------------------------
00118 //------------------------------------------------------------------------------------------------------------------
00119 
00120 /*void MasterRequest1() {  //Request accumulative Kwh from Modbus 1
00121     ho= 1;
00122     wait(0.1);
00123     RS485.putc(0x01);
00124     RS485.putc(0x03);
00125     RS485.putc(0x00);
00126     RS485.putc(0x04);
00127     RS485.putc(0x00);
00128     RS485.putc(0x02);
00129     RS485.putc(0x85);
00130     RS485.putc(0xca);
00131     wait(0.009);
00132 }
00133 //------------------------------------------------------------------------------------------------------------------
00134 //------------------------------------------------------------------------------------------------------------------
00135 
00136 void SlaveReply1() {  //Reply from Modbus1
00137 
00138     ho= 0;
00139     wait(0.0025);
00140     while (RS485.readable()) {
00141         RS485.getc();
00142     }
00143     for (int count = 0; count!=6; count++) {
00144         b= RS485.getc();
00145          Computer.putc(c);
00146         modbusreply[count] = b;
00147     }
00148     RS485.getc();
00149     a[0]= RS485.getc();
00150     a[1]= RS485.getc();
00151     int nValue = a[0] + (a[1] << 8);   // combining 2 bytes into an int then convert to 2 byte hex
00152 
00153     if (calculate_crc16_Modbus(modbusreply, 7)== nValue) {
00154         firsthex4 = modbusreply[3];
00155         firsthex5 = modbusreply[4];
00156         EnergyGen =((firsthex4*256) + firsthex5);
00157         printf("Energy Generate: %d kWh\n\r",EnergyGen);
00158         
00159     }
00160 }*/
00161 
00162 //------------------------------------------------------------------------------------------------------------------
00163 //------------------------------------------------------------------------------------------------------------------
00164 
00165 void MasterRequest2() { //Request accumulative Kwh from Modbus 2     (ERROR)
00166     ho= 1;
00167     wait(0.1);
00168     RS485.putc(0x02);
00169     RS485.putc(0x03);
00170     RS485.putc(0x00);
00171     RS485.putc(0x0a);
00172     RS485.putc(0x00);
00173     RS485.putc(0x02);
00174     RS485.putc(0xe4);
00175     RS485.putc(0x3a);
00176     wait(0.009);
00177 }
00178 //------------------------------------------------------------------------------------------------------------------
00179 //------------------------------------------------------------------------------------------------------------------
00180 
00181 void SlaveReply2() {  //Reply from Modbus1             (ERROR)
00182 
00183     ho= 0;
00184    // wait(0.0025);
00185     wait(0.005);
00186          RS485.getc();
00187  
00188  do{
00189  b = RS485.getc();
00190 // Computer.putc(b);
00191  }while(b == 0x00);
00192    //  b = RS485.getc();
00193     Computer.putc(b);
00194    modbusreply1[0] = b;
00195    
00196     for (int count2 = 1; count2!=7; count2++) {
00197 
00198          // modbusreply1[count2] = b;
00199         b= RS485.getc();
00200          Computer.putc(b);
00201        modbusreply1[count2] = b;
00202     }
00203     RS485.getc();
00204   
00205     a[1]= RS485.getc();
00206     a[0]= RS485.getc();
00207     int nValue = a[0] + (a[1] << 8);   // combining 2 bytes into an int then convert to 2 byte hex
00208 
00209    // if (calculate_crc16_Modbus(modbusreply1, 7)== nValue) {
00210         Sechex4 = modbusreply1[3];
00211         Sechex5 = modbusreply1[4];
00212         Energyused =((Sechex4*256) + Sechex5);
00213    //     printf("Energy Used: %d kWh\n\r",Energyused);
00214    //      printf("E: %04X kWh\n\r",calculate_crc16_Modbus(modbusreply1, 7));
00215    //        printf("W: %04X kWh\n\r",nValue);
00216     //}
00217 }
00218 //------------------------------------------------------------------------------------------------------------------
00219 
00220 //------------------------------------------------------------------------------------------------------------------
00221 void GSM_GETCHAR() {  //Get character (e.g. Printf the Words from serial)
00222     do {
00223         c=gsm.getc();
00224         Computer.putc (c);
00225     } while (c != line);
00226 }
00227 //------------------------------------------------------------------------------------------------------------------
00228 
00229 //------------------------------------------------------------------------------------------------------------------
00230 void GSM_CLEAR_SMS() {    //Delete 1st SMS
00231     gsm.printf("AT+CMGD=0,1\r\n");
00232     wait(0.3);
00233     gsm.rxBufferFlush();
00234 
00235 
00236 }
00237 //------------------------------------------------------------------------------------------------------------------
00238 
00239 //------------------------------------------------------------------------------------------------------------------
00240 void GSM_GETCHAR1() {  //Get character (e.g. Printf the Words from serial)
00241     strcpy (str,&Hi);
00242     do {
00243         c=gsm.getc();
00244         Computer.putc (c);
00245         strcat (str,&c);
00246 
00247     } while (c != line);
00248     Computer.printf("%s\n\r",str);
00249 
00250 
00251 }
00252 //------------------------------------------------------------------------------------------------------------------
00253 void Checkit() { //Clear Extra character from GSM
00254 
00255     wait(1);
00256     while (gsm.readable()) {
00257         gsm.getc();
00258     }
00259 }
00260 
00261 //------------------------------------------------------------------------------------------------------------------
00262 void SMS_Alert() {    //Alert User abt error  (NOT COMPLETED.What type of error to trigger SMS)
00263     if (voltcount==10) {
00264         if (alert == 0) {
00265             gsm.rxBufferFlush();
00266             gsm.printf("AT+CMGS=%s\r\n",Emergency);        //Send SMS
00267             GSM_GETCHAR();
00268             gsm.printf("Alert: Voltage has been 0V for the pass 1 hour  %c",ctr);
00269             wait(0.3);
00270             gsm.printf("%c", ctr);
00271             alert = 1;
00272 
00273         }
00274     }
00275 }
00276 //------------------------------------------------------------------------------------------------------------------
00277 
00278 //------------------------------------------------------------------------------------------------------------------
00279 void Replyvolt() {  //Reply energy generated
00280     gsm.rxBufferFlush();
00281     gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00282     GSM_GETCHAR();
00283     gsm.printf("The Power is %s W  %c", buffer,ctr);
00284     wait(0.3);
00285     gsm.printf("%c", ctr);
00286 //    wait(1.5);
00287     gsm.rxBufferFlush();
00288 }
00289 //------------------------------------------------------------------------------------------------------------------
00290 
00291 
00292 //------------------------------------------------------------------------------------------------------------------
00293 void Replycurent() {  //Reply energy used
00294     gsm.rxBufferFlush();
00295     gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00296     GSM_GETCHAR();
00297     gsm.printf("The Current is %.2f V  %c",FinalVoltage,ctr);
00298     wait(0.3);
00299     gsm.printf("%c", ctr);
00300     //   wait(2.5);
00301     gsm.rxBufferFlush();
00302 
00303 }
00304 //------------------------------------------------------------------------------------------------------------------
00305 
00306 //------------------------------------------------------------------------------------------------------------------
00307 void Replyall() {  //Reply Energy gen and used
00308     gsm.rxBufferFlush();
00309     gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00310     GSM_GETCHAR();
00311     gsm.printf("Voltage: %.2f V, Current: %.2f A   %c", FinalVoltage, FinalVoltage,ctr);
00312     wait(0.3);
00313     gsm.printf("%c", ctr);
00314     wait(2.5);
00315     gsm.rxBufferFlush();
00316 }
00317 //------------------------------------------------------------------------------------------------------------------
00318 //------------------------------------------------------------------------------------------------------------------
00319 void Change_Number() {   //Change Emergency Number
00320     gsm.rxBufferFlush();
00321     gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00322     GSM_GETCHAR();
00323     gsm.printf("Plese sms back the following in order: Password, Current Number, New Number %c",ctr);
00324     wait(0.3);
00325     gsm.printf("%c", ctr);
00326     strcpy (NumberMan,buf4);
00327     wait(2.5);
00328     gsm.rxBufferFlush();
00329 
00330 
00331 }
00332 
00333 //------------------------------------------------------------------------------------------------------------------
00334 //------------------------------------------------------------------------------------------------------------------
00335 void CheckSMSMSG() {  //Check MSG receive from Sender
00336     Status1 = strcmp (SMS1,str);
00337     Status2 = strcmp (SMS2,str);
00338     Status3 = strcmp (SMS3,str);
00339     Status4 = strcmp (SMS4,str);
00340     Status5 = strcmp (SMS5,str);
00341     Status6 = strcmp (SMS6,str);
00342     Status7 = strcmp (SMS7,str);
00343 
00344     if (Status1 == 0) {
00345         Replyvolt();
00346         Checkit();
00347     }
00348     if (Status2 == 0) {
00349         Replycurent();
00350         Checkit();
00351     }
00352 
00353     if (Status3 == 0) {
00354         Replyall();
00355         Checkit();
00356     }
00357     if (Status4 == 0) {
00358         Change_Number();
00359         Checkit();
00360     }
00361     if (Status5 == 0) {
00362 
00363     }
00364     if (Status1!=0 && Status2!=0 &&Status3!=0 &&Status4!=0 &&Status5!=0) {
00365         Computer.printf("Random SMS\n\r");
00366     }
00367 }
00368 //------------------------------------------------------------------------------------------------------------------
00369 //------------------------------------------------------------------------------------------------------------------
00370 void CheckPassword() {  //Change Password Function
00371     PassChecker = strcmp (Password,Ext1);  //Check if Password is correct
00372     if (PassChecker != 0) {                //If password is incorrect. Reply Invalid Password
00373         gsm.rxBufferFlush();
00374         gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00375         GSM_GETCHAR();
00376         gsm.printf("Invalid Password %c",ctr);
00377         strcpy (NumberMan,&Hi);
00378         gsm.printf("%c", ctr);
00379         wait(2.5);
00380         gsm.rxBufferFlush();
00381         Checkit();
00382     } else {                        //Otherwise, Pass is true. ....go to funtion "Old_Number"
00383         Pass = true;
00384     }
00385     //   Checkit();
00386 
00387 }
00388 //------------------------------------------------------------------------------------------------------------------
00389 //------------------------------------------------------------------------------------------------------------------
00390 void Old_Number() {     //trigger if password is true
00391     if (Pass== true) {
00392         Emer = strcmp (Emergency,Ext2);  //Check if Number is emergency 1
00393         Emer1 = strcmp (Emergency1,Ext2); //Check if Number is emergency 2
00394         Emer2 = strcmp (Emergency2,Ext2);  //Check if Number is emergency 3
00395         Emer3 = strcmp (Emergency3,Ext2);   //Check if Number is emergency 4
00396         if (Emer == 0) {
00397             strcpy (Emergency,Ext3);
00398             gsm.rxBufferFlush();
00399             gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00400             GSM_GETCHAR();
00401             gsm.printf("Emergency Number \"%s\" is set %c",Emergency, ctr);
00402             strcpy (NumberMan,&Hi);
00403             gsm.printf("%c", ctr);
00404             wait(2.5);
00405             gsm.rxBufferFlush();
00406             Checkit();
00407         }
00408         if (Emer1 == 0) {
00409             strcpy (Emergency1,Ext3);
00410             gsm.rxBufferFlush();
00411             gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00412             GSM_GETCHAR();
00413             gsm.printf("Emergency Number \"%s\" is set %c",Emergency1, ctr);
00414             strcpy (NumberMan,&Hi);
00415             gsm.printf("%c", ctr);
00416             wait(2.5);
00417             gsm.rxBufferFlush();
00418             Checkit();
00419         }
00420         if (Emer2 == 0) {
00421             strcpy (Emergency2,Ext3);
00422             gsm.rxBufferFlush();
00423             gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00424             GSM_GETCHAR();
00425             gsm.printf("Emergency Number \"%s\" is set %c",Emergency2, ctr);
00426             strcpy (NumberMan,&Hi);
00427             gsm.printf("%c", ctr);
00428             wait(2.5);
00429             gsm.rxBufferFlush();
00430             Checkit();
00431         }
00432         if (Emer3 == 0) {
00433             strcpy (Emergency3,Ext3);
00434             gsm.rxBufferFlush();
00435             gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00436             GSM_GETCHAR();
00437             gsm.printf("Emergency Number \"%s\" is set %c",Emergency3, ctr);
00438             strcpy (NumberMan,&Hi);
00439             gsm.printf("%c", ctr);
00440             wait(2.5);
00441             gsm.rxBufferFlush();
00442             Checkit();
00443         }
00444         if (Emer != 0 && Emer1 != 0 && Emer2 != 0 && Emer3 != 0) {
00445             gsm.rxBufferFlush();
00446             gsm.printf("AT+CMGS=%s\r\n",buf4);        //Send SMS
00447             GSM_GETCHAR();
00448             gsm.printf("No such Number %c",Emergency3, ctr);
00449             strcpy (NumberMan,&Hi);
00450             gsm.printf("%c", ctr);
00451             wait(2.5);
00452             gsm.rxBufferFlush();
00453             Checkit();
00454         }
00455     }
00456 
00457 
00458 }
00459 
00460 
00461 //------------------------------------------------------------------------------------------------------------------
00462 //------------------------------------------------------------------------------------------------------------------
00463 void Check_Number() {
00464     pch = strtok (str," ,.-");
00465     strcpy (Ext1,pch);
00466     pch = strtok (NULL, " ,.-");
00467     strcpy (Ext2,pch);
00468     pch = strtok (NULL, " ,.-");
00469     strcpy (Ext3,pch);
00470 }
00471 //------------------------------------------------------------------------------------------------------------------
00472 //------------------------------------------------------------------------------------------------------------------
00473 void ExtractNum() { //Extract the number from the sender's sms
00474     pch = strtok (buf3," ,.-");
00475     pch = strtok (NULL, " ,.-");
00476     //pc.printf ("pch is %s\n\r",pch);    //See Number extracted
00477     strcpy (buf4,pch);
00478     Computer.printf("%s\n\r", buf4);                //Number extracted in "+6512345678"
00479 }
00480 //------------------------------------------------------------------------------------------------------------------
00481 
00482 
00483 //------------------------------------------------------------------------------------------------------------------
00484 void Sending() {
00485     if (Status==36) {
00486         time_t seconds = time(NULL);
00487         gsm.scanf("%s",buf2);
00488         gsm.scanf("%s",buf3);                     //Scan ["READ","+6512345678",,"12/01/18,23:54:25+32"]
00489         ExtractNum();                             //to extract number
00490 
00491         Computer.printf("The Message is:\n\r");
00492         GSM_GETCHAR();
00493 
00494         GSM_GETCHAR1();                           //Extract sms(e.g.SMSing "#ReadVolt" will give u voltage reading)
00495         GSM_GETCHAR();
00496 
00497         GSM_CLEAR_SMS();                         //Delete 1st Message
00498         gsm.rxBufferFlush();
00499 
00500         gsm.rxBufferFlush();
00501     }
00502 }
00503 //------------------------------------------------------------------------------------------------------------------
00504 
00505 //------------------------------------------------------------------------------------------------------------------
00506 
00507 void GSM_CHECK_MSG() { //Check if msg is OK,Error.
00508     Status = strcmp (Key,buf1);
00509 //pc.printf("%d\n\r", Status);            //See the error Number
00510 }
00511 //------------------------------------------------------------------------------------------------------------------
00512 
00513 
00514 //------------------------------------------------------------------------------------------------------------------
00515 void ReceiveMessage() {
00516     gsm.rxBufferFlush();
00517     gsm.printf("AT+CMGR=\"1\"\n\r");      //Read Message.
00518     gsm.scanf("%s",buf);
00519     gsm.scanf("%s",buf1);
00520 
00521     GSM_CHECK_MSG();                        //Check For reply. If Ok, no sms. if error, no sms.
00522 }
00523 //------------------------------------------------------------------------------------------------------------------
00524 
00525 //------------------------------------------------------------------------------------------------------------------
00526 void rxCallback(MODSERIAL_IRQ_INFO *q) {   //Interrupt trigger
00527     MODSERIAL *serial = q->serial;
00528 
00529     if ( serial->rxGetLastChar() == '\n') {
00530         newline_detected = true;
00531         Led1= 1;
00532     }
00533 }
00534 //------------------------------------------------------------------------------------------------------------------
00535 
00536 //------------------------------------------------------------------------------------------------------------------
00537 
00538 void TimeMessage1() {       //Get character (e.g. Printf the Words from serial)
00539     strcpy (str,&Hi);
00540     do {
00541         c=Computer.getc();
00542         Computer.putc (c);
00543         strcpy (str2,&c);
00544         //   printf("The %s.", str2);
00545         strcat (str,&c);
00546     } while (c != ' ');
00547 }
00548 
00549 //------------------------------------------------------------------------------------------------------------------
00550 void GSM_STARTUP() {
00551 
00552     gsm.baud(9600);
00553     Computer.baud(9600);
00554     gsm.format(8, Serial::None, 1);
00555 
00556     gsm.rxBufferFlush();
00557     Computer.printf("\n\rSetting Up GSM\n\r");
00558     Computer.printf("---------------\n\r\n\r");
00559     gsm.printf("AT+CMGF=\"1\"\r\n");
00560     gsm.scanf("%s",buf);
00561     //pc.printf("buf1 is: %s\r\n",buf);
00562     gsm.scanf("%s",buf3);      //scanf OK
00563     Computer.printf("%s\r\n",buf3);
00564     gsm.rxBufferFlush();
00565     GSM_CLEAR_SMS();
00566     Computer.printf("...GSM Setup Done\n\r\n\r\n\r");
00567     gsm.rxBufferFlush();
00568 }
00569 //------------------------------------------------------------------------------------------------------------------
00570 
00571 //------------------------------------------------------------------------------------------------------------------
00572 
00573 void Mainly() {  //Getting Data and putting on LED Screen
00574     Computer.baud(9600);
00575 //    MasterRequest1();
00576  //   SlaveReply1();
00577     wait(5);
00578   MasterRequest2();
00579     SlaveReply2();
00580     count = 0;
00581      count1= 0;
00582     sprintf (buffer, "%d",EnergyGen);
00583     sprintf (buffer1, "%d",Energyused);
00584     wait(1);
00585     Computer.baud(2400);
00586     wait(1);
00587     LEDSerialstart();
00588     LEDScreen.printf("Energy Generated: %s Kwh",buffer);
00589     New_Screen();
00590     LEDScreen.printf("Energy Used: %s Kwh",buffer1);
00591     LEDSerial_end();
00592     wait(0.5);
00593     Computer.baud(9600);
00594     wait(1);
00595 
00596 }
00597 //------------------------------------------------------------------------------------------------------------------
00598 //------------------------------------------------------------------------------------------------------------------
00599 
00600 void Trigger() { // trigger  for gathering data
00601     Dam = true;
00602 }
00603 //------------------------------------------------------------------------------------------------------------------
00604 
00605 //------------------------------------------------------------------------------------------------------------------
00606 
00607 
00608 int main() {
00609     GSM_STARTUP();
00610     gsm.attach(&rxCallback, MODSERIAL::RxIrq);
00611     RS485.baud(9600);
00612     LEDScreen.baud(2400);
00613     flipper.attach(&Trigger, 10.0);
00614 
00615 
00616     // Wait here until we detect the \n going into the buffer.
00617     while (! newline_detected ) {
00618 
00619         Led = !Led;
00620         wait(1);
00621 
00622 
00623         if (Dam == true) {
00624             Mainly();
00625             Dam =false;
00626         }
00627 
00628         if (newline_detected == true)   {
00629             printf("%d\n\r",count1);
00630             ReceiveMessage();
00631             Sending();
00632             NumberStat = strcmp (NumberMan,buf4);
00633 
00634             switch (NumberStat) {
00635 
00636                 case 0:
00637                     Check_Number();
00638                     CheckPassword();
00639                     Old_Number();
00640                     strcpy (NumberMan,&Hi);
00641                     Pass = false;
00642                     Computer.printf("Hi\n\r");
00643                     newline_detected = false;
00644                     Led1= 0;
00645                     break;
00646 
00647                 default:
00648                     CheckSMSMSG();
00649                     gsm.rxBufferFlush();
00650                     Computer.printf("the buffer %d",gsm.rxBufferGetCount());
00651                     newline_detected = false;
00652                     strcpy (buf4,&Hi);
00653                     Led1= 0;
00654 
00655             }
00656 
00657         }
00658 
00659     }
00660 
00661 
00662 }