def connect(self): print('connecting to', self.device.address) addr = QtBluetooth.QBluetoothAddress(self.device.address) self.dev = QtBluetooth.QBluetoothSocket(QtBluetooth.QBluetoothServiceInfo.RfcommProtocol, self) self.dev.connected.connect(self.onConnected) self.dev.disconnected.connect(self.onDisconnected) self.dev.error.connect(self.onError) self.dev.connectToService(addr, QtBluetooth.QBluetoothUuid.SerialPort)
def connectToRobot(self): self.sock = QtBluetooth.QBluetoothSocket( QtBluetooth.QBluetoothServiceInfo.RfcommProtocol) self.sock.connected.connect(self.connectedToBluetooth) self.sock.readyRead.connect(self.receivedBluetoothMessage) self.sock.disconnected.connect(self.disconnectedFromBluetooth) self.sock.error.connect(self.socketError) port = 1 self.sock.connectToService( QtBluetooth.QBluetoothAddress("98:D3:C1:FD:2C:46"), port)
def PluginConnection(param=""): from msgtools.server.BluetoothRFCOMMQt import BluetoothRFCOMMQtConnection from PyQt5 import QtBluetooth btArgs = param.split(",") btHost = btArgs[0] if len(btArgs) > 1: btPort = int(btArgs[1]) else: btPort = 8 btSocket = QtBluetooth.QBluetoothSocket( QtBluetooth.QBluetoothServiceInfo.RfcommProtocol) btSocket.connectToService(QtBluetooth.QBluetoothAddress(btHost), btPort) return BluetoothRFCOMMQtConnection(btSocket)
def detailsDiscovered(self, state): if state == QtBluetooth.QLowEnergyService.ServiceDiscovered: self.positionChrc = self.service.characteristic(QtBluetooth.QBluetoothUuid('{00000125-0000-1000-8000-00805f9b34fb}')) self.buttonsPressChrc = self.service.characteristic(QtBluetooth.QBluetoothUuid('{00000225-0000-1000-8000-00805f9b34fb}')) des = self.positionChrc.descriptor( QtBluetooth.QBluetoothUuid(QtBluetooth.QBluetoothUuid.ClientCharacteristicConfiguration) ) self.service.writeDescriptor(des, bytes.fromhex('0100')) des = self.buttonsPressChrc.descriptor( QtBluetooth.QBluetoothUuid(QtBluetooth.QBluetoothUuid.ClientCharacteristicConfiguration) ) self.service.writeDescriptor(des, bytes.fromhex('0100')) pos = self.positionChrc.value() self.x, self.y = struct.unpack("<ff", pos)
def __init__(self): self.local_device = QtBt.QBluetoothLocalDevice() self.local_device.deviceConnected.connect(self.notify_connect) self.local_device.deviceDisconnected.connect(self.notify_disconnect) self.agent = QtBt.QBluetoothDeviceDiscoveryAgent() self.agent.deviceDiscovered.connect(self.notify_discovered) self.agent.finished.connect(self.notify_finished) self.agent.error.connect(self.notify_error) self.agent.setLowEnergyDiscoveryTimeout(60000) self.scan_loop_timer = QTimer() self.scan_loop_timer.timeout.connect(self.scan_loop) self.bluetooth_speaker_cb = object()
def connect(self): addr = QtBluetooth.QBluetoothAddress(self.device.address) print('connecting to', addr) self.dev.connected.connect(self.connected) self.dev.disconnected.connect(self.disconnected) self.dev.error.connect(self.onError) self.dev.connectToService(addr, QtBluetooth.QBluetoothUuid.SerialPort)
def searchCharacteristic(self): # print("searchCharacteristic") if self.m_service: for c in self.m_service.characteristics(): if c.isValid(): if c.properties( ) & QtBluetooth.QLowEnergyCharacteristic.WriteNoResponse or c.properties( ) & QtBluetooth.QLowEnergyCharacteristic.Write: self.m_writeCharacteristic = c self.update_connected(True) if c.properties( ) & QtBluetooth.QLowEnergyCharacteristic.WriteNoResponse: self.m_writemode = QtBluetooth.QLowEnergyService.WriteWithoutResponse else: self.m_writemode = QtBluetooth.QLowEnergyService.WriteWithResponse if c.properties( ) & QtBluetooth.QLowEnergyCharacteristic.Read: self.m_readCharacteristic = c if not self.m_readTimer: self.m_readTimer = QtCore.QTimer() self.m_readTimer.timeout.connect(self.read) self.m_readTimer.start(3000) self.m_notificationDesc = c.descriptor( QtBluetooth.QBluetoothUuid(0x2902)) #print(QtBluetooth.QBluetoothUuid(0x2902).toString()) if self.m_notificationDesc.isValid(): #print("notificationCharacteristic") #print(bytearray([1,0])) self.m_service.writeDescriptor(self.m_notificationDesc, bytearray([1, 0])) self.heartbeat()
def __init__(self, parent): super().__init__() self.parent = parent self.discoverer = QtBluetooth.QBluetoothDeviceDiscoveryAgent(self) self.discoverer.setLowEnergyDiscoveryTimeout(0) self.discoverer.deviceDiscovered.connect(self.checkDevice) self.discoverer.start(QtBluetooth.QBluetoothDeviceDiscoveryAgent.DiscoveryMethod(2)) self.central = None self.service = None self.positionChrc = None self.buttonsPressChrc = None self.x = 0.5 self.y = 0.5 self.descriptCount = 0 self.setupDone.connect(parent.start) self.button1.connect(parent.changeMode) self.button2.connect(parent.leftClick) self.button3.connect(parent.rightClick) self.button4.connect(parent.changeVisibility) self.button5.connect(parent.quit) self.pos.connect(parent.move)
def __init__(self, parent=None): super().__init__(parent) # instance variables. Er is maar 1 instance? self.currentDevice = DeviceInfo() # type: DeviceInfo self.devices = [] # type: List[DeviceInfo] self.m_services = [] # type: List[QObject] self.currentService = None self.currentCharacteristic = None self.m_characteristics = [] # type: List[QObject] self.m_previousAddress = '' self.m_message = '' self.connected = False self.m_deviceScanState = False self.randomAddress = False self.blcomm = '' self.blresult = QByteArray() self.discoveryAgent = QtBt.QBluetoothDeviceDiscoveryAgent() self.discoveryAgent.setLowEnergyDiscoveryTimeout(5000) self.discoveryAgent.deviceDiscovered.connect(self.addDevice) self.discoveryAgent.error.connect(self.deviceScanError) self.discoveryAgent.finished.connect(self.deviceScanFinished) self.controller = None self.setUpdate('Search')
def addDevice(self, device): if self.m_device is None and device.coreConfigurations() & QtBluetooth.QBluetoothDeviceInfo.LowEnergyCoreConfiguration: # print("Discovered LE Device name: {name} ,Address: {address} ".format(name=device.name(),address=device.address().toString())) m_device = QtBluetooth.QBluetoothDeviceInfo(device) if self.deviceHasService(m_device,self.SERVICE_UUID): self.m_device = m_device # we found our device and stop scanning self.m_deviceDiscoveryAgent.stop()
def addDevice(self, device): if device.coreConfigurations( ) & QtBluetooth.QBluetoothDeviceInfo.LowEnergyCoreConfiguration: self.m_devices.append(QtBluetooth.QBluetoothDeviceInfo(device)) print("Discovered LE Device name: {name} ,Address: {address} ". format(name=device.name(), address=device.address().toString())) print("Low Energy device found. Scanning more...")
def connectCurrentDevice(self): if self.m_device is not None: self.m_control = QtBluetooth.QLowEnergyController(self.m_device) self.m_control.discoveryFinished.connect(self.onServiceScanDone) self.m_control.connected.connect(self.onDeviceConnected) self.m_control.disconnected.connect(self.onDeviceDisconnected) self.m_control.connectToDevice() else: self.deviceDisconnected.emit()
def bluetoothTest(self): self.agent = QtBt.QBluetoothDeviceDiscoveryAgent(self) self.agent.deviceDiscovered.connect(self.foo) self.agent.finished.connect(self.foo) self.agent.error.connect(self.foo) self.agent.setLowEnergyDiscoveryTimeout(1000) timer = QTimer(self.agent) timer.start(500) timer.timeout.connect(self.display_status)
def __init__(self, device, postman, parent=None): super(BluetoothSearch, self).__init__(parent) uic.loadUi('GUI/bluetoothSearch.ui', self) self.device = device self.postman = postman self.agent = QtBluetooth.QBluetoothDeviceDiscoveryAgent(self) self.agent.error.connect(self.error) self.agent.deviceDiscovered.connect(self.discovered) self.agent.finished.connect(self.stop) self.bScan.clicked.connect(self.scan) self.buttonBox.accepted.connect(self.save) self.localDevice = QtBluetooth.QBluetoothLocalDevice() if self.localDevice.isValid(): self.localDevice.powerOn() self.postman.Post.emit("Bluetooth_" + self.device.getName(), self.device.getName(), 'Connect to: ' + self.localDevice.name())
def scan_for_devices(self): self.agent = QtBt.QBluetoothDeviceDiscoveryAgent(self) self.agent.deviceDiscovered.connect(self.device_discovered) self.agent.finished.connect(self.finished) self.agent.error.connect(self.error) self.agent.setLowEnergyDiscoveryTimeout(1000) timer = QtCore.QTimer(self.agent) timer.start(2000) timer.timeout.connect(self.display_status) self.agent.start()
def __init__(self, device, postman, parent=None): super(MetawatchThread, self).__init__(parent) self.postman = postman self.device = device self.dev = QtBluetooth.QBluetoothSocket( QtBluetooth.QBluetoothServiceInfo.RfcommProtocol) self.dev.readyRead.connect(self.readyRead.emit) self.CRC = CRC_CCITT() self.loop = QtCore.QEventLoop() self.timer = QtCore.QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.loop.quit)
def __init__(self, service_uuid, char_uuid, processData, sendHeartbeat, reset): super().__init__() self.SERVICE_UUID = QtBluetooth.QBluetoothUuid(service_uuid) self.CHAR_UUID = QtBluetooth.QBluetoothUuid(char_uuid) self.processData = processData self.sendHeartbeat = sendHeartbeat self.reset = reset self.m_deviceDiscoveryAgent = QtBluetooth.QBluetoothDeviceDiscoveryAgent( ) self.m_notificationDesc = QtBluetooth.QLowEnergyDescriptor() self.m_control = None #self.m_servicesUuid = QtBluetooth.QBluetoothUuid() self.m_servicesUuid = [] self.m_service = QtBluetooth.QLowEnergyService self.m_readCharacteristic = QtBluetooth.QLowEnergyCharacteristic() self.m_writeCharacteristic = QtBluetooth.QLowEnergyCharacteristic() self.m_writemode = QtBluetooth.QLowEnergyService.WriteMode() self.m_device = None # bound to the device if discovered self.m_services = [] self.m_currentService = None self.m_connected = False self.m_readTimer = None self.m_deviceDiscoveryAgent.setLowEnergyDiscoveryTimeout(500) self.m_deviceDiscoveryAgent.deviceDiscovered.connect(self.addDevice) self.m_deviceDiscoveryAgent.error.connect(self.onDeviceScanError) self.m_deviceDiscoveryAgent.finished.connect(self.onScanFinished) self.m_deviceDiscoveryAgent.canceled.connect(self.onScanFinished) self.dataReceived.connect(self.printDataReceived)
def __init__(self, service_uuid, char_uuid, processData, sendHeartbeat, sendStop, reset): super().__init__() self.SERVICE_UUID = QtBluetooth.QBluetoothUuid(service_uuid) self.CHAR_UUID = QtBluetooth.QBluetoothUuid(char_uuid) self.processData = processData self.sendHeartbeat = sendHeartbeat self.sendStop = sendStop self.reset = reset self.QBluetoothDeviceDiscoveryAgent_LowEnergyMethod = 2 self.ENABLE_NOTIFICATION_VALUE = QtCore.QByteArray.fromHex(b"0100") self.DISABLE_NOTIFICATION_VALUE = QtCore.QByteArray.fromHex(b"0000") self.m_deviceDiscoveryAgent = QtBluetooth.QBluetoothDeviceDiscoveryAgent( ) self.m_deviceDiscoveryAgent.setLowEnergyDiscoveryTimeout(500) self.m_deviceDiscoveryAgent.deviceDiscovered.connect(self.addDevice) self.m_deviceDiscoveryAgent.finished.connect(self.onScanFinished) self.m_deviceDiscoveryAgent.canceled.connect(self.onScanFinished) self.m_device = None self.m_control = None self.m_service = None self.m_notificationDesc = QtBluetooth.QLowEnergyDescriptor() self.m_readCharacteristic = QtBluetooth.QLowEnergyCharacteristic() self.m_writeCharacteristic = QtBluetooth.QLowEnergyCharacteristic() self.m_writemode = QtBluetooth.QLowEnergyService.WriteMode() self.m_connected = False self.m_readTimer = None self.dataReceived.connect(self.printDataReceived)
def foo(self, *args, **kwargs): # print('foo', args, kwargs) if len(args): if args[0].name() == 'NIST0002': print(args[0].name()) self.controller = QtBt.QLowEnergyController( args[0]).createCentral(args[0]) self.controller.connected.connect(self.c) self.controller.serviceDiscovered.connect(self.service) self.controller.discoveryFinished.connect( self.discoveryFinished) self.controller.connectToDevice() print(self.controller)
def connectCurrentDevice(self): if self.m_device is None: self.deviceDisconnected.emit() return if self.m_control: self.m_control.disconnectFromDevice() self.m_control = None self.m_control = QtBluetooth.QLowEnergyController(self.m_device) self.m_control.serviceDiscovered.connect(self.onServiceDiscovered) self.m_control.discoveryFinished.connect(self.onServiceScanDone) self.m_control.error.connect(self.onControllerError) self.m_control.connected.connect(self.onDeviceConnected) self.m_control.disconnected.connect(self.onDeviceDisconnected) self.m_control.connectToDevice()
def __init__(self): super().__init__() self.m_deviceDiscoveryAgent = QtBluetooth.QBluetoothDeviceDiscoveryAgent( ) self.m_notificationDesc = QtBluetooth.QLowEnergyDescriptor() self.m_control = None #self.m_servicesUuid = QtBluetooth.QBluetoothUuid() self.m_servicesUuid = [] #用于存放设备的服务的UUID self.m_service = QtBluetooth.QLowEnergyService #用于存放设备具体使用的服务 self.m_readCharacteristic = QtBluetooth.QLowEnergyCharacteristic( ) #用于存放读取的服务的特性内容 self.m_writeCharacteristic = QtBluetooth.QLowEnergyCharacteristic( ) #用于存放写入的服务的特性内容 self.m_devices = [] #用于存放获取的设备列表 self.m_writemode = QtBluetooth.QLowEnergyService.WriteMode() self.m_readTimer = QtCore.QTimer() self.m_connected = bool self.m_devicesNames = [] self.m_services = [] self.m_currentDevice = None self.m_currentService = None #初始化相关变量 self.m_connected(False) #self.m_control(None) self.m_readTimer = None #self.m_currentService(None) #self.m_currentDevice(None) #绑定设备发现相关信号函数 self.m_deviceDiscoveryAgent.setLowEnergyDiscoveryTimeout(500) self.m_deviceDiscoveryAgent.deviceDiscovered.connect(self.addDevice) self.m_deviceDiscoveryAgent.error.connect(self.onDeviceScanError) self.m_deviceDiscoveryAgent.finished.connect(self.onScanFinished) self.m_deviceDiscoveryAgent.canceled.connect(self.onScanFinished) self.dataReceived.connect(self.printDataReceived)
def searchCharacteristic(self): if self.m_service: for c in self.m_service.characteristics(): if c.isValid(): if c.properties() & QtBluetooth.QLowEnergyCharacteristic.WriteNoResponse or c.properties() & QtBluetooth.QLowEnergyCharacteristic.Write: self.m_writeCharacteristic = c self.update_connected(True) if c.properties() & QtBluetooth.QLowEnergyCharacteristic.WriteNoResponse: self.m_writemode=QtBluetooth.QLowEnergyService.WriteWithoutResponse else: self.m_writemode=QtBluetooth.QLowEnergyService.WriteWithResponse self.m_notificationDesc = c.descriptor(QtBluetooth.QBluetoothUuid(QtBluetooth.QBluetoothUuid.ClientCharacteristicConfiguration)) if self.m_notificationDesc.isValid(): self.m_service.descriptorWritten.connect(self.descriptorWrittenSlot) self.m_service.writeDescriptor(self.m_notificationDesc,self.ENABLE_NOTIFICATION_VALUE)
def servicesScanned(self): self.service = self.central.createServiceObject(QtBluetooth.QBluetoothUuid('{00003125-0000-1000-8000-00805f9b34fb}'), self.central) self.service.stateChanged.connect(self.detailsDiscovered) self.service.descriptorWritten.connect(self.countDescript) self.service.discoverDetails()
def onServiceDiscovered(self, _=QtBluetooth.QBluetoothUuid()): self.statusInfoChanged.emit( "Service discovered. Waiting for service scan to be done...", True)
def setDevice(self, dev): self.device = QtBt.QBluetoothDeviceInfo(dev) self.deviceChanged.emit()
def onServiceDiscovered(self, gatt=QtBluetooth.QBluetoothUuid()): self.statusInfoChanged.emit( "Service discovered. Waiting for service scan to be done...", True) print( "Service discovered. Waiting for service scan to be done... GATT: {gatt} " .format(gatt=gatt))
def __init__(self, app): self.local_device = QtBt.QBluetoothLocalDevice() self.agent = QtBt.QBluetoothDeviceDiscoveryAgent() self.timer = QTimer() self.ben = object self.app = app
import signal import sys import os from PyQt5 import QtBluetooth as QtBt from PyQt5 import QtCore, QtWidgets service_uuid = '7b183224-9168-443e-a927-7aeea07e8105' count_uuid = '292bd3d2-14ff-45ed-9343-55d125edb721' rw_uuid = '56cd7757-5f47-4dcd-a787-07d648956068' data_uuid = 'fec26ec4-6d71-4442-9f81-55bc21d658d6' print(QtBt.QBluetoothUuid(rw_uuid)) data_uuid = QtBt.QBluetoothUuid(data_uuid) service_uuid = QtBt.QBluetoothUuid(service_uuid) if sys.platform == 'darwin': os.environ['QT_EVENT_DISPATCHER_CORE_FOUNDATION'] = '1' class Application(QtWidgets.QApplication): # class Application(QtCore.QCoreApplication): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # self.le_controller = QLowEnergyController self.scan_for_devices() print("before exec") self.exec() print("after exec") def display_status(self): print(self.agent.isActive(), self.agent.discoveredDevices())