掌控板micropython编程实现网页实时显示板载光线传感器的值

掌控板micropython编程实现网页实时显示板载光线传感器的值

一、AJAX简介

AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页内容的技术。它允许Web页面与服务器进行异步数据交换,这意味着可以在后台与服务器通信,而用户可以继续与页面交互,不会感受到任何延迟或中断。

(一)AJAX的关键组成部分:

  1. JavaScript:用于编写客户端脚本,控制整个AJAX请求的过程。
  2. XMLHttpRequest:这是一个浏览器内置的对象,用于在后台与服务器进行数据交换。尽管名字中有XML,但它可以用于发送和接收各种格式的数据,包括XML、JSON、HTML、纯文本等。
  3. 异步:请求是异步发送的,这意味着JavaScript代码可以在等待服务器响应的同时继续执行,不会阻塞用户界面。

(二)AJAX的工作流程:

  1. 创建XMLHttpRequest对象:JavaScript代码首先创建一个XMLHttpRequest对象。
  2. 初始化请求:使用open方法初始化一个到服务器的请求,指定请求的类型(GET或POST)、URL以及是否异步处理。
  3. 设置请求完成后的回调函数:通过设置onreadystatechange事件处理函数,定义当请求状态改变时应该执行的操作。通常在这个回调函数中检查请求是否完成,并处理服务器的响应。
  4. 发送请求:使用send方法向服务器发送请求。如果是GET请求,数据可以附加在URL中;如果是POST请求,数据通常作为send方法的参数发送。
  5. 处理响应:服务器处理请求并返回数据后,JavaScript代码可以获取这些数据,并根据需要更新网页的部分内容。

(三)AJAX的优点:

  • 改善用户体验:用户在与网页交互时不会感受到延迟,因为页面不需要完全重新加载。
  • 减少服务器负载:只传输必要的数据,而不是整个页面,可以减少服务器的处理负担。
  • 提高应用性能:通过异步请求,可以实现更流畅的用户界面和更快的响应时间。

(四)AJAX的常见用途:

  • 表单提交:在不重新加载页面的情况下提交表单数据。
  • 动态内容更新:例如,在社交媒体平台上动态加载新的帖子或评论。
  • 实时数据展示:如股票价格更新、天气信息等。
  • Web应用功能增强:如搜索建议、地图服务等。

二、掌控板micropython编程实现网页实时显示板载光线传感器的值

Web server on ESP32: How to update and display sensor values? | Circuits4you.com

给出了用于esp32在arduino中编程实现在网页上实时显示传感器数值的示例。

本文给出了掌控板micropython编程实现网页实时显示板载光线传感器的值,并在掌控板的OLED同步显示。代码如下:

import network
import socket
from machine import ADC, Pin
from machine import Pin, SoftI2C, ADC
from ssd1106 import SSD1106_I2C# 设置你的SSID和密码
ssid = 'TP-LINK_FF40'
password = '0268'# 连接到WiFi
def connect_to_wifi():wlan = network.WLAN(network.STA_IF)wlan.active(True)if not wlan.isconnected():print('Connecting to network...')wlan.connect(ssid, password)while not wlan.isconnected():passprint('Network config:', wlan.ifconfig())# 读取ADC值
adc = ADC(Pin(39))  # ESP32的光线传感器对应GPIO39# 初始化I2C通信
i2c = SoftI2C(scl=Pin(22), sda=Pin(23))# 初始化OLED显示屏
oled = SSD1106_I2C(128, 64, i2c)# 创建Web服务器响应
def web_page():html = """<html><head><title>ESP32 AJAX Light Sensor Value</title><script>function updateADC() {var xhr = new XMLHttpRequest();xhr.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) {document.getElementById("adcValue").innerHTML = this.responseText;}};xhr.open("GET", "/readADC", true);xhr.send();}setInterval(function(){ updateADC(); }, 1000);</script></head><body><h1>ESP32 AJAX Light Sensor Value</h1><p>Light Sensor Value: <span id="adcValue">0</span></p></body></html>"""return html# 启动Web服务器
def start_server():connect_to_wifi()s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('', 80))s.listen(5)while True:conn, addr = s.accept()print('Got a connection from %s' % str(addr))request = conn.recv(1024)print('Content = %s' % str(request))request = str(request)if request.find('/readADC') == 6:adc_value = adc.read()response = str(adc_value)else:response = web_page()conn.send('HTTP/1.1 200 OK\n')conn.send('Content-Type: text/html\n')conn.send('Connection: close\n\n')conn.sendall(response)conn.close()# 清除OLED屏幕oled.fill(0)  # 用0填充屏幕,即清除屏幕oled.text("Lightvalue:"+response , 0, 20)  # 显示模拟值oled.show()start_server()

