Created
January 20, 2020 08:24
-
-
Save Sisoog/4824924b4a3acae91ed33cba45f92ff5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <SoftwareSerial.h> | |
#define DEBUG true | |
SoftwareSerial mySerial(10,11 );// RX, TX | |
String data[5]; | |
String state,timegps,latitude,longitude; | |
String Operator,Balance; | |
String Phone = "0912xxxxxxx"; | |
String sendData (String command , const int timeout ,boolean debug) | |
{ | |
String response = ""; | |
mySerial.println(command); | |
long int time = millis(); | |
int i = 0; | |
while ( (time+timeout ) > millis()) | |
{ | |
while (mySerial.available()) | |
{ | |
char c = mySerial.read(); | |
response +=c; | |
} | |
} | |
if (debug) | |
{ | |
Serial.print(response); | |
} | |
return response; | |
} | |
String word_filter(String str,String start,String end) | |
{ | |
int Word1 = str.indexOf(start); | |
int Word2 = str.lastIndexOf(end); | |
return str.substring(Word1 , Word2); | |
} | |
String GetOperator() | |
{ | |
delay(50); | |
mySerial.println("AT+COPS?"); | |
mySerial.setTimeout(100) ; | |
String input = mySerial.readString(); | |
mySerial.setTimeout(10) ; | |
input = word_filter(input,"\"","\""); | |
input.trim(); | |
delay(10); | |
if(input=="43235") | |
{ | |
return "Irancell"; | |
} | |
else | |
{ | |
return "Not Recognized"; | |
} | |
} | |
void Operator_Setting(String Operator) | |
{ | |
String oprator = GetOperator(); | |
if(oprator == "Irancell"){ | |
mySerial.println("AT+CUSD=1,\"*555*4*3*2#\""); | |
} | |
delay(3000); | |
mySerial.println("AT+CUSD=2"); | |
} | |
void GSM_Initilaize() | |
{ | |
boolean gsm_Init = 1; | |
while (gsm_Init > 0) { | |
mySerial.println("AT"); | |
while (mySerial.available()) { | |
if (mySerial.find("OK") > 0) | |
gsm_Init = 0; | |
} | |
delay(100); | |
} | |
boolean Ready = 1; | |
while (Ready > 0) { | |
mySerial.println("AT+CPIN?"); | |
while (mySerial.available()) { | |
if (mySerial.find("+CPIN: READY") > 0) | |
Ready = 0; | |
} | |
delay(1000); | |
} | |
mySerial.write("AT+CMGF=1\r\n"); | |
delay(1000); | |
} | |
String GetBalance(String _Operator) | |
{ | |
if(_Operator=="Irancell") | |
{ | |
mySerial.println("AT+CUSD=1,\"*141*1#\""); | |
mySerial.setTimeout(6000); | |
String Balance_Read = mySerial.readString(); | |
delay(100); | |
String firsword = "Credit"; | |
String lastword = "WOW"; | |
int Word1 = Balance_Read.indexOf(firsword) + firsword.length() ; | |
int Word2 = Balance_Read.lastIndexOf(lastword); | |
if(Word1 ==-1 or Word2==-1) | |
{ | |
return "0" ; | |
} | |
else | |
{ | |
Balance_Read = Balance_Read.substring(Word1 , Word2); | |
} | |
delay(100); | |
Balance_Read.replace("Rial", ""); | |
Balance_Read.replace(".", ""); | |
Balance_Read.replace("IRR", ""); | |
Balance_Read.trim(); | |
return Balance_Read; | |
} | |
} | |
int Send_Message(String phone , String text) | |
{ | |
mySerial.print("AT+CMGF=1"); | |
delay(1000); | |
mySerial.print("AT+CMGS="); | |
mySerial.print("\"") ; | |
mySerial.print(phone); | |
mySerial.print("\"") ; | |
mySerial.print("\r\n"); | |
delay(100); | |
mySerial.print(text); | |
delay(100); | |
mySerial.print(char(26)); | |
delay(100); | |
return 1; | |
} | |
void setup() | |
{ | |
Serial.begin(9600); | |
mySerial.begin(9600); | |
mySerial.println("AT&F"); | |
delay(100); | |
mySerial.println("AT+CMGF=1"); | |
mySerial.setTimeout(100); | |
sendData("AT+CGNSPWR=1",1000,DEBUG); | |
delay(50); | |
while(1) | |
{ | |
Operator= GetOperator(); | |
if(Operator=="Not Recognized") | |
{ | |
Serial.println(Operator); | |
}// end if operator | |
else | |
{ | |
Serial.println(Operator); | |
Operator_Setting(Operator); | |
GSM_Initilaize(); | |
Balance=GetBalance(GetOperator()); | |
// Send_Message(Phone, Balance); | |
Send_Message(Phone, "Welcome to SIM808"); | |
Serial.println(Balance); | |
return; | |
} | |
}// end while | |
} // end of Main | |
void loop() | |
{ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment