Bidirektionaler Datenaustausch zwischen Android und Bluetoothmodul

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
kloeppi
User
Beiträge: 2
Registriert: Montag 13. Februar 2017, 20:07

Bidirektionaler Datenaustausch zwischen Android und Bluetoothmodul

Beitragvon kloeppi » Montag 13. Februar 2017, 20:46

Hallo,

ich hoffe, ich bin in diesem Forum richtig mit meinem Anliegen.
Obwohl ich absoluter Programmierneuling bin, funktioniert der jetzige Stand nach stundenlanger Recherche und tagelangem Probieren einwandfrei.
Mit den 2 unten angehängten SL4A Scripts sende ich von der Android App Tasker Daten über ein Bluetooth Modul HC-05 an einen Mikroprozessor.

BTSend.py (wird von Tasker mit Parameter %par1 gestartet)
  1. import socket
  2. import android
  3.  
  4. droid = android.Android()
  5. command=droid.getIntent().result[u'extras'][u'%par1']
  6.  
  7. Ziel='127.0.0.1'
  8. Port=5005
  9.  
  10. s_udp_sock = socket.socket( socket.AF_INET,  socket.SOCK_DGRAM )
  11.  
  12. def sende(Nachricht):
  13.         s_udp_sock.sendto( Nachricht, (Ziel,Port) )
  14.  
  15. sende(command)


und sendet den Parameter über Socket an

BTServer.py (läuft permanent in Endlosscheife und hält Verbindung mit BT Modul HC-05)
  1. import socket
  2. import android
  3. import time
  4.  
  5. droid = android.Android()
  6.  
  7. uuid='00001101-0000-1000-8000-00805F9B34FB'
  8. mac='xx:xx:xx:xx:xx:xx'
  9.  
  10. Quelle='127.0.0.1'
  11. Port=5005
  12.  
  13. BTVerify=1
  14.  
  15. e_udp_sock = socket.socket( socket.AF_INET,  socket.SOCK_DGRAM )
  16. e_udp_sock.bind( (Quelle,Port) )
  17.  
  18. print '########Dies ist der Empfaenger########'    
  19. print 'Neue Verbindung:'
  20. print 'Quelle',Quelle
  21. print 'Port=',Port
  22.  
  23. while 1:
  24.  
  25.     if (len(droid.bluetoothActiveConnections().result) == 0):
  26.         print 'Verbinde mit ClockRadioBT'
  27.         connID=droid.bluetoothConnect(uuid,mac).result
  28.         while (len(droid.bluetoothActiveConnections().result) == 0):
  29.             time.sleep(0.10)
  30.  
  31.     print ''
  32.     print 'Warte auf Daten'
  33.     data, addr = e_udp_sock.recvfrom(16)
  34.     if (len(data) == 1):
  35.         # A = Amp On
  36.         # a = Amp Off
  37.         # B = Start charging
  38.         # b = Stop charging
  39.         droid.bluetoothWrite(data, connID)
  40.         if (BTVerify == 1):
  41.             if droid.bluetoothReadReady():
  42.                 res= droid.bluetoothRead(1, connID).result
  43.                 if (res == data):
  44.                     task_name='BTCallback'
  45.                     extras={'task_name':task_name}
  46.                     taskIntent = droid.makeIntent('net.dinglisch.android.tasker.ACTION_TASK', None, None, extras).result
  47.                     droid.sendBroadcastIntent(taskIntent)
  48.                     print 'Processed ', data, ', Res = ', res
  49.         else:
  50.             print 'Processed ', data, ', Res = ? (VerifyOff)'
  51.     elif (data == 'VerifyOn'):
  52.         BTVerify = 1
  53.         print 'Set BTVerify = 1'
  54.     elif (data == 'VerifyOff'):
  55.         BTVerify = 0
  56.         print 'Set BTVerify = 0'
  57.     elif (data == 'Exit'):
  58.         droid.exit()
  59.         sys.exit
  60.         print 'Processed ', data
  61.     else:
  62.         print 'Unknown command'


Jetzt möchte ich das gerne erweitern und müsste dazu Daten (C = PIR ON, c = PIR Off) in der anderen Richtung - also vom Mikroprozessor über das BT-Modul an Android - senden.
Würde evtl. mit einem 2. Script und res= droid.bluetoothRead(1, connID).result in Endlosschleife funktionieren, wenn ich 2x mit dem BT-Modul verbinden könnte - geht aber nicht.
Und im BTServer.py oben wartet das Script ja bei data, addr = e_udp_sock.recvfrom(16) auf Socket Daten.

Ich hoffe, ich habe mich einigermassen verständlich ausgedrückt und würde mich freuen, wenn jemand mir Newbie weiterhelfen kann

Danke für alle Antworten

Kloeppi
Zuletzt geändert von Anonymous am Montag 13. Februar 2017, 23:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.

Wer ist online?

Mitglieder in diesem Forum: __deets__