python socket双向通信_两个RPI(主/从)之间通过蓝牙插座进行Python双向通信

我正在尝试通过蓝牙插座在2个RPI之间创建双向通信。我需要在主机上运行主程序,同时等待连接,然后有能力在任何时候从任何设备推送消息,并中断主线程在任何时候收到。收到的消息将对另一个RPi执行操作。E、 g.打开主机将根据从主机发送到从设备的信息打开从设备上的LED,反之亦然。我正在处理这个小步骤,目前正在等待连接,在这一点上只使用连接发送/接收输入。

非常感谢你为解决这一挑战而提出的任何想法。

这是圆周率大师的密码。奴隶连接良好。我的server_程序函数是基本的发送/接收握手,当进程中没有运行连接时,它工作得很好。错误发生在“data=连接接收(1024).decode(),因为未定义'conn'。

我一直在玩多处理器管理器和值,但它们似乎不能处理套接字的连接。

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")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值