WEB 手柄 http通信,mcu端解析代码 2024/7/23 日志

news2024/11/14 2:48:05

WEB 手柄

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>WEB遥控器</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
        overflow-y: hidden;
        overflow-x: hidden;

    }


    body {
        background-color: #09f811;
        color: aliceblue;

    }

    #play {

        transform-origin: top left;
        position: absolute;
        



    }
   
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) {
    #play {
        transform: scale(0.5);
    }
}


@media only screen 
and (min-device-width : 481px) 
and (max-device-width : 768px) {
    #play {
        transform: scale(0.7);
    }
}


@media only screen 
and (orientation : portrait) 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
    #play {
        transform: scale(0.8);
    }
}


@media only screen 
and (orientation : landscape) 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
    #play {
        transform: scale(0.9);
    }
}


@media only screen 
and (min-width : 1224px) {
    #play {
        transform: scale(1);
    }
}

    #box {

        gap: 0;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(3, 1fr);


    }



    #box3 {
        gap: 0;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(3, 1fr);


    }





    div[id^="t"] {
        border-radius: 25px;
        margin: 10px;
        text-align: center;
        width: 100px;
        height: 100px;
        background-color: black;
        font-size: 50px;
        display: flex;
        align-items: center;
        justify-content: center;

    }

    #t1 {
        grid-column: 3;
        grid-row: 2;
        transform: rotate(90deg)
    }

    #t2 {
        grid-column: 2;
        grid-row: 2;
    }

    #t3 {
        grid-column: 1;
        grid-row: 2;
        transform: rotate(90deg);

    }

    #t4 {
        grid-column: 2;
        transform: rotate(90deg);

    }

    #t5 {
        transform: rotate(90deg);
        grid-column: 2;
        grid-row: 3;



    }


    #t6,
    #t7 {
        font-size: 30px;
        transform: rotate(90deg);
    }


    #t8 {
        grid-column: 3;
        grid-row: 2;
        transform: rotate(90deg);
    }

    #t9 {
        grid-column: 2;
        grid-row: 2;
    }

    #t10 {
        grid-column: 1;
        grid-row: 2;
        transform: rotate(90deg);
    }

    #t11 {
        grid-column: 2;
        transform: rotate(90deg);
    }

    #t12 {
        grid-column: 2;
        grid-row: 3;
        transform: rotate(90deg);
    }

    div[id^="t"]:active {
        transform:scale(0.2);
       
        background-color: rgb(243, 94, 8);
  
       
    }



  

    #wifi {
        position: absolute;
        background-color: black;
        border-radius: 25px;
        font-size: 50px;
        width: 50px;
        height: 50px;
        right: 0;
        
      
    }

    #wifi:active {
        transform: scale(0.5);
       


    }

    #set {
        display: none;
        height: 100vh;
        position: relative;
        z-index: 2;
        background-color: black;

    }

    #but {
        position: absolute;
        width: 100vw;
        height: 5vh;
        bottom: 0;
    }

    #but:active {
        transform: scale(0.4);
       
    }

    #MQTT {

        width: 100vw;
        height: 50vh;

    }

    #diva {
        display: flex;

    }

    #LED {
        margin: 0;
        padding: 0;


    }

    #dy {
        display: none;




    }

    #dvfas {
        display: none;
    }

    #about {
        height: 5vh;
        width: 100vw;
        position: absolute;
        bottom: 0;
  
    }
    #about>p{
       
        transform: rotate(90deg);
    }
   
    #abouta{
        position: absolute;
        display: block;
        width: 100vw;
        background-color: white;
        height: 100vh;
        display: none;
        color: black;
       
    }
    #abouta>p{
        transform-origin: 50vw 50vw;
        transform: rotate(90deg);
        position: absolute;
        top:5vh;
        right: 80vw;

        
    }
    #abouta>p:hover{
       
       color: rgba(241, 8, 8, 0.835);
    }
   
</style>

