deffind_nearby_devices(self): print("Detecting nearby Bluetooth devices...") # 可传参数 duration--持续时间 lookup-name=true 显示设备名 # 大概查询10s左右 # 循环查找次数 loop_num = 3 i = 0 try: self.nearby_devices = bluetooth.discover_devices(lookup_names=True, duration=5) while self.nearby_devices.__len__() == 0and i < loop_num: self.nearby_devices = bluetooth.discover_devices(lookup_names=True, duration=5) if self.nearby_devices.__len__() > 0: break i = i + 1 time.sleep(2) print("No Bluetooth device around here! trying again {}...".format(str(i))) ifnot self.nearby_devices: print("There's no Bluetooth device around here. Program stop!") else: print("{} nearby Bluetooth device(s) has(have) been found:".format(self.nearby_devices.__len__()), self.nearby_devices) # 附近所有可连的蓝牙设备s except Exception as e: # print(traceback.format_exc()) # 不知是不是Windows的原因,当附近没有蓝牙设备时,bluetooth.discover_devices会报错。 print("There's no Bluetooth device around here. Program stop(2)!")
deffind_target_device(self, target_name, target_address): self.find_nearby_devices() if self.nearby_devices: for addr, name in self.nearby_devices: if target_name == name and target_address == addr: print("Found target bluetooth device with address:{} name:{}".format(target_address, target_name)) self.find = True break ifnot self.find: print("could not find target bluetooth device nearby. " "Please turn on the Bluetooth of the target device.")
defconnect_target_device(self, target_name, target_address): self.find_target_device(target_name=target_name, target_address=target_address) if self.find: print("Ready to connect") sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
try: sock.connect((target_address, 1)) print("Connection successful. Now ready to get the data") data_dtr = "" whileTrue: # sock.send("qwer".encode()) # print("send qwer") data = sock.recv(1024) data_dtr += data.decode() if'\n'in data.decode(): # data_dtr[:-2] 截断"\t\n",只输出数据 print(datetime.datetime.now().strftime("%H:%M:%S") + "->" + data_dtr[:-2]) data_dtr = "" except Exception as e: print("connection fail\n", e) sock.close()