jops 7 years ago
parent
commit
d8bf879c1b
1 changed files with 94 additions and 0 deletions
  1. 94 0
      bluetoothTermostato2.py

+ 94 - 0
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()
+