uniapp 小程序AP配网

一、TCPSocket.js 封装TCP协议

javascript 复制代码
class socket {
  constructor() {
    this.connection = {};
  }
  // 创建一个TCP实例
  establish(monitor) {
    this.connection = wx.createTCPSocket();
    this.connection.connect({ address: "000.000.0.0", port: 6800 });
  }
  // 发送消息
  connect(message) {
    this.connection.onConnect(() => {
      this.connection.write(message);
    });
  }
  // 监听端口函数
  onMessage(success, failure) {
    this.connection.onMessage((res) => {
      success(res)
    });
    this.connection.onError((err) => {
      failure(err);
    });
  }

  // 关闭搜索事件
  TCPclose() {
    setTimeout(() => {
      // 3S后,关闭socket
      this.connection.close(() => {
        console.log("TCP关闭");
      });
    }, 3000);
  }
}
const TCPSocket = new socket();
export default TCPSocket;

二、vue文件中使用TCP

javascript 复制代码
<template>
  <view class="zai-box">
        <view class="container">
          <text class="textName">{{ wifiSSID }}</text>
          <input type="text" placeholder="请输入WLAN密码" v-model="password" />
        </view>
        <button
          class="loginButton"
          :loading="loadingWIfi"
          :disabled="JSON.stringify(password.length) < 8 || loadingWIfi"
          @click="settiing"
        >
          {{ loadingWIfi ? "连接中" : "连接" }}
        </button>
  </view>
</template>

<script>
import TCP from "@/common/util/TCPSocket.js";
export default {
  data() {
    return {
      wifiSSID: "WIFI name",
      password: "",
      isFirst: true,
      wifiCountInterval: null,
      wifiCountDown: 0,
      loadingWIfi: false,
    };
  },
  onHide() {
    this.clearInterval();
  },
  methods: {
    settiing() {
      this.loadingWIfi = true;
      this.onConfirm();
    },
    onConfirm() {
      this.wifiCountDown = 60;
      this.startSMSTimer();
      if (this.isFirst) {
        // TCP实例创建
        // 连接端口
        TCP.establish();
        this.isFirst = false;
      }

      // 请求设备上报状态
      this.udpsend();
      // 开始监听
      TCP.onMessage(
        (res) => {
          if (!res) return;
          // 关闭TCP连接
          TCP.TCPclose();
          console.log(res) // 查看返回数据
          
        },
        (err) => {
          // debug
          console.log(err, "err");
        }
      );
    },
    udpsend() {
      const msgData = {
        event: "network",
        data: {
          ssid: this.wifiSSID,
          password: this.password,
        },
      };
      TCP.connect(JSON.stringify(msgData));
    },
    startSMSTimer() {
      this.wifiCountInterval = setInterval(() => {
        this.wifiCountDown--;
        if (this.wifiCountDown <= 0) {
          clearInterval(this.wifiCountInterval);
          this.wifiCountInterval = null;
          // 响应超过60秒后的操作
          // ........
        }
      }, 1000);
    },
    clearInterval() {
      if (this.wifiCountInterval) {
        clearInterval(this.wifiCountInterval);
        this.wifiCountInterval = null;
      }
    },
  },
};
</script>

<style scoped>
.zai-box {
  padding: 0;
  margin: 0;
}

.container {
  padding: 30rpx;
  margin: 0 0 20rpx;
  font-size: 28rpx;
  color: #20212b;
  background-color: #fff;
  text-align: left;
  font-weight: 400;
}

.loginButton {
  font-size: 36rpx;
  width: 690rpx;
  color: #fff;
  background-color: #00a0e9;
  border-radius: 44rpx;
  margin: 60rpx auto 0;
  border: none;
}

.loginButton[disabled] {
  color: #fff;
  background-color: #dfdfdf;
}

button::after {
  border: none;
}

.textName {
  display: block;
  font-size: 28rpx;
  font-weight: 500;
  color: #20212b;
  margin-bottom: 30rpx;
}
</style>
相关推荐
土土哥V_araolin6 小时前
双迹美业模式系统开发(现成源码)
小程序·个人开发·零售
2501_9339072113 小时前
南京本凡科技,怎么选择专业小程序开发才能提升品牌竞争力?
科技·微信小程序·小程序
笨笨狗吞噬者13 小时前
维护 uniapp 小程序端近一年,我想拉一个开发者交流群
前端·程序员·uni-app
2501_9339072116 小时前
本凡科技提供的宁波小程序开发服务全面解决方案
科技·微信小程序·小程序
左师佑图16 小时前
微信小程序集成 Day.js 插件的完整解决方案
微信小程序·小程序
2501_9339072117 小时前
本凡科技提供宁波小程序服务与定制解决方案
科技·微信小程序·小程序
计算机徐师兄17 小时前
Java基于SpringBoot的运动健康小程序【附源码、文档说明】
spring boot·小程序·运动健康·java运动健康小程序·运动健康小程序·java运动健康微信小程序·运动健康微信小程序
Xpower 1717 小时前
OpenClaw实战:从零开发电商小程序(2)
人工智能·语言模型·小程序·gateway
2501_933907211 天前
宁波小程序开发服务与技术团队专业支持
科技·微信小程序·小程序
sheji34161 天前
【开题答辩全过程】以 基于微信小程序的少儿编程学习平台为例,包含答辩的问题和答案
学习·微信小程序·小程序