树莓派和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协议通信的双方必须先建立连接,完成数据交换后,通信双 ...
随机推荐
- tag 转 分支 branch
获得最新 git fetch origin 获取tag git tag tag 转 branch git branch newbranch vtest.1.0.FINAL --- git branch ...
- MYSQL 主从不一致的原因分析
数据库作为存储数据的组件,数据的一致性一定是要保证的前提,今天给出两个场景来分析数据不一致的原因. binlog同步模式导致主从不一致 在MYSQL 中主库向从库同步数据是利用binlog记录修改操作 ...
- C#条码识别的解决方案(ZBar)
简介 主流的识别库主要有ZXing.NET和ZBar,OpenCV 4.0后加入了QR码检测和解码功能.本文使用的是ZBar,同等条件下ZBar识别率更高,图片和部分代码参考在C#中使用ZBar识别条 ...
- ADS1299芯片datasheet 重点解析
一 START和DRDY的关系 start必须要至少提前拉高2个时钟,才会产生DRDY信号,这个非常关键,也是重心所在.很多遗漏的就不会有DRDY信号出来了. 二 START和DRDY的时序图 sta ...
- 2.4g无线私有协议透传方案特色梳理
为什么? 在2.4G这个频段,的确有待你拥挤,有提供高速上网的wifi,有提供短距离数据和云音乐传输的bt,还要各种xx的东西.在wifi和bt无法覆盖的领域,又出来一个2.4G私有协议传输芯片,这 ...
- nginx和tomcat 反向代理 部署实例 直接运行
1 前言 1.1 目的 为了正确的部署"ngix+memcached"特编写此部署手册,使安装人员可以通过部署手册知道如何部署系统,也为需要安装该系统的安装人员正确.快速的部署本系 ...
- vmware虚拟机共享文件夹显示不出来的解决办法
今天在虚拟机里部署测试环境时,遇到一个问题,就是在vmware设置里明明共享了文件夹,但是在CentOS里却看不到共享的文件夹 环境 宿主机:MacBook Pro 虚拟机:vmware 15 虚拟机 ...
- [极客大挑战 2019]web部分题解(sql部分已完结,其他部分正在更新,出去吃个饭先)
[极客大挑战 2019]BabySQL 打开环境后有登录界面◕‿◕ 一眼注入,后先试试万能密码: username:admin' or '1'='1 password:1 GG,出大问题,我就会这一招 ...
- 记录-关于console你不知道的那些事
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 了解 console ● 什么是 console ? console 其实是 JavaScript 内的一个原生对象 内部存储的方法大部分 ...
- Python 生成二维码的几种方式、生成条形码
一: # 生成地维码 import qrcode import matplotlib.pyplot as plt from barcode.writer import ImageWriter 创建QR ...