ich bin ein absoluter Anfänger in Python, aber da es recht ähnlich zu Matlab ist, dachte ich, dass man sich schnell reinfuchsen kann.
Allerdings habe ich gerade einen kleinen Hänger und keine Idee.
Ich möchte eine reibungslose Bluetooth Kommunikation zwischen meinem Laptop mit Python zu meinem Bluetooth Modul HC-05 und dem Arduino herstellen.
Ich kann ohne Probleme eine Verbindung herstellen und auch Befehle an den Arduino schicken.
Wenn ich einen bestimmten Befehl ausführe, so stellt der Arduino durchgehend Datenpakete an der seriellen Schnittstelle bereit.
Ich kann mit s.receive(1024) {beispielsweise} auch diese Daten empfangen nur kommen diese leider in einem sehr unübersichtlichen und für mich nicht verarbeitungswürdigen Zustand raus.
Vielleicht erstmal der Code zum Verbinden.
Code: Alles auswählen
import bluetooth, subprocess
name = "HC-05" # Device name
addr = "98:D3:91:FD:42:7E" # Device Address
port = 1 # RFCOMM port
passkey = "1234" # passkey of the device you want to connect
# kill any "bluetooth-agent" process that is already running
subprocess.call("kill -9 `pidof bluetooth-agent`",shell=True)
# Start a new "bluetooth-agent" process where XXXX is the passkey
status = subprocess.call("bluetooth-agent " + passkey + " &",shell=True)
# Now, connect in the same way as always with PyBlueZ
try:
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.connect((addr,port))
except bluetooth.btcommon.BluetoothError as err:
# Error handler
pass
Code: Alles auswählen
s.recv(1024)
Out[41]: b'-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n13859\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n12476\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-19533\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n12347\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n10649\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-11639\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-17067\r\n-32768\r\n8125\r\n-32768\r\n-32768\r\n-7434\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n4628\r\n-32768\r\n-32768\r\n3221\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-674\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-4431\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-10096\r\n-32768\r\n3513\r\n-32768\r\n-32768\r\n5507\r\n-32768\r\n-32768\r\n32\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n3638\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-2954\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n-12455\r\n-32768\r\n2042\r\n-32768\r\n-32768\r\n-12167\r\n-32768\r\n248\r\n-32768\r\n-32768\r\n-4070\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n17228\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n14583\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n6446\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n6854\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n12624\r\n-32768\r\n-32768\r\n-32768\r\n-32768\r\n17442\r\n-32768\r'
Hat jemand eine Idee, wie ich die Daten gut auslesen kann?
Ich habe was von readline() gelesen, aber nicht ganz die Funktionalität durchblickt, da ich als Fehlermeldung folgendes bekomme: AttributeError: 'BluetoothSocket' object has no attribute 'readline'
Dann dachte ich man müsse das Objekt mit makefile() beispielsweise erst erstellen, aber wie läuft das? Mit makefile wird mir angezeigt, dass ich zwei Attribute übergebe, obwohl ich nur eins angebe?