From d8bf879c1b0e15747bf342830c17f710d4905589 Mon Sep 17 00:00:00 2001 From: jops Date: Sat, 21 Jan 2017 14:53:50 +0000 Subject: [PATCH] refactor --- bluetoothTermostato2.py | 94 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 bluetoothTermostato2.py diff --git a/bluetoothTermostato2.py b/bluetoothTermostato2.py new file mode 100644 index 0000000..07b156e --- /dev/null +++ b/bluetoothTermostato2.py @@ -0,0 +1,94 @@ +#!/usr/bin/python +import string +import time +import bluetooth +import sys + + +bd_addr = "98:D3:31:B2:35:33" #itade address +port = 1 + +sampleTime = 1 +numSamples = 5 +lastTemp = 0 + + +def connect(): + while(True): + try: + gaugeSocket = bluetooth.BluetoothSocket(bluetooth.RFCOMM) + gaugeSocket.connect((bd_addr, port)) + print 'Connected' + break; + except bluetooth.btcommon.BluetoothError as error: + gaugeSocket.close() + print "Could not connect: ", error, "; Retrying in 10s..." + time.sleep(10) + return gaugeSocket; + +def recv_timeout(the_socket,timeout=2000): + #make socket non blocking + the_socket.setblocking(0) + + #total data partwise in an array + total_data=[]; + data=''; + + #beginning time + begin=time.time() + while 1: + #if you got some data, then break after timeout + if total_data and time.time()-begin > timeout: + print "if you got some data, then break after timeout" + break + + #if you got no data at all, wait a little longer, twice the timeout + elif time.time()-begin > timeout*2: + print "if you got no data at all, wait a little longer, twice the timeout" + break + + #recv something + try: + data = the_socket.recv(8192) + print "ricevuto qualcosa %s" % data + if data: + total_data.append(data) + print len(total_data) + if len(total_data)==2: + print "sono qui" + break; + #change the beginning time for measurement + begin=time.time() + + else: + #sleep for sometime to indicate a gap + time.sleep(0.1) + except: + pass + print "esco" + #join all parts to make final string + return ''.join(total_data) + + + + +gaugeSocket = connect() +while(True): + try: + print sys.argv[1] + gaugeSocket.send(sys.argv[1]) + print 'Sent data' + #data = gaugeSocket.recv(1024) + #print len(data) + #print 'received [%s]' % data + print recv_timeout(gaugeSocket) + break + + except bluetooth.btcommon.BluetoothError as error: + print "Caught BluetoothError: ", error + time.sleep(5) + gaugeSocket = connect() + pass + +gaugeSocket.close() +