我想继续尝试连接蓝牙设备,直到连接成功。下面的代码使用递归调用,这可能导致满足最大递归级别。
BluetoothSocket.connect()
是否会返回成功或失败的值?
def connect(self):
# the bluetooth device uses port 1
port = 1
if not self.quit:
try:
print 'Attempting Connection...'
# Create the client socket
self.socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
self.socket.connect((self.bt_mac, port))
except bluetooth.btcommon.BluetoothError:
self.connect()
return self.SUCCESS
文档说明如下:
connect(self, addrport)
connect(addrport)
可用性:GNU / Linux,Windows XP
将插座连接到远程设备。对于L2CAP套接字,addrport
是(host,psm)
元组。对于RFCOMM套接字,addrport
是(host,channel)
元组。对于SCO套接字,addrport
只是主机。
答案 0 :(得分:0)
BluetoothSocket.connect()
未明确返回表示成功或失败的值。但是,这可以通过在捕获bluetooth.btcommon.BluetoothError
异常时返回错误标志来实现。
所以在except块中,我们可以返回错误标记(例如self.ERROR = -1
)
def connect(self):
# the bluetooth device uses port 1
port = 1
try:
print 'Attempting Connection...'
# Create the client socket
self.socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
self.socket.connect((self.bt_mac, port))
except bluetooth.btcommon.BluetoothError:
return self.ERROR
return self.SUCCESS
上面的connect方法将在无限循环(下面显示的代码)内部调用,只有当从connect函数返回成功时才会被破坏。否则,将连续调用connect方法。
while True:
# connect to device
res = mydevice.connect()
# print connection status -1=fail, 0=success
if res == SUCCESS:
print "Success"
# break out of connection loop if success
break
if res == ERROR:
print "Failed"