otakus

Untitled

Jul 7th, 2012
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. //This very ugly code by: Sanel smajlovic made for jimjiminyjimjim
  2. //No licence hope it helps you guys :D
  3.  
  4. #define MAX_DATA_LINES 4
  5. #define TEXT_BUFFER 256
  6.  
  7.  
  8. String smsArr[MAX_DATA_LINES];
  9. int smsArrIndex;
  10. char sbuff[TEXT_BUFFER];
  11. char inchar;
  12. int count;
  13. int smsIndex;
  14. boolean found=false;
  15.  
  16. int led = 13;
  17. int onModulePin = 2; // the pin to switch on the module (without press on button)
  18.  
  19. void switchModule(){
  20. digitalWrite(onModulePin,HIGH);
  21. delay(2000);
  22. digitalWrite(onModulePin,LOW);
  23. }
  24.  
  25. void setup(){
  26. Serial.begin(115200); // UART baud rate
  27. pinMode(led, OUTPUT);
  28. pinMode(onModulePin, OUTPUT);
  29. switchModule(); // switches the module ON
  30. Serial.println("SWITCHING ON");
  31.  
  32. for (int i=25;i>0;i--){
  33. Serial.println(i);
  34. delay(1000);
  35. }
  36.  
  37. Serial.println("AT+CMGF=1"); // sets the SMS mode to text
  38. delay(100);
  39. Serial.println("AT+CNMI=2,1,0,0,0"); // sets the SMS mode to text
  40. while(Serial.read()!='K');
  41. Serial.println("AT+CPMS=\"SM\",\"SM\",\"SM\""); //selects SIM memory
  42. while(Serial.read()!='K');
  43. Serial.println("DELETING...");
  44. Serial.println("AT+CMGD=,4");
  45. while(Serial.read()!='K');
  46. Serial.println("READY...");
  47. Serial.flush();
  48. }
  49.  
  50. void loop(){
  51. do{
  52. count=0;
  53. while(true){
  54. while(!Serial.available());
  55. inchar=Serial.read();
  56. if(inchar==10||inchar==13)
  57. break;
  58. sbuff[count]=inchar;
  59. count++;
  60. }
  61. sbuff[count]='\0';
  62. }while(!startsWith(sbuff,"+CMTI:"));
  63. char tmp[4];
  64. int offset=String(sbuff).indexOf(",")+1;
  65. tmp[0]=sbuff[offset];
  66. tmp[1]=sbuff[offset+1];
  67. tmp[2]=sbuff[offset+2];
  68. tmp[3]=sbuff[offset+3];
  69. smsIndex=atoi(tmp);
  70. readSMS();
  71.  
  72. }
  73.  
  74. boolean startsWith(String string, char key[]){
  75. return string.startsWith(key);
  76. }
  77.  
  78. boolean startsWith(char string[], char key[]){
  79. for(int i=0;i<sizeof(key);i++){
  80. if(string[i]!=key[i])
  81. return false;
  82. }
  83. return true;
  84. }
  85.  
  86. void readSMS(){
  87. //Serial.println("Reading sms");
  88. String s="AT+CMGR=";
  89. s=s+smsIndex;
  90. Serial.println(s);
  91. smsArrIndex=0;
  92. found=false;
  93. do{
  94. String tmp;
  95. do{
  96. count=0;
  97. while(true){
  98. while(!Serial.available());
  99. inchar=Serial.read();
  100. if(inchar==10||inchar==13)
  101. break;
  102. sbuff[count]=inchar;
  103. count++;
  104. }
  105. sbuff[count]='\0';
  106. tmp=String(sbuff);
  107. if(startsWith(tmp,"+CMGR:"))
  108. found=true;
  109. }while(!startsWith(tmp,"+CMGR:")&&!found);
  110.  
  111. smsArr[smsArrIndex]=String(sbuff);
  112. //Serial.print("PACKET Return ");
  113. //Serial.print(smsArrIndex);
  114. //Serial.print(" :");
  115. //Serial.println(smsArr[smsArrIndex]);
  116. smsArrIndex++;
  117. }while(!(startsWith(smsArr[smsArrIndex-1],"OK")||startsWith(smsArr[smsArrIndex-1],"ERROR"))&&smsArrIndex<MAX_DATA_LINES);
  118. smsArrIndex--;
  119.  
  120. if(startsWith(smsArr[0],"+CMGR:")){
  121. Serial.print("Number: ");
  122. int offset=smsArr[0].indexOf(",")+3;
  123. Serial.println(smsArr[0].substring(offset,offset+12));
  124. Serial.print("MSG: ");
  125. Serial.println(smsArr[1]);
  126. Serial.println(smsArr[2]);
  127. Serial.println(smsArr[3]);
  128.  
  129. }
  130.  
  131. //Serial.println("AT+CMGD=1");
  132. //Serial.println("----FINISH-----");
  133. }
Advertisement
Add Comment
Please, Sign In to add comment