树莓派和esp8266之间使用tcp协议通信
树莓派代码:
from flask import Flask, render_template
import socket
import threading app = Flask(__name__)
adc_value = 0 # 接收tcp数据
def receive_tcp_data(): global adc_value
# 从ESP8266接收ADC数据
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('0.0.0.0', 5000))
sock.listen(1)
while True:
conn, addr = sock.accept()
data = conn.recv(1024)
adc_value = 70 - int(data.decode())
# print(conn,addr,adc_value)
conn.close() @app.route('/')
def index():
global adc_value
# 在Web页面上显示ADC数据
return render_template('index2.html', adc_data=adc_value) # Web服务线程
def start_web_server():
app.run(host='0.0.0.0', port=8888) if __name__ == '__main__': # 启动接收tcp数据的线程
udp_thread = threading.Thread(target=receive_tcp_data)
udp_thread.daemon = True
udp_thread.start() # 启动接收tcp数据的线程
flask_thread = threading.Thread(target=start_web_server)
flask_thread.daemon = True
flask_thread.start() while True:
pass
index2.html
<!DOCTYPE html>
<html>
<head>
<title>ADC Data Display</title>
</head>
<body>
<h1>ADC Data: {{ adc_data }}</h1>
</body>
</html>
esp8266 使用arduino
#include <ESP8266WiFi.h>
#include <WiFiClient.h> const char* ssid = "litianmenzhenbu";
const char* password = "LT12345678";
const char* serverIP = "192.168.0.110"; // 树莓派的IP地址
const int serverPort = 5000; // 树莓派上Flask服务的端口号 void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
} Serial.println("Connected to WiFi"); // 连接到树莓派上的Flask服务
WiFiClient client;
if (client.connect(serverIP, serverPort)) {
Serial.println("Connected to server");
}
} void loop() {
// 模拟读取ADC值,此处可替换为实际读取ADC的代码
int adcValue = analogRead(A0); // 发送ADC值到树莓派上的Flask服务
WiFiClient client;
if (client.connect(serverIP, serverPort)) {
String data = String(adcValue);
client.print(data);
client.flush();
client.stop();
} delay(100);
}
树莓派和esp8266之间使用tcp协议通信的更多相关文章
- 《java入门第一季》之Socket编程通信和TCP协议通信图解
Socket编程通信图解原理: TCP协议通信图解
- Learning-Python【28】:基于TCP协议通信的套接字
什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...
- 【TCP】tcp协议通信中io
阻塞IO recv,接收数据,若没有,将阻塞, 当对方发数据来后,linux内核缓冲区得到数据, 内核数据复制到recv()调用所在的用户空间, 阻塞解除,进行下一步处理, 非阻塞IO 轮询调用rec ...
- python中基于tcp协议的通信(数据传输)
tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...
- Linux 高性能服务器编程——TCP协议详解
问题聚焦: 本节从如下四个方面讨论TCP协议: TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流 TCP状态转移过程:TCP连接的任意一 ...
- TCP协议三次握手、四次挥手
TCP的概述 TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192 ...
- tcp协议以及socket介绍
壹:tcp协议:可靠传输 一: 3次握手,建立链接:4次挥手,断开链接 3次握手,建立链接:图解 ,这样双向通路就建立完成了. 在建立链接时,并没有数据传输,所以中间两部可以合在一起,也就是3次握手, ...
- LabVIEW编程实例:如何通过TCP协议进行数据通信
对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议.UDP协议.DataSocket技术.甚至远程面板通信技术等方式进行通信. 下面通过一个简单的例子,演示在LabV ...
- TCP协议具体解释(上)
TCP协议具体解释 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的两方必须先建立链接.然后才干開始数据的读写.两方都必须为该链接分 ...
- 第3章 TCP协议详解
第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...
随机推荐
- powershell配置自动补全
powershell配置自动补全 一.需求: 看到老师上课用mac命令行有自动补全功能,发现真的爽.但是自己的windows powershell不能使用自动补全功能.有了需求,就想找到能完成目前的任 ...
- OpenCV开发笔记(七十七):相机标定(二):通过棋盘标定计算相机内参矩阵矫正畸变摄像头图像
前言 通过相机图片可以识别出棋盘角点了,这时候我们需要通过角点去计算相机内参矩阵,通过上篇得知畸变的原理,所以我们尽可能要全方位都能获取标定图片,全方位意思是提供的多张图综合起来基本覆盖了相机所有 ...
- 我为什么使用Linux做开发
系统选择 目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵.当然这是我的原因不是苹果的原因,我最早使用Linu ...
- 2.String类能被继承吗
2.String类能被继承吗 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的. 拓展 String的底层是一个用private和final修饰的char数组.fina ...
- 24_用Qt和FFmpeg实现简单的YUV播放器
前面文章FFmpeg像素格式转换中我们使用FFmpeg实现了一个像素格式转换工具类,现在我们就可以在Qt中利用QImage很容易的实现一个简单的YUV播放器了. 播放器功能很简单,只有播放.暂停和停止 ...
- 5、Azure Devops之Azure Test Plans篇
1.什么是Azure Test Plans Azure Test Plans是提供给团队测试人员,管理测试计划.测试套件.测试用例的部件.管理测试计划.测试用例的定义,包括请求类型定义.参数定义,执行 ...
- 优雅的处理挂载window上的函数可能不存在的情况
背景 在做一个Web JS SDK(A)时,内部会用到另一个Web JS SDK(B)的方法.(文中后续用A/B代替两者) B通常会提供Script和NPM包两种使用方式 使用npm pkg的缺点 增 ...
- uni-app开发经验分享二十二: uni-app大转盘思路解析
最近在研究uni-app,制作了一个很有意思的集合项目demo,这里给大家分享下大转盘的前端设计思路 需求案例:大转盘抽奖 线上demo查看: 案例效果: 制作思路: 前端大转盘使用css3动画来做, ...
- dynatrace统计sql执行时间要考虑网络延时
对一个系统的功能环境做压测,响应时间特别慢,开发环境却很快. 原因是,开发的应用服务器在北方,功能的应用服务器在南方,数据库服务器共用一个,在北方. 北方的应用调北方的数据库,响应时间2s,互相pin ...
- multisim中常见的显示器
multisim中常见的显示器 1.实验原理 multisim中做实验仿真一般需要各种各样的仿真器来模拟实验结果.这里列举几种比较常见的显示器以便后面快速选择. 2.实验操作 (1)LED[二极管] ...