两个覆盆子相互沟通

时间:2015-12-31 14:53:06

标签: python raspberry-pi

我准备通过python程序准备两个覆盆子相互交谈。在开始之前,我会理解哪种方法最简单。更确切地说,Raspberry A接收GPIO的输入。 python代码读取GPIO的状态,并向Rasberry B发送一个由其他python代码读取的输入。 Raspberry B python代码向Raspberry A发送一条消息,用于执行某些操作。两个覆盆子在同一个网络上。 如何通过两个覆盆子之间的网络实现通信?我应该使用什么来通过网络发送和接收输入? 非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

在Raspberry B上创建TCP套接字服务器,并在Raspberry A上创建相应的TCP套接字客户端。您将找到大量示例和教程,详细说明如何执行此操作。阅读有关套接字类型和标志的python文档。

基本上你必须导入套接字库(导入套接字)并创建一个套接字对象,如下所示:

History.js lib

在服务器端,您将服务器自己的IP地址和任意未使用的端口绑定到套接字,然后开始侦听传入的请求:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

在客户端,您首先创建一个相应的套接字,然后将其连接到侦听远程服务器的IP地址和端口。

sock.bind('192.168.1.35', 9050)
sock.listen(1)  # allow only 1 connection
connection, client_address = server_socket.accept()
try:
  # Receive the data
  while True:
    data = connection.recv(128)   # the buffer in this example is 128 bytes
    if data:
    :
    : do something with the received data and
    : send the modified data back as response
    :
    connection.sendall(data)
    else:
      break

finally:
  # Clean up the connection
  connection.close()

您可以循环监控GPIO并使用sendall发送数据。确保服务器端的接收缓冲区足以容纳您发送的数据。

sock.connect('192.168.1.35', 9050)  # connect to remote server
你知道,你可以关闭连接:

# Send data
socket.sendall(data)

# Look for the response
data = client_socket.recv(128)   # Make sure the buffer is big enough

只要您不需要异步通信或一次连接多个连接,这基本上就是您的通信所需的全部内容。由于我不知道你如何监控GPIO以及你想对回复做什么,所以我没有在客户端进一步了解详情。

相关问题