在thonny中,运行程序,在Shell中显示掌控板的IP地址是192.168.1.102。
在这里插入图片描述

在浏览器中输入IP地址,网页上就可以实时显示掌控板板载光线传感器的数值了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 常用操作指令大揭秘(下)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 &#x1f4af;…

Spring源码(十二):Spring MVC之Spring Boot

本篇将详细讨论Spring Boot 的启动/加载、处理请求的具体流程。我们先从一个简单的Spring Boot项目日志开始分析&#xff08;这里假设读者已经仔细阅读完了前面的文章&#xff0c;且对Spring源码有一定深度的了解&#xff0c;否则会看得一脸懵逼&#xff09;。 本文为2024重置…

【C语言刷力扣】13.罗马数字转整数

题目&#xff1a; 解题思路: 倒序遍历&#xff0c;若当前字符代表的数字比上一字符代表的数字小&#xff0c;即减去当前字符数字。 时间复杂度&#xff1a; 空间复杂度&#xff1a; int romanToInt(char* s) {int ans 0;int low 0;int num[26];num[I - A] 1;num[V - A]…

【Unity Bug 随记】unity version control 报 xx is not in a workspace.

可能原因是更改了仓库或者项目名称。 解决办法就是重置Unity Version Control&#xff0c;去Hub disconnect 然后重新connect cloud和UVC UVC可能连不上&#xff0c;直接进入项目就行&#xff0c;打开版本管理标签会让你重新连工作区&#xff0c;选择你的仓库和工作区 然后In…

springboot读取modbus数据

