-
Notifications
You must be signed in to change notification settings - Fork 50
/
gsm_class.py
128 lines (97 loc) · 3 KB
/
gsm_class.py
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
__author__ = 'dhanish'
import serial
import time
import sys
class gsm():
echo_on = 1
def __init__(self,serialPort):
self.serialPort = serialPort
def sendCommand(self,at_com):
self.serialPort.write(at_com + '\r')
def getResponse(self):
self.serialPort.flushInput()
self.serialPort.flushOutput()
if gsm.echo_on == 1:
response = self.serialPort.readline() # comment this line if echo off
response = self.serialPort.readline()
response = response.rstrip()
return response
def getPrompt(self):
if gsm.echo_on == 1:
response = self.serialPort.readline() # comment this line if echo off
if (self.serialPort.readline(1) == '>'):
return True
else:
return False
def sendMessage(self,phone_number, message):
flag = False
self.sendCommand('AT+CMGS=\"' + phone_number + '\"')
time.sleep(2)
print 'SUCCESS'
self.serialPort.write(message)
self.serialPort.write('\x1A') # send messsage if prompt received
flag = True
time.sleep(5)
return flag
def readMessage(self):
flag = False
message = ''
self.sendCommand('AT+CMGR=1')
self.serialPort.flushInput()
self.serialPort.flushOutput()
self.serialPort.readline().rstrip()
while True:
response = self.serialPort.readline().rstrip()
if len(response)>1:
if response == 'OK':
break
else:
message = message +" " + response
flag = True
return flag,message
# response = self.getResponse().rstrip()
# if response == 'OK':
# flag = False
# else:
# message = self.serialPort.readline().rstrip()
# flag = True
#
# return flag,message
if __name__ == "__main__":
gsm_ser = serial.Serial()
gsm_ser.port = "/dev/ttyUSB0"
gsm_ser.baudrate = 9600
gsm_ser.timeout = 3
gsm_ser.xonxoff = False
gsm_ser.rtscts = False
gsm_ser.bytesize = serial.EIGHTBITS
gsm_ser.parity = serial.PARITY_NONE
gsm_ser.stopbits = serial.STOPBITS_ONE
try:
gsm_ser.open()
gsm_ser.flushInput()
gsm_ser.flushOutput()
except:
print 'Cannot open serial port'
sys.exit()
GSM = gsm(gsm_ser)
GSM.sendCommand("AT+IPR=9600;&W")
print GSM.getResponse()
time.sleep(.1)
GSM.sendCommand("AT+CMGF=1;&W")
print GSM.getResponse()
time.sleep(.1)
GSM.sendCommand("AT+CREG?")
print GSM.getResponse()
time.sleep(.1)
status,msg = GSM.readMessage()
if status == 0:
print 'no new messages'
else:
print 'new messages arrived: ' + msg
# if (GSM.sendMessage("8129025513", "HELLO MISTER") == True):
# print 'Message sending Success'
# else:
# print 'Message sending Failed'
# time.sleep(.1)
gsm_ser.close()