<body>

    <div id="play">
        <div id="box">
            <div id="t1">↑</div>
            <div id="t2">⚪</div>

            <div id="t3">↓</div>

            <div id="t4">←</div>
            <div id="t5">→</div>
        </div>
        <div id="box2">
            <div id="t6">启动</div>
            <div id="t7">暂停</div>
        </div>
        <div id="box3">
            <div id="t8">上</div>
            <div id="t9">⚪</div>

            <div id="t10">下</div>

            <div id="t11">左</div>
            <div id="t12">右</div>
        </div>

    </div>
    <button id="about"><p>关于</p></button>
    <div id="abouta"><p>点击空白返回<br>联系我们:<br>邮箱
<br>祝福您生活愉快!</p></div>
    <div id="wifi" >
        ★
    </div>
   
    <div id="set" >
        <h1>MQTT管理</h1>
        <div id="MQTT">
            <form class="fr">
                <span>MQTT服务器:</span>
                <input type="text" id="mqttserver" name="dz" placeholder="填入服务器地址"><br>
                <span>MQTT端口号:</span>
                <input type="text" id="pot" name="port" placeholder="填入端口号"><br>

                <span>MQTT密匙码:</span>
                <input type="text" id="pasa" name="pass" placeholder="填入MQTT连接密匙">
                <button type="button" onclick="connected()">连接</button>
            </form>
            <div id="diva">
                <span>连接状态:</span>
                <svg width="30" height="30" viewBox="0 0 100 100">
                    <circle id="LED" cx="30" cy="30" r="26" stroke="black" stroke-width="3" fill="red" />连接中...
                </svg>

            </div>
            <p id="ts"></p>
            <br><i id="jsre"></i>
            <div id="dy">
                <form>
                    <span>设置订阅主题:</span>
                    <input type="text" id="subqq" name="subqq" placeholder="填入订阅主题">
                    <button type="button" onclick="subee()">订阅</button>
                </form>
                <p id="subts"></p>
            </div>
            <div id="dvfas">
                <form>
                    <span>设置发布主题:</span>
                    <input type="text" id="pubqq" name="pubqq" placeholder="填入需要发布的消息">
                    <button type="button" onclick="pubee()">发布</button>
                </form>
                <p id="pubts"></p>

            </div>




        </div>
        <button id="but">返回</button>
    </div>

    <script>
        for (var i = 1; i <= 12; i++) {
            document.getElementById("t" + i).addEventListener("click", function () {
                var xhr = new XMLHttpRequest();
                xhr.open("GET", "/?cmd=" + this.id, true);
                xhr.send();
                var str = document.getElementById(this.id).textContent;
                console.log(str);
            })
        }

        connected = () => {
            var geta = document.getElementById('mqttserver').value;
            var getb = document.getElementById('pot').value;
            var getc = document.getElementById('pasa').value;
            if (geta == "" || getb == "" || getc == "") {
                document.getElementById("ts").innerHTML = "请输入完整";
                return;
            };
            console.log(geta);
            console.log(getb);
            console.log(getc);
            var xhr = new XMLHttpRequest();
            var str = "/MQTT?dz=" + geta + "&port=" + getb + "&pass=" + getc;
            xhr.open("GET", str, false);
            xhr.send();
            if (xhr.status == 200) {
                var LED = document.getElementById("LED");
                LED.setAttribute("fill", "green");
                document.getElementById("jsre").innerText = "恭喜您,成功连接MQTT!";
                document.getElementById("ts").innerHTML = "连接成功";
                document.getElementById("dy").style.display = "block";
            } else { document.getElementById("ts").innerHTML = "连接失败"; };



        };

        function subee() {
            var gea = document.getElementById('subqq').value;
            if (gea == "") {
                document.getElementById("subts").innerText = "请输入完整";
                return;
            };
            console.log(gea);
            var xhr = new XMLHttpRequest();
            var str = "/subqq?subqq=" + gea;
            xhr.open("GET", str, true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    document.getElementById("subts").innerText = "订阅成功";
                    document.getElementById("dvfas").style.display = "block";
                };
            };

            xhr.send();
        };

        function pubee() {
            var gea = document.getElementById('pubqq').value;
            if (gea == "") {
                document.getElementById("subts").innerText = "请输入完整";
                return;
            };
            console.log(gea);
            var xhr = new XMLHttpRequest();
            var str = "/pubqq?pubqq=" + gea;
            xhr.open("GET", str, true);

            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    document.getElementById("pubts").innerText = "发布成功";
                };
            };
            xhr.send();
        };

        document.getElementById("wifi").addEventListener("click", function () {
            var h1 = document.getElementById("set");
            h1.style.display = "block";
        });
        document.getElementById("but").addEventListener("click", function () {
            var h1 = document.getElementById("set");
            h1.style.display = "none";

        });
        document.getElementById("about").addEventListener("click", function () {
            var abouta=document.getElementById("abouta");
            abouta.style.display="block";
            abouta.addEventListener("click",function(){
                abouta.style.display="none";
            });
        });


    </script>


