在做无人机实验时,有个任务需要 两台无人机 或 无人机与小车 进行通信。
由于我们飞机上用了树莓派,相当于一台电脑,索性选用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()