前面一节我们实现了在安卓系统中同时使用wifi和4G,现在我们要解决的问题是实现信号中转的具体功能。网络结构如下:
这里使用socket编程在公网server与手机间建立tcp连接,同时在手机内部两个不同网络的python程序间也建立tcp连接,最后连接wifi的python程序通过UDP向Tello发送指令。Socket结构如下图所示:
如上图所示,手机中同时运行两个python程序,一个python程序使用QPython(可以直接运行python程序的安卓APP)执行,使用4G网络与公网服务器交互,另一个python程序使用LPython(linux内运行的python)执行,使用wifi网络与Tello交互,QPython与LPython之间使用127.0.0.1建立TCP连接。
这里我们先实现基本的TCPClient与TCPServer通信
(QPython TCP Server)
import socket
import os
import sys
import struct
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('127.0.0.1', 9999)) //绑定IP和端口
s.listen(10) //最大队列数
while True:
sock, addr = s.accept() //开始监听
buf = sock.recv(1024) //读取收到的数据
buf = buf.decode() //byte转str
print('recv ' + str(buf))
(LPython TCP Client)
import socket
import os
import sys
import struct
s = socket.socket()
sk.connect(('127.0.0.1',9999)) //连接服务端
s.send('hi') //直接发送一个信息
上述代码中,TCP Server运行在QPython(安卓系统直接运行python程序,使用的是4G网络),TCP Client运行在LPython(linux系统中运行的python程序,使用的是WIFI网络),运行结果如下图所示:
综上,我们使用几行简单的python代码实现了同一手机里两个不同网络python程序信息的交互。这一节就先到这里,下面我们要做的就是设计简单完备的信息传递模式,实现服务器到Tello无人机的双向信息通道。
作者: 布兰姥爷, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3887969.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
curton 2019-5-22 08:13
curton 2019-5-19 12:25
测量无处不在 2019-5-17 12:47