由于微信小程序只支持BLE每次发送数据不大于20个字节,ESP32则有经典蓝牙、低功耗蓝牙两种模式。

要解决发送数据大于20个字节的问题,最简单实用的方式就是分包发送。如下图所示:

1、什么起始字符和结束字符

  起始字符用来通知接收端,当接收端接收到起始字符之后开始通过循环拼接字符,当接收端接收到结束字符之后得就能得到本次接收的所有字符。

2、如何选择起始字符和结束字符

  参考ASCII码选择要发送的字符中没有的字符。

2、为什么小于18字符

  由于每次最多发送20个字符,那么为了保证安全和效率不要打擦边球,所有选择每个包最多18个字符。

参考小程序代码:

 //要发送的字符串(要在起始位置添加起始字符,结束位置添加结束字符)
let order = that.stringToBytes(recs);
let byteLen = order.byteLength;//长度
let pos = 0; //字符位置
let tempBuffer; //一次发送的数据
var i = 0; //计数 //为了安全每次发送18个字节 (每次最多20个)
//发送之前
while (byteLen > 0) {
i++;
if (byteLen > 18) {
tempBuffer = order.slice(pos, pos + 18);
pos += 18;
byteLen -= 18;
console.log("第", i, "次发送:", tempBuffer);
that.writeBLECharacteristicValue(tempBuffer);
} else {
tempBuffer = order.slice(pos, pos + byteLen);
pos += byteLen;
byteLen -= byteLen;
console.log("第", i, "次发送:", tempBuffer);
that.writeBLECharacteristicValue(tempBuffer);
}
}
console.log("发送结束");

ESP32接收端参考代码:

   void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue(); if (rxValue.length() > 0) { for (int i = 0; i < rxValue.length(); i++){ //防止 意外字符串过长
if(bleReslen>1024){
bleReslen=0; } //开始标志
if((int)rxValue[i]==ASCII_STR){//ASCII 起始符
bleReslen=0; //结束标志
}else if((int)rxValue[i]==ASCII_END){//ASCII 结束符
extractData();//提取数据结束
bleReslen=0; }else{
//拼接字符串
encBefor[bleReslen]=(char)rxValue[i];//赋值
bleReslen++; } } } }

ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据的更多相关文章

  1. 微信小程序中发送模版消息注意事项

    在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...

  2. 微信小程序结合后台数据管理实现商品数据的动态展示、维护

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...

  3. 微信小程序通过api接口将json数据展现到小程序示例

    这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...

  4. 微信小程序wx.request请求服务器json数据并渲染到页面

    [原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...

  5. 微信小程序如何发送短信验证码,无需搭建服务器

    自从微信小程序提供云开发支持,开发者无需搭建后台服务器,使用微信提供的核心API就可以实现应用功能,此时就需要小程序能够自己发送短信,比如短信验证码,榛子云短信(http://smsow.zhenzi ...

  6. 原创:【微信小程序】发送消息模板教程(后台以PHP示例)

    1.本教程对外开放,未经博主同意,禁止转载. 2.准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 3.因为调用微信发送模板的接口是:https ...

  7. (三)微信小程序之发送服务通知(模板消息)

    1.后端获取AccessToken返回给微信端 微信小程序端请求后端得到AccessToken   2.后端获取openid返回给微信端   微信小程序端登录请求后端得到openid   3.发送消息 ...

  8. 微信小程序火车票查询 直取12306数据

    最终效果图: 样式丑哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的开发,以最直接的方式获取12306数据查询火车票. 目录结构: search1是出发站列表,search2是目的站列表,命名没 ...

  9. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

随机推荐

  1. rest-framework:权限组件

    一 权限简介 只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制 二 局部使用 from rest_framework.permissions import BasePerm ...

  2. moviepy音视频剪辑:AudioClip帧处理时报TypeError: only size-1 arrays can be converted to Python scalar错

    ☞ ░ 前往老猿Python博文目录 ░ 一.环境 操作系统:win7 64位 moviepy:1.0.3 numpy:1.19.0 Python:3.7.2 二.应用代码及报错信息 程序代码 if ...

  3. jQuery笔记(一)

    day01 - jQuery 学习目标: 能够说出什么是 jQuery 能够说出 jQuery 的优点 能够简单使用 jQuery 能够说出 DOM 对象和 jQuery 对象的区别 能够写出常用的 ...

  4. Gradle上传依赖到私服(nexus)

    子模块配置 buildscript { repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/cont ...

  5. 网络层-network layer(下):网络互连、子网掩码计算方法、Ipv4报头解析

    第五章 网络层-Network Layer(下) 上一章讲了网络层的任务.提供的两种服务.五个重要的路由算法.以及网络层的拥塞控制和服务质量问题.这一部分主要讲一讲网络互连问题和Internet的网络 ...

  6. AtCoder Regular Contest 109

    Contest Link 为什么还没有 Official Editorial 啊--哦,原来是日文题解,那没事了. A - Hands 有两幢 100 层的楼房 \(A,B\) ,将地面所在的楼层称为 ...

  7. 学习笔记:插头DP

    基于连通性的状压DP问题. 一般是给你一个网格,有一些连通性的限制. 例题 插头DP模板 链接 题意:网格图,去掉一些点,求哈密顿回路方案数. 一般按格递推(从上到下,从左到右). 每个格子要从四个方 ...

  8. 题解 CF1437G Death DBMS

    这题感觉不是很难,但是既然放在 \(\texttt{EDU}\) 的 \(\texttt{G}\) 题,那么还是写写题解吧. \(\texttt{Solution}\) 首先看到 "子串&q ...

  9. Springboot mini - Solon详解(三)- Solon的web开发

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  10. demo集合

    demos的github地址:https://github.com/zy0628/demos 包含以下demo: 1.图片上传.编辑.合成一张图 需求:1.1.拍照或上传本地相册. 2.2.可以截取图 ...