class NetworkClient: """A class for sending readings to a server""" def __init__(self): # Create an INET, STREAMing socket self.cli_sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM) # Connect to a remote socket at host and port self.cli_sock.connect(('pi2' , 1234)) self.serial_conn = SerialConnection('/dev/ttyUSB0', 30) self.serial_conn.open() self.serial_conn.flush_input() def send(self): try: while True: data = self.serial_conn.read() self.cli_sock.send(data) except KeyboardInterrupt: self.serial_conn.close() self.cli_sock.close()
class Main: """A class for establishing connections""" def start_db_hdlr(self, db): self.db_hdlr = DatabaseHandler(db) self.db_hdlr.flush_rss_readings() self.db_hdlr.check_pos_tbl() self.db_hdlr.check_rsl_tbl() def start_net_srv(self): self.net_srv = NetworkServer() self.net_srv.start() def start_serial_conn(self, port, timeout): self.serial_conn = SerialConnection(port, timeout) self.serial_conn.open() self.serial_conn.flush_input() def start_trilat(self): self.trilat = Trilateration() self.trilat.start() def run(self): try: while True: data = self.serial_conn.read().strip() tag_id = data[:4] rss = data[4:] self.db_hdlr.ins_reading(2, tag_id, rss) except KeyboardInterrupt: self.db_hdlr.close_db() self.net_srv.stop() self.net_srv.join(60) self.trilat.stop() self.trilat.join(20) self.serial_conn.close()