树莓派和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协议通信的双方必须先建立连接,完成数据交换后,通信双 ...
随机推荐
- matting tool by cs - 视频扣绿幕 1.4 - 软件推荐
本地软件,还没用,先留个档,试试 第一个下载还套了个广告壳,醉了,但是能用 https://www.123pan.com/s/X3jA-POMQv 这个装了,是原版,没套壳 https://pan.b ...
- 音标 舌侧音 /l/ 的发音 - 英语
音标 舌侧音 /l/ 的发音 这个音标 首先确定下 就是一个音 发 了(注意 发音方式不是中文的了,是英文的了) 注意发音方式很重要 中文 '了',重点在 偏鼻音(发射方向为前上方) 英文 '了',重 ...
- Java/Kotlin 实现控制台输出日志保存到文件
原文:Java/Kotlin 实现控制台输出日志保存到文件 | Stars-One的杂货小窝 之前开发的几款软件,用户用着的过程中,偶尔会存在报错问题,想保留一份日志出来,之后可由用户发过来,进行问题 ...
- Github+picGo搭建图床(搭配Typora)
使用Github+picGo搭建图床,保姆级教程来了 - 转载自知乎 (zhihu.com) 1. 注册一个Github账号 首先你需要一个github账号,如果没有的话,先注册. github官网地 ...
- -Dmaven.multiModuleProjectDirectory system propery is not set解决方案
myeclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery ...
- vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.是什么 权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权,请求的发起可 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Row/Column)
前言 HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局.相对布局.网格布局等.这些组件帮助开发者以简单和灵活的方式管理和组织应用程序中的视图,并支持多种不同的设备屏幕尺寸和方 ...
- 开发必会系列:hibernate事务
一 事务定义及特性 1.数据库事务的定义:数据库事务(Database Transaction) 是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执 ...
- 任何样式,javascript都可以操作,让你所向披靡
前言 习惯了在 css 文件里面编写样式,其实JavaScript 的 CSS对象模型也提供了强大的样式操作能力, 那就随文章一起看看,有多少能力是你不知道的吧. 样式来源 客从八方来, 样式呢, 样 ...
- MySQL 汉字字段 拼音排序
原数据 排序后 SELECT c1 FROM test ORDER BY CONVERT ( c1 USING gbk )