</body>

</html>

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

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

相关文章

【Linux】条件变量及生产者消费者模型

为什么要将这两者放在一起进行呢&#xff1f; 主要是因为生产消费与条件变量关系密切&#xff0c;正好相辅相成。 目录 条件变量&#xff1a;条件变量的引出&#xff1a;条件变量的解释与接口&#xff1a;测试代码&#xff1a; 生产者消费者模型&#xff1a;概念&#xff1a;代…

Window版本nginx修改文件访问句柄数被限制,解决大并发量访问时无法响应问题

目录 一、问题背景 二、问题分析 三、解决办法 四、查看nginx连接状态 一、问题背景 Windows版本因为文件访问句柄数被限制为1024了&#xff0c;当大并发量访问时就会无法响应。会有如下错误提示&#xff1a;maximum number of descriptors supported by select() is 1024…

强化学习学习(二)基于价值函数就能做到RL——Q-Learning Q学习

文章目录 Value funtion methods-为什么我们用回了Q函数&#xff1f;Q-iterationQ-Learning (P30) Value funtion methods-为什么我们用回了Q函数&#xff1f; 先回顾一下在AC中的基于V函数的框架&#xff1a; 另一个想法&#xff1a;不依赖梯度&#xff0c;而是直接根据值函…

vue3+vite 实现动态引入某个文件夹下的组件 - glob-import的使用

<template><div class"user-content"><HeaderTitle title"用户详情"></HeaderTitle><div class"main-content"><div><UserForm /></div><div><TableList></TableList></d…

pytest实战技巧之参数化应用

pytest是Python中最流行的测试框架之一。它提供了丰富的功能&#xff0c;可以帮助我们编写高效、可靠的测试用例。其中一个重要的功能就是参数化&#xff0c;它可以让我们用不同的数据组合来运行同一个测试用例&#xff0c;从而 提高测试覆盖率和效率。本文将介绍pytest参数化的…

python之名称空间和作用域(关键字:global和nonlocal的使用)

文章目录 前言1、名称空间和作用域1.1 引言1.2 名称空间1.2.1 内置名称空间1.2.2 全局名称空间1.2.3 局部名称空间1.2.4 名称空间的产生和销毁顺序 1.3 作用域1.3.1 全局作用域1.3.2 局部作用域1.3.3 名字的查找顺序 1.4 关键字&#xff1a;global1.5 关键字&#xff1a;nonloc…

在eclipse中导入本地的jar包配置Junit环境步骤(包含Junit中的方法一直标红的解决方法)

搭建JUnit环境 下文中我用到的本地jar包可以到我上传的资源中下载&#xff0c;不需要积分 链接&#xff1a;https://download.csdn.net/download/weixin_70987470/89571891?spm1001.2014.3001.5503 一、配置环境 跟上一篇的那种方法不一样&#xff0c;直接Add to Build Path …

MySQL的表,视图,索引创建

一。创建表 1。创建Student表 mysql> create table Student(Sno int primary key auto_increment,Sname varchar(30) not null unique,Ssex varchar(2) check (Ssex 男 or Ssex 女) not null,Sage int not null,Sdept varchar(10) default 计算机 not null); 2.创建Cour…

Linux云计算 |【第一阶段】SERVICES-DAY2

主要内容&#xff1a; DNS服务基础及搭建、特殊解析(针对地址库文件&#xff1a;DNS轮询 DNS泛域名解析 DNS别名&#xff09;、缓存DNS&#xff08;全局转发forwarders&#xff09;、DNS递归迭代&#xff08;子域授权&#xff09;、DNS主从架构搭建、DNS主从数据同步 一、DNS工…

基于Element UI内置的Select下拉和Tree树形组件,组合封装的树状下拉选择器

目录 简述 效果 功能描述 代码实现 总结 简述 基于Element UI内置的Select下拉和Tree树形组件&#xff0c;组合封装的树状下拉选择器。 效果 先看效果&#xff1a; 下拉状态&#xff1a; 选择后状态&#xff1a; 选择的数据&#xff1a; 功能描述 1、加载树结构&…

Python 使用TCP\UDP协议创建一个聊天室

server端代码&#xff1a; #encodingutf-8 # 服务端代码 import socketdef server():server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)host socket.gethostname()port 12345server_socket.bind((host, port))server_socket.listen(5)print(等待客户端连接…

如何通过一条SQL变更多个分库分表?

数据库发展到今天&#xff0c;分库分表已经不是什么新鲜话题了&#xff0c;传统的单节点数据库架构在数据量和访问频次达到一定规模时&#xff0c;会出现性能瓶颈和扩展性问题&#xff0c;而分库分表技术通过将数据分散到多个数据库实例中来分担负载&#xff0c;从而提升系统的…

粮信甄选·非凡凸现|携手中粮期货、国信证券共同见证数智交易前沿力量

近日&#xff0c;中粮期货、国信证券联合非凸科技在深圳举办了“粮信甄选&#xff0c;非凡凸现”主题机构洽谈会&#xff0c;与行业专家、私募管理人共同探讨如何推进产业与金融的深度融合&#xff0c;以及实现科技创新与生态合作的新模式。 近年来&#xff0c;国信证券始终聚…

开源物联网网关ThingsBoard IoT Gateway

前几天测试了Neuron&#xff0c;这是一个令人印象深刻的平台&#xff0c;不过它不能算是完全免费的平台&#xff0c;因为它还是有商业许可要求的&#xff0c;挺贵的&#xff0c;大几万的&#xff0c;而且它有走向闭源的趋势。所以也在寻找它的替代方案。 今天看到一个ThingsBo…

最新全新UI异次元荔枝V4.4自动发卡系统源码

简介&#xff1a; 最新全新UI异次元荔枝V4.4自动发卡系统源码 更新日志&#xff1a; 1增加主站货源系统 2支持分站自定义支付接口 3目前插件大部分免费 4UI页面全面更新 5分站可支持对接其他分站产品 6分站客服可自定义 7支持限定优惠 图片&#xff1a; 会员中心截图&…

王春城 | TPM是如何减少设备停机时间的?

在快节奏的生产环境中&#xff0c;设备停机时间无疑是每个企业都头疼的问题。它不仅影响生产效率&#xff0c;还可能造成巨大的经济损失。那么&#xff0c;有没有一种神奇的方法能够一键减少设备停机时间呢&#xff1f;答案就是--TPM&#xff08;全面生产维护&#xff09;&…

【区块链+绿色低碳】双碳数字化管控平台 | FISCO BCOS应用案例

地方政府、园区及企业实现“双碳”目标过程中存在一些挑战与难点&#xff1a; 1. 管理者难以掌握完整、准确、全面的碳排放数据进行科学决策&#xff1a;由于碳排放核算需要对数据的来源、核算方法 的规范性和采集方法的科学性有严格要求&#xff0c;当前面临碳排放数据数据采…

什么是PCB盲孔、埋孔和电镀孔?

PCB有不同类型的孔&#xff0c;根据孔贯穿PCB内外层的层次&#xff0c;孔可分为通孔、埋孔和盲孔。 如您所知&#xff0c; PCB 由堆叠在一起的铜箔层组成.这些“过孔”连接PCB上的不同电路层。它类似于具有相互连接的隧道的地下系统。如果你玩过电子游戏“超级马里奥”&#xf…

基于web的物流配送管理系统/基于客户时间窗变化的物流配送管理系统/快递配送管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

springboot集成redis之字典缓存

什么是redis的字典缓存&#xff1f; Redis的缓存是Redis内部用于存储键值对数据结构的一种基础数据结构。在Redis中&#xff0c;所有的键值对都是通过字典这种数据结构来存储的。字典在Redis中扮演着核心角色&#xff0c;因为它不仅用于数据库中的键值对存储&#xff0c;还用于…