joel george
Junior Member level 1
- Joined
- Aug 11, 2014
- Messages
- 15
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 114
This is more of an algo that i want to implement...i need help
1)shud i be concerned about the reply i get from the gsm modem?(like OK,ERROR...)
2)how shud i den implement it...?
1)shud i be concerned about the reply i get from the gsm modem?(like OK,ERROR...)
2)how shud i den implement it...?
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 #include <stdio.h> extern unsigned char cmgf[]="AT+CMGF=1"; extern unsigned char cmgs[]="AT+CMGS=\"9952082259\""; extern unsigned char msg1[]="WELCOME TO GSM\0"; extern unsigned char msg2[]="USER HAS CROSSED THE BOUNDARY\0"; extern unsigned char msg3[]="I’M IN DANGER\0"; extern unsigned char msg4[]="PULSE RATE HAS BEEN INCREASING DRASTICALLY\0"; extern unsigned char readall[]="AT+CMGR=\"REC UNREAD\"\r\n"; void main() { pinsel0 = 0x00000000; // Enable GPIO on all pins init_serial(); gsmperform(); } void gsmperform() { while(!(sendstring("AT\r\n"))); //wait till u receive OK delaygsm(); sendstring("AT+CNMI=2,1,0,0\r\n");//enable read new message delaygsm(); sendstring(cmgf); txu1(0x0d); // equivalent of txu1(0x0a); // enter key delaygsm(); sendstring(cmgs); txu1(0x0d); txu1(0x0a); delaygsm(); if(/* SOS key pressed*/) { sendstring(msg3); txu1(0x0d); txu1(0x0a); } if(/*output of pulse generator >reference*/) { sendstring(msg4); txu1(0x0d); txu1(0x0a); } if(/* latitude,longitude >reference) { sendstring(msg2); txu1(0x0d); txu1(0x0a); } } void init_serial (void) /* Initialize Serial Interface */ { PINSEL0 &= 0xFFFFFF0F; // Reset P0.2,P0.3 Pin Config PINSEL0 |= 0x00000010; // Select P0.2 = TxD(UART0) PINSEL0 |= 0x00000040; // Select P0.3 = RxD(UART0) PINSEL1|=0x00000000; PINSEL2|=0x00000000; U1LCR = 0x00000083; /* 8 bits, no Parity, 1 Stop bit */ U1DLL = 0x000000C2; /* 9600 Baud Rate @ 30MHz VPB Clock */ U0FDR = 0x67; // Fractional Divider U1LCR = 0x00000003; /* DLAB = 0 */ /* MORE HELP FRON UNCLE*/ VICIntSelect&=0xffffff7f; VICVectAddr2=(unsigned int)uart1_irq; VICIntEnable|=0x00000080; VICVectCntl0= 0x0000002F;/*select a priority slot 4a gvn interrupt*/ } void txuart1(unsigned char data) //Transmit a byte of data through UART1 { while(!(U1LSR & 0x20)); //Wait until UART1 ready to send character U1THR = data; delay(100); //waiting for the receiver to start working rxuart1(); } unsigned char my_arr[16];//for general purpose// unsigned char* rxuart1() { char* ptr = my_arr; while(1) { while((U1LSR&0x01)!=1); { *ptr++ = U1RBR; } if(*(--ptr) == 0x0A) break; } } int sendstring(unsigned char *p)//Sends a string of data through UART1 { while(1) { if(*p=='\0') break; txuart1(*p++); } if(my_arr==”OK”) return 1; return 0; } void delaygsm() //delay function { int i,j; for(i=0;i<60000;i++) for(j=0;j<51;j++); }
Last edited by a moderator: