python接收数据超时自动重新连接蓝牙

本文详细介绍了如何使用Python的bluetooth模块创建一个RFCOMM套接字,连接到指定的蓝牙设备地址,发送和接收数据,以及处理可能的错误。重点展示了如何设置超时和数据接收部分的代码示例。
摘要由CSDN通过智能技术生成
import bluetooth
import time

try:
    target_address = '7A:01:4A:FF:FF:FF'
    target_port = 1

    sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    sock.connect((target_address, target_port))
    sock.settimeout(0.5)

    buffer_size = 1024
    received_data = b""

    hex_string = "0x24 0x52 0x55 0x49"
    ascii_string = ''.join(chr(int(i, 16)) for i in hex_string.split())
    message = ascii_string.encode() + b"\xF0" + b"#\r\n"
#    message = b"$RDI" + b"\xDF#" + b"\r\n"
    print(message)

    while True:
        sock.send(message)

        try:
            received_data = sock.recv(buffer_size)

            if received_data:
                print("Received data:", received_data.decode())            
            else:
                print("No data received...")
        except bluetooth.btcommon.BluetoothError as e:
            print("Error receiving data:", e)
            print("Resending command...")

        time.sleep(1)
except bluetooth.btcommon.BluetoothError as e:
    print("Connection failed:", e)
finally:
    sock.close()

若进程阻塞在sock.recv(),则需要设置sock.settimeout(0.5)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值