import atexit import signal import sys import socket import time import os import string import classServer from time import sleep from serial import * success = None stop = False try: global ser global server portAddress = '/dev/ttyUSB0' portName = portAddress[-4:] portExist = os.popen('dmesg | grep ' + portName).read() if portExist == '': print 'The serial port does not exist' sys.exit() server = classServer.ServerHandler(50105) tried = server.openSocket() if server.error != 'No error': print server.error if server.error == '[Errno 98] Address already in use': print 'one should try to kill the port' print server.killPort() server.closeConection() print "here:", server.connected if server.connected == 1: server.sendData('ready') server.closeConection() ser = Serial( port=portAddress, baudrate=19200, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE) ser.close() ser.open() signalQuality = ser.write('AT+CSQ\r') print "signal Quality ", signalQuality print "" while stop <> True: global pickUp pickUp = None buffer = "" buffer = buffer + ser.read(ser.inWaiting()) #read the serial port and add it to the buffer variable if '\n' in buffer: #if a new line character is found in the buffer then the cellphone has sent something lines = buffer.split('\n') #parse the buffer variable with the new line character last_received = lines.pop(0) #put into last_received variable the first content from lines (FIFO) buffer = '\n'.join(lines) #add a new line to the buffer variable last_received=last_received.split('\n') #parse the last received value with new lines line = last_received[0].replace(chr(13), '') print "buffer:", buffer print "line:", line if len(line) > 0: if line=="RING": print "Somebody calling" print "" sleep(1) ser.write('ATA\r') sleep(1) ser.write('AT+CSQ\r') sleep(2) ser.write('AT+CLCC\r') if line[0:5] == '+CSQ:': space = int(string.find(line,' '))+1 coma = int(string.find(line,',')) signalStr = (int(line[space:coma])*2)-113 line='' if line[0:6]=='+CLCC:': pickUp = 1 print "I will hangup the call" print "" sleep(5) ser.write('AT+CHUP\r') pickUp = 0 ser.close() quotation1 = int(string.find(line,'"'))+1 lineTemp = line[quotation1:] quotation2 = int(string.find(lineTemp,'"')) numberOfCaller = line[quotation1:quotation1+quotation2] print "Signal Strength: ", signalStr print "" tried = server.openSocket() server.sendData('I got call from :' +numberOfCaller) print "with caller number", numberOfCaller sleep(1) server.sendData('success') stop = True sleep (3) server.closeConnection() del server else: print "not connected" del server ser.close() except ValueError: print "Exception: " server.closeConnection() del server print "GOODBYE" sleep(5)