Hallöchen Python-Scripter,
ich arbeite mich mit Python und dem QT-Framework ein.
Ich würde auch gerne PyQt5.QtBluetooth nutzen.
Dies scheint aber nur unter Linux zu funktionieren.
Unter Windows und Mac funktioniert QTBluetooth nicht.
Auf was greift QT5 dort zu?
Es gibt unter MacOS ja sogar ein eigenes Bluetooth-Framework.
Eigentlich sollte QT dies ja nutzen, oder ?
Hat hier jemand Erfahrung?
PyQt5.QtBluetooth
Ich habe damit noch nicht gearbeitet aber die Dokumentation sagt anderes.
-
- User
- Beiträge: 34
- Registriert: Sonntag 5. Januar 2020, 18:05
Ja, aber mit PyQt5 scheint es nicht zu funktionieren.
Zumindest funktioniert es bei mir nur unter Linux.
Mit C++ habe ich es noch nicht getestet.
Zumindest funktioniert es bei mir nur unter Linux.
Mit C++ habe ich es noch nicht getestet.
-
- User
- Beiträge: 34
- Registriert: Sonntag 5. Januar 2020, 18:05
Wie bekomme ich beim Device scannen einen Core-EventLoop hin ?
(Für die Delegates)
So:
os.environ['QT_EVENT_DISPATCHER_CORE_FOUNDATION'] = '1'
Unter MacOS tut sich etwas, aber man findet halt sehr wenig Python-Material zu diesem Thema und muss daher stark mit der C++ Doku arbeiten.
Mal sehen ob ich es hinbekomme.
(Für die Delegates)
So:
os.environ['QT_EVENT_DISPATCHER_CORE_FOUNDATION'] = '1'
Unter MacOS tut sich etwas, aber man findet halt sehr wenig Python-Material zu diesem Thema und muss daher stark mit der C++ Doku arbeiten.
Mal sehen ob ich es hinbekomme.
-
- User
- Beiträge: 34
- Registriert: Sonntag 5. Januar 2020, 18:05
Außerdem muss man Einiges in dieser Richtung mit SUDO-Rechten testen.
-
- User
- Beiträge: 34
- Registriert: Sonntag 5. Januar 2020, 18:05
Das hier:
muss doch auch eleganter gehen.
Code: Alles auswählen
#!/usr/bin/env python
import signal
import sys
import os
from PyQt5.QtCore import QCoreApplication, QTimer
from PyQt5.QtBluetooth import QBluetoothLocalDevice, QBluetoothDeviceDiscoveryAgent, QBluetoothDeviceInfo
class Application(QCoreApplication):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.dev = QBluetoothDeviceInfo()
self.dlist = []
self.counter = 0
self.localDevice = QBluetoothLocalDevice()
print(self.localDevice.name())
self.scan_for_devices()
self.exec()
def display_status(self):
d = 0
#print(self.agent.isActive(), self.agent.discoveredDevices())
def fin(self, *args, **kwargs):
self.agent.stop()
self.dlist = self.agent.discoveredDevices()
while self.counter < len(self.dlist):
print(self.dlist[self.counter].name())
self.counter += 1
os.environ['QT_EVENT_DISPATCHER_CORE_FOUNDATION'] = '0'
sys.exit(0)
def err(self, *args, **kwargs):
print("Ein Fehler ist aufgetretten.")
def scan_for_devices(self):
self.agent = QBluetoothDeviceDiscoveryAgent(self)
#self.agent.deviceDiscovered.connect(self.fin)
self.agent.finished.connect(self.fin)
self.agent.error.connect(self.err)
self.agent.setLowEnergyDiscoveryTimeout(1000)
#self.agent.discoveredDevices()
self.agent.start()
timer = QTimer(self.agent)
timer.start(500)
timer.timeout.connect(self.display_status)
if __name__ == '__main__':
import sys
os.environ['QT_EVENT_DISPATCHER_CORE_FOUNDATION'] = '1'
app = Application(sys.argv)