1、引入依赖 jlibmodbus <dependency><groupId>com.intelligt.modbus</groupId><artifactId>jlibmodbus</artifactId><version>1.2.9.7</version> </dependency> 2、数据获取 public String processData(String ip) {tr…

LabVIEW中坐标排序与旋转 参见附件snippet程序

LabVIEW中坐标排序与旋转 参见附件snippet程序LabVIEW中坐标排序与旋转 参见附件snippet程序 - 北京瀚文网星科技有限公司 在LabVIEW中处理坐标排序的过程&#xff0c;尤其是按顺时针或逆时针排列坐标点&#xff0c;常见的应用包括处理几何形状、路径规划等任务。下面我将为您…

51单片机应用开发(进阶)---定时器应用(电子时钟)

实现目标 1、巩固定时器的配置流程&#xff1b; 2、掌握按键、数码管与定时器配合使用&#xff1b; 3、功能1&#xff1a;&#xff08;1&#xff09;简单显示时间。显示格式&#xff1a;88-88-88&#xff08;时-分-秒&#xff09; 4、功能2&#xff1a;&#xff08;1&#…

FPGA实现PCIE采集电脑端视频转SFP光口万兆UDP输出,基于XDMA+GTX架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案10G Ethernet Subsystem实现万兆以太网物理层方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存UDP视频组包发送UDP协议栈MAC…

使用 unicorn 和 capstone 库来模拟 ARM Thumb 指令的执行(一)

import binascii import unicorn import capstonedef printArm32Regs(mu):for i in range(66,78):print("R%d,value:%x"%(i-66,mu.reg_read(i)))def testhumb():CODE b\x1C\x00\x0A\x46\x1E\x00"""MOV R3, R0 的机器码&#xff1a;0x1C 0x00&#xf…

git重置的四种类型(Git Reset)

git区域概念 1.工作区:IDEA中红色显示文件为工作区中的文件 (还未使用git add命令加入暂存区) 2.暂存区:IDEA中绿色(本次还未提交的新增的文件显示为绿色)或者蓝色(本次修改的之前版本提交的文件但本次还未提交的文件显示为蓝色)显示的文件为暂存区中的文件&#xff08;使用了…

第三十一天|贪心算法| 56. 合并区间,738.单调递增的数字 , 968.监控二叉树

目录 56. 合并区间 方法1&#xff1a;fff 看方法2&#xff1a;fff优化版 方法3&#xff1a; 738.单调递增的数字 968.监控二叉树&#xff08;贪心二叉树&#xff09; 56. 合并区间 判断重叠区间问题&#xff0c;与452和435是一个套路 方法1&#xff1a;fff 看方法2&am…

LeetCode 热题100(八)【二叉树】(3)

目录 8.11二叉树展开为链表&#xff08;中等&#xff09; 8.12从前序与中序遍历序列构造二叉树&#xff08;中等&#xff09; 8.13路径总和III&#xff08;中等&#xff09; 8.14二叉树的最近公共祖先&#xff08;中等&#xff09; 8.15二叉树中的最大路径和&#xff08;困…

AutoSAR CP DoIP规范导读

主要功能和用途 诊断通信协议实现 遵循标准&#xff1a;遵循ISO 13400 - 2标准&#xff0c;实现了诊断通信在IP网络上的传输协议和网络层服务&#xff0c;包括数据封装、传输、路由等功能。 多种消息支持 车辆识别与公告&#xff1a;能够进行车辆识别请求和响应&#xff0c;…

Simulink中Matlab function使用全局变量

目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言 最近发现了之前仿真中的一个问题&#xff0c;记录一下备忘。 Matlab function中有时候需要用到全局变量&#xf…

屏幕缩放后截屏图片尺寸数字偏大导致前端DOM尺寸设置失真问题

如果显示器的尺寸缩放&#xff0c;而不是100%的话&#xff0c;利用截屏软件截取屏幕中的区域&#xff0c;截取时读取到的区域尺寸&#xff0c;就会失真&#xff1b;如果使用这个尺寸去设置网页中的DOM&#xff0c;则Dom的尺寸也会跟着失真。 比如&#xff0c; 如果使用失真…

蓝桥杯每日真题 - 第7天

题目&#xff1a;&#xff08;爬山&#xff09; 题目描述&#xff08;X届 C&C B组X题&#xff09; 解题思路&#xff1a; 前缀和构造&#xff1a;为了高效地计算子数组的和&#xff0c;我们可以先构造前缀和数组 a&#xff0c;其中 a[i] 表示从第 1 个元素到第 i 个元素的…

给阿里云OSS绑定域名并启用SSL

为什么要这么做&#xff1f; 问题描述&#xff1a; 当用户通过 OSS 域名访问文件时&#xff0c;OSS 会在响应头中增加 Content-Disposition: attachment 和 x-oss-force-download: true&#xff0c;导致文件被强制下载而不是预览。这个问题特别影响在 2022/10/09 之后新开通 OS…

电脑浏览器打不开网页怎么办 浏览器无法访问网页解决方法

我们在使用电脑的时候&#xff0c;使用浏览器是经常的&#xff0c;很多用户在点开浏览器时&#xff0c;却遇到浏览器无法访问网页的情况。那么电脑浏览器打不开网页是什么原因呢&#xff1f;今天小编就给大家分享几个常见的原因和具体的解决方法&#xff0c;希望能对大家有所帮…

(干货)Jenkins使用kubernetes插件连接k8s的认证方式

#Kubernetes插件简介 Kubernetes 插件的目的是能够使用 Kubernetes 配合&#xff0c;实现动态配置 Jenkins 代理&#xff08;使用 Kubernetes 调度机制来优化负载&#xff09;&#xff0c;在执行 Jenkins Job 构建时&#xff0c;Jenkins Master 会在 kubernetes 中创建一个 Sla…

C语言 | Leetcode C语言题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; int nextGreaterElement(int n){int x n, cnt 1;for (; x > 10 && x / 10 % 10 > x % 10; x / 10) {cnt;}x / 10;if (x 0) {return -1;}int targetDigit x % 10;int x2 n, cnt2 0;for (; x2 % 10 < targetDigit; x2…