W801上电自动重连wifi并通过蓝牙更新账号密码

2023-11-08

一.项目流程

项目整体思路比较简单,W801上电后读取内部flash中保存在固定位置的Wifi账号密码,同时开始蓝牙,每当蓝牙接收到命令后,就对其进行解析,如果为连接wifi命令,则断开当前wifi,并进行新的wifi连接,连接成功后将账号密码更新至内部flash中固定位置,用于下次上电连接。大致的流程图如下:
在这里插入图片描述

二.代码解析

【1】使用说明:本代码使用的基本都是基于SDK中代码进行的修改
【2】主程序:

void UserMain(void)
{
	printf("\n-----------------------PROJECT Version1.6.5---------------------------\n");
	printf("\n-------------------------------BLE Start--------------------------------\n");    //这里在wm_main中开启了蓝牙任务,可以参考官方提供的蓝牙说明书
	tls_os_time_delay(1000);
	printf("\n-------------------------------WiFi Start--------------------------------\n");
	mqtt_start();
	get_wifi_params(ssid, pwd);                                                               //获取内部flash中保存的最近一次成功连接的wifi账号密码
	wifi_connect_net(ssid, pwd);                                                              //进行wifi连接,这个使用的就是demo中的链接函数,做了一点修改
	tls_os_time_delay(3000);
	printf("\n-------------------------------APP Start--------------------------------\n");
	tls_os_task_create(app_handle, "app", app_task,
                           NULL, (void *)app_task_stk, 
                           APP_TASK_SIZE * sizeof(u32),
                           APP_TASK_PRIO, 0);                                                      //主任务
}

【3】蓝牙命令处理的铺垫:要实现蓝牙命令的解析,首先要知道蓝牙接受到命令后在那个位置保存,这个很多大佬已经进行了分享,我这里再简单说明下如下图所示,为了方便后续更多蓝牙命令的处理因此,我单独创建了一个ble_cmd_excute函数用于命令解析执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

