鸭'先觉
2022-03-10 21:35
采纳率: 100%
浏览 110

python编写蓝牙传输程序的数据接收问题

你好,目前大四(机械专业),毕设做一款显示实时数据的软件(蓝牙传输,python编写)。
现在可以连接目标蓝牙(如图Connection successful. Now ready to get the data)
不知道现在是接下来该如何接收数据并显示,能不能点拨我一下👀,不胜感激。

我的代码(无报错):
import datetime
import time
import bluetooth

class BluetoothConnection:
def init(self): # 是否找到到设备
self.find = False # 附近蓝牙设备
self.nearby_devices = None

def find_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__() == 0 and 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)))
        if not 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)!")

def find_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
        if not self.find:
            print("could not find target bluetooth device nearby. "
                  "Please turn on the Bluetooth of the target device.")

def connect_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 = ""
            while True:
                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()

if name == 'main':
target_name = "BT04-E"
target_address = "98:DA:10:00:CB:0C"
BluetoothConnection().connect_target_device(target_name=target_name, target_address=target_address)

img

图片转代码服务由CSDN问答提供 功能建议

  : *PYTHON 3.5.3 SHELL&                                                              口      X
 FILEEDT SHELL DEBUG OPTIONS WINDOW HELP
  16:02:32) SC V.1900 64 BIT (AM
 D64)] ON WIN32
 22X
                       RESTART:D:C盘桌面V2.Py
 DETECTING NEARBY BLUETOOTH DEVICES.
 2E:AB:63:DD:33:81
                      (98:DA:10:00:CB:C  :1000 NE03')                                BT04-E')  D6:96:242.                                                   ( 94:08:53:34: 24:3E.
 LAPTOP-FNKC5C1Q').(D4:D7:CF:30:6F:14##GT NEO2T')]
 FOUND TARGETBLUETOOTH DEVICE WITH ADDRESS:98:DA: 10:00:CB:OC NAME: BT04-E
 READY TO COMECT
 COECT SUCCESSUL NOW READY TO GET THE DATA
                                                               LN:5 COL:0

1条回答 默认 最新

相关推荐 更多相似问题