class SerialBridge: def __init__(self): self.post = Post(self) self.conn_down = True self.initConnection() self.trigger_words = [] self.callback = None def openSerialPort(self, i): try: self.ser = serial.Serial('COM' + str(i), 19200) self.ser.flushInput() self.ser.flush() self.conn_down = False return True except serial.serialutil.SerialException as e: if "could not open port" in str(e): return False else: print "Problem accessing the device", e exit(1) def initConnection(self): for i in xrange(20): if self.openSerialPort(i): break if self.conn_down: print "could not establish connection" exit(1) return self.post.readFeedback() def readFeedback(self): print "reading feedback" tmp = "" cmt = False while not self.conn_down: feedback = self.ser.readline() feedback = feedback.replace("\n", "") feedback = feedback.replace("\r", "") if cmt: self.callback(tmp + feedback) cmt = False continue print "feedback:", feedback if not self.callback is None: for word in self.trigger_words: if cmt: break if word in feedback: if word == "CMT": tmp = feedback cmt = True continue self.callback(feedback) time.sleep(0.1) print "done reading feedback" def send(self, data): if len(data) > 0: # print "send", data self.ser.write(data + "\n\r") self.ser.flush() def sendSMS(self, number, text): self.send("SMS:" + str(number) + ";" + str(text)) def readSMS(index): self.send("AT+CMGR=" + str(index)) def answerCall(self): self.send("ATA") def hangupCall(self): self.send("ATH") def callNumber(self, number): self.send("ATD" + str(number)) def getReceivedSMS(self): pass def getSentSMS(self): pass def close(self): self.conn_down = True self.ser.close()