树莓派代码:

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协议通信的更多相关文章

  1. 《java入门第一季》之Socket编程通信和TCP协议通信图解

    Socket编程通信图解原理: TCP协议通信图解

  2. Learning-Python【28】:基于TCP协议通信的套接字

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  3. 【TCP】tcp协议通信中io

    阻塞IO recv,接收数据,若没有,将阻塞, 当对方发数据来后,linux内核缓冲区得到数据, 内核数据复制到recv()调用所在的用户空间, 阻塞解除,进行下一步处理, 非阻塞IO 轮询调用rec ...

  4. python中基于tcp协议的通信(数据传输)

    tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...

  5. Linux 高性能服务器编程——TCP协议详解

    问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一 ...

  6. TCP协议三次握手、四次挥手

    TCP的概述 TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192 ...

  7. tcp协议以及socket介绍

    壹:tcp协议:可靠传输 一: 3次握手,建立链接:4次挥手,断开链接 3次握手,建立链接:图解 ,这样双向通路就建立完成了. 在建立链接时,并没有数据传输,所以中间两部可以合在一起,也就是3次握手, ...

  8. LabVIEW编程实例:如何通过TCP协议进行数据通信

    对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议.UDP协议.DataSocket技术.甚至远程面板通信技术等方式进行通信. 下面通过一个简单的例子,演示在LabV ...

  9. TCP协议具体解释(上)

     TCP协议具体解释 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的两方必须先建立链接.然后才干開始数据的读写.两方都必须为该链接分 ...

  10. 第3章 TCP协议详解

    第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...

随机推荐

  1. spingboot打造教育平台(谷粒学院课程笔记)

    第一单fqb  申明,项目的框架技术架构,前端运行时node   后端框架spring  开发前准备:mysbatis官网随时看文档,IDEa 202编释器2  环境配置,idea配置一下mavem路 ...

  2. pip 查看某个包有哪些版本并升级

    查看某个包有哪些版本 pip install xxx== 升级包 pip install xxx==1.1

  3. Nginx 打不开 80端口占用 netstat -aon|findstr "80" 看有没有80占用 有的话 net stop http

    Nginx 打不开 80端口占用 netstat -aon|findstr "80" 看有没有80占用 有的话 net stop http

  4. stm32 中断处理函数注意事项

    一 前记 最近在公司的一个项目中碰到一个解决了定位很久的 bug , bug 找到的时候发现犯了很低级的错误--在中断处理函数中调用了 printf 函数,因为中断处理函数的调用了不可重入函数,导致接 ...

  5. IDEA或Android Studio用书签功能标识代码

    原文地址:IDEA或Android Studio用书签功能标识代码 | Stars-One的杂货小窝 在之前的维护工作中,有时候翻源码的时候,找到了一个文件的某行关键,之后一层层进去之后,又突然不记得 ...

  6. day07-IO流应用02

    Java坦克大战07 8.IO流应用02 8.3记录退出游戏时敌人坦克坐标/方向,存盘退出 8.3.1思路分析 在Recorder类中,增加一个Vector集合,用来接收从MyPanel类中传入的en ...

  7. github拉项目显示timeOut

    参考:https://blog.csdn.net/qq_37424778/article/details/132018804 自己尝试在github上拉项目,但是报错LibreSSL SSL_read ...

  8. 12_采样格式&音频重采样

    采样格式 通过前面学习我们知道FFmpeg和SDL都有自己的采样格式的表达式,那么他们都表示什么意思呢? FFmpeg的采样格式的表达式: enum AVCodecID { ...... AV_COD ...

  9. getClass()方法----getName()方法

    public class Test { public static void main(String[] args) { Person p = new Person(1,"刘德华" ...

  10. CodeForces Hello 2024 个人题解(A~C)

    A. Wallet Exchange 时间限制: 1秒 内存限制: 256兆 输入: 标准输入 输出: 标准输出 Alice and Bob are bored, so they decide to ...