多台树莓派(主机)通信

在做无人机实验时,有个任务需要 两台无人机无人机与小车 进行通信。

由于我们飞机上用了树莓派,相当于一台电脑,索性选用Socket网络编程。

条件:树莓派、局域网(手机热点或路由器)。需要通信的两台树莓派接入同一个局域网。

如若现场没有网络,可将树莓派配置为无线路由器,发射wifi。网上很多教程,注意一点是树莓派需要先用网线接入路由器再配置。

发送数据:

# -*- coding:utf-8 -*-
import time
import socket
import numpy as np


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('10.31.17.190', 6666))  #绑定ip和端口号(IP为发送数据的树莓派ip,端口号自己指定)
s.listen(5)
c, address = s.accept()      #等待别的树莓派接入

start_time = time.time()

while(True):

    if(time.time() - start_time < 5):
        msg = '1'
    else:
        msg = '2'

    print(msg)

    c.send(msg.encode('utf-8'))   #编码

    if(msg == '2'):
        break

s.close()

接收数据:

# -*- coding:utf-8 -*-
import socket


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.31.17.190', 6666))   #链接刚刚绑定的ip和端口号

while(True):
    msg = s.recv(1)    #接收数据(字节数)
    msg =  msg.decode('utf-8')   #解码

    print('recv:', msg)

    if(msg =='2'):
        break

s.close()

 

  • 10
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP协议是Internet的核心协议之一,它提供了可靠的、面向连接的数据传输服务。在树莓派上使用Python实现TCP协议与主机之间通信的过程如下: 1. 导入必要的Python库,如socket库。 2. 创建一个TCP socket对象,指定IP地址和端口号。 ```python import socket # 创建TCP socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 指定IP地址和端口号 host = '192.168.1.100' port = 12345 server_socket.bind((host, port)) ``` 3. 开始监听客户端连接请求。 ```python # 监听客户端连接请求 server_socket.listen(5) ``` 4. 接收客户端连接请求,并建立连接。 ```python # 接收客户端连接请求,并建立连接 client_socket, addr = server_socket.accept() ``` 5. 接收客户端发送的数据,并发送响应数据。 ```python # 接收客户端发送的数据 data = client_socket.recv(1024) # 发送响应数据 client_socket.send('Hello, World!'.encode()) ``` 6. 关闭连接。 ```python # 关闭连接 client_socket.close() server_socket.close() ``` 完整的代码示例: ```python import socket # 创建TCP socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 指定IP地址和端口号 host = '192.168.1.100' port = 12345 server_socket.bind((host, port)) # 监听客户端连接请求 server_socket.listen(5) # 接收客户端连接请求,并建立连接 client_socket, addr = server_socket.accept() # 接收客户端发送的数据 data = client_socket.recv(1024) # 发送响应数据 client_socket.send('Hello, World!'.encode()) # 关闭连接 client_socket.close() server_socket.close() ``` 需要注意的是,在实际使用中,还需要考虑异常情况的处理,如客户端断开连接等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值