2个RPI(主/从)之间通过蓝牙套接字的Python双向通信
我正在尝试在两个RPI之间通过蓝牙套接字创建双向通信。我需要在主机上运行主程序,同时等待连接,然后能够在任何时候从任何一个设备推送消息,并在收到消息时中断其中一个设备上的主线程。收到的消息将对其他RPi执行操作。例如,根据从主设备到从设备发送的信息,打开主设备将打开从设备上的LED,反之亦然。我正在小步解决这个问题,目前正在等待连接,此时只需使用连接发送/接收输入 我的插座在发送/接收模式下正常工作。我现在正尝试进入多进程以等待连接,这是可行的,但是我失去了连接,因为据我所知,我无法在创建连接的进程之外访问它。所以我正在努力制定下一步,我在想我应该使用线程、异步还是坚持使用进程 非常感谢您为解决这一挑战而提出的任何想法 这是Pi大师的代码。我很好。我的服务器程序功能是基本的发送/接收握手,在进程中不运行连接时工作正常。错误发生在“data=conn.recv(1024).decode()”行,因为未定义“conn” 我一直在使用多处理器管理器和值,但它们似乎无法处理套接字的连接2个RPI(主/从)之间通过蓝牙套接字的Python双向通信,python,sockets,bluetooth,bidirectional,Python,Sockets,Bluetooth,Bidirectional,我正在尝试在两个RPI之间通过蓝牙套接字创建双向通信。我需要在主机上运行主程序,同时等待连接,然后能够在任何时候从任何一个设备推送消息,并在收到消息时中断其中一个设备上的主线程。收到的消息将对其他RPi执行操作。例如,根据从主设备到从设备发送的信息,打开主设备将打开从设备上的LED,反之亦然。我正在小步解决这个问题,目前正在等待连接,此时只需使用连接发送/接收输入 我的插座在发送/接收模式下正常工作。我现在正尝试进入多进程以等待连接,这是可行的,但是我失去了连接,因为据我所知,我无法在创建连接的
from multiprocessing import Pool
import socket
#----------- Processes -----------
def WaitSlaveConnection():
print("Waiting for slave")
hostMACAddress = 'XX:XX:XX:XX:XX:XX' # The MAC address of a Bluetooth adapter on the server.
port = 3
size = 1024
server_socket = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
server_socket.bind((hostMACAddress,port))
server_socket.listen(1)
conn, address = server_socket.accept() # accept new connection
print("Connection from: " + str(address))
return "Connected"
#############################
########### Main ###########
#############################
def server_program():
while True:
data = conn.recv(1024).decode()
if not data:
# if data is not received break
break
print("from connected user: " + str(data))
data = input(' -> ')
conn.send(data.encode()) # send data to the client
conn.close() # close the connection
if __name__ == '__main__':
app_pool = Pool(processes=20)
slave_conn = app_pool.apply_async(WaitSlaveConnection)
while True:
if slave_conn.get(timeout=None) == "Connected":
print("Yes")
server_program()
else:
print("Waiting for Slave")