W801上电自动重连wifi并通过蓝牙更新账号密码 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • xBranch——新一代金融前端系统

    xBranch是集设计开发 测试部署和运维于一体的金融前端系统实施环境 充分体现了体验良好 实施快捷 成本较低 易于整合 运行高效 外设支持方便等优势 以 面向客户 面向营销 面向流程 面向体验 为设计理念 构建了统一的客户视图和以客户为中
  • java自动化测试语言高级之MySQL 连接

    java自动化测试语言高级之MySQL 连接 文章目录 java自动化测试语言高级之MySQL 连接 Java MySQL 连接 Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库
  • TypeError: __init__() got an unexpected keyword argument ‘transport_options‘

    在较新版本的 Elasticsearch Python 客户端中 确实没有名为 transport options 的参数 要设置传输选项 需要使用 transport class 参数来创建自定义传输类 并在传输类中设置选项 以下是一个示
  • Python打包的艺术(一)- 综述

    本文转载至 http blog chinaunix net uid 15174104 id 3863249 html Python打包的艺术是一个专题 我将在这个专题里分享自己对构建 管理和发布Python软件包的理解 这个专题 将涉及几个
  • 初识密码学

    初识密码学 摩斯密码 猪圈密码 键盘密码 普通键盘密码 用键盘换数字 拼音九键 栅栏密码 恺撒密码 维吉尼亚密码 希尔密码 摩斯密码 加密之前先来认识一下摩尔斯电码 点划 图像 二叉树 SOS并不是任何求救英文的缩写 而是因为在摩尔斯电码中
  • 无锁和偏向锁有什么区别?

    无锁和偏向锁是 Java 中的两种轻量级锁实现 它们和重量级锁相比 具有更高的性能和更低的开销 它们之间的区别如下 无锁 CAS 自旋锁 无锁是一种不需要使用锁的同步技术 它的实现依赖于 CAS Compare And Swap 操作 通过
  • ARM:分散加载

    1 GCC编译器下的分散加载 ld文件 SECTIONS ram text flash start LOADADDR ram text ram text ram text start user iic o text ALIGN 4 All
  • AdaBoost算法实例详解

    提升树Boosting Tree算法实例详解 程大海的博客 CSDN博客 从提升树Boosting Tree过度到梯度提升Gradient Boosting 程大海的博客 CSDN博客 GBDT梯度提升之回归算法个人理解 程大海的博客 CS
  • Centos7.6安装docker

    一 环境准备 Docker 支持以下的 64 位 CentOS 版本 CentOS 7 CentOS 8 更高版本 二 安装步骤 1 如果是重装 则需要卸载旧版本 sudo yum remove docker docker client d
  • k8s flannel划分子网方案

    目标 对宿主节点划分子网 同时实现对不同应用划分子网 实现说明 部署k8s时 划分宿主节点ip 对每个节点配置不同net conf json 这样pod调度到宿主节点时 根据net conf json内的network配置分配ip 实现po
  • git基本使用

    1 git init 初始化本地仓库 2 git add 或文件名 暂存 3 git commit m 自己定名字 4 git status 查看 5 git remote add origin https github com xxx 6
  • 强化学习之混合动作空间

    强化学习之混合动作空间 基本介绍 在强化学习的动作空间设定中有连续动作空间 离散动作空间和混合动作空间 在大多数的论文中研究的都是连续动作空间和离散动作空间 而混合动作空间研究的比较少 在游戏ai 自动驾驶等一些领域中有时动作空间可以是混合
  • 安装Elasticsearch

    gt 安装 1 创建基础环境 环境 centos7 9 es版本 7 13 3 按照如下的步骤一步步走 就可以正常完成安装 groupadd es useradd es g es p es123 cd home mkdir p elk es
  • nuxt.js局部引用quill富文本编辑器

    想在nuxt js中使用quill富文本编辑器 按照网上常见的方法 将css js 添加到 nuxt config js 这是全局调用了quill的css js 文件 在每个页面的源码中 都可以看到quill 的css js 这是没有必要的
  • 老板让你做性能优化,第一步你应该做什么?

    前言 项目的性能决定了用户对项目的整体感观度 优秀的性能可以保证项目的流畅与自然给用户愉快的体验感受 当我们开发完成一个项目以后最重要的环节就是要保证项目拥有一个良好的性能 所以开发完成以后需要我们针对项目做好性能优化 那么 要使一个项目拥
  • 大模型杀手级场景到底什么会到来

    大模型大潮之下 熙熙攘攘 皆为利来 皆为利往 所以很多人观望之后发现到现在还没有杀手级落地场景 便有些不耐烦了 觉得可能又是一股泡沫 但究竟是不是泡沫 需要从宏观角度分析下当前大模型的现状 笔者认为这种不耐烦其实来源于两个原因 1 天下事
  • 最适合零基础的爬虫教程,从零开始教你爬取十万表情包。非常简单。

    前言 事情要从几天前说起 我有一个朋友 他在和他喜欢的小姐姐聊天时 聊天的气氛一直非常尬 这时他就想发点表情包来缓和一下气氛 但一看自己的表情包收藏都是这样的 这发过去 基本就直接和小姐姐说拜拜了 然后他就向我求救问我有没有表情包 表情包我
  • 1、TCP三次握手、四次挥手;2、ADSL定义

    1 TCP三次握手 四次挥手详解 1 建立连接协议 三次握手 1 客户端发送一个带SYN标志的TCP报文到服务器 这是三次握手过程中的报文1 2 服务器端回应客户端的 这是三次握手中的第2个报文 这个报文同时带ACK标志和SYN标志 因此它
  • Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

    关于Appium V2 Appium V2 beta版本在2021年发布 从2022年1月1号开始 Appium核心团队不会再维护Appium 1 x版本了 所有近期官方发布的平台驱动 如Android平台的UIAutomator IOS平
  • W801上电自动重连wifi并通过蓝牙更新账号密码

    一 项目流程 项目整体思路比较简单 W801上电后读取内部flash中保存在固定位置的Wifi账号密码 同时开始蓝牙 每当蓝牙接收到命令后 就对其进行解析 如果为连接wifi命令 则断开当前wifi 并进行新的wifi连接 连接成功后将账号