GD32实战项目-app inventor-BLE低功耗DX-BT24蓝牙上位机制作-文末有关于生成的软件闪退或者卡死问题的解决

news2024/11/24 4:43:31

 本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发

       后续项目主要在下面该专栏中发布:

手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客

       感兴趣的点个关注收藏一下吧!

       电机驱动开发可以跳转:

手把手教你嵌入式国产化-实战项目-无刷电机驱动(1)-CSDN博客

       BMS电源系统开发可以跳转:暂未放链接

本文文末有关于app inventor生成的软件,在使用中出现闪退和卡死问题解决的办法!

前言

各位大佬,好久不见了,今天是暑假开始的第一天,我为大家带来了GD32新的一期的实战项目,这个项目是承接在读博士师兄的委托,做的一款可穿戴式柔性传感器,师兄师姐做的是传感器的材料和设计部分,我主要是负责电子线路的设计和上位机的编写!

再次感谢师兄和学姐能够提供这次机会!

实物电路

本次PCB工程绘制采样嘉立创PFC制版工艺,不错不错十分强大!

这是刚刚拿到手的时候

 

这是焊接好了以后的样子


 

当然还有鼠鼠的照片

上位机

一个好的项目,怎么能少的了上位机呢!本节我们主要侧重讲解上位机部分,

接下来这部分是展示:

首先是给我提供的要求:

后续协商以后,要求更多的数据,于是就变成了这样:

上位机的具体实现

本次上位机使用app inventor图形化编程,其网站为:

https://appinventor.mit.edu/

能够极大程度上节约开发时间,但是我们实际使用工程中,主要是使用国内镜像网址,免费的是广州的服务器:MIT App Inventor (gzjkw.net)

但是因为其版本过旧的,并且功能少,我推荐是花9.99/30天去使用国内大佬自己维护的网址:

WxBit 图形化编程

因为是其个人维护,所以我认为为了支持其开源和开发,9.99一个月对于我们实际有需要的人来说,更多的是一种支持!

这是本项目我所使用的上位机的开发界面,在app inventor中,对一个软件的开发主要分为界面布局逻辑编写两个部分。

界面布局

这是布局部分,布局部分主要是对软件样式,以及逻辑功能中使用到的资源进行提前布局和预留,比如本项目中需要使用到BLE的低功耗蓝牙通讯,所以我在这里需要提前将该部分所需要的组件放入工程。

左边栏目中能够在通信连接中找到我们本次实验所需要的低功耗蓝牙。

至于为什么要选这个低功耗蓝牙?

那是因为,我们的上位机,是用于服务我们本项目所制作的硬件,是根据硬件去设计我们的上位机,在我们的板子上,我们搭载了一颗大夏龙雀科技的DX-BT24

蓝牙DX-BT24介绍

小体积,低功耗,多适合这个项目,就不用我继续说下去了吧!

模块数据吞吐量也满足本项目需求:

常用AT指令

首先我们需要知道该模块通讯时默认的波特率是9600,记得与之匹配的情况下再进一步进行操作AT指令。

首先是命令回复格

测试

查询版本

查询模块地址码(这部分在连接的时候需要根据地址码去广播连接)

查询和设置模块名称(设置完成后需要重启)

查询和设置模块波特率

软件重启(死机时候经常用)

我们主要将其作为主从机使用,所以主要是以上AT指令,其余用于广播端的指令,本次用不到就不多介绍,让我们将重点放在逻辑编写上!

逻辑层编写

初始化部分

首先是在屏幕初始化的时候,对基础按键和文本进行设置:

这里的初始化,只会执行一次,类似于嵌入式编写中的mian.c函数的while(1)前的初始化部分

我们在这里要做的主要是对蓝牙连接/断开/取消等功能的提前使能和失能。

功能按键部分

这是主要是当三个功能按键被点击以后的逻辑,以完成蓝牙的搜索/连接/断开。

蓝牙连接部分

主要是涉及,蓝牙连接后去读取用户所选中的蓝牙地址,并且与该地址建立蓝牙连接的任务!

在建立稳定的连接通道后,就可以进行蓝牙数据的监听和接受了。

蓝牙通讯部分

蓝牙提供十分丰富的接口和资源,这里只贴出了冰山一角,感谢各位维护人员的辛苦工作,我们本次通讯,因为需要发送不同传感器的不同数据,所以我们需要自己定义一个数据帧格式,用于我们数据的传输,保证传输正确!

第一位第二位第三位第四位第五位第六位第七位第八位

用于地址判断,告诉上位机,目前是哪个传感器的数据

所选中的数据第一位所选中的数据第二位所选中的数据第三位所选中的数据第四位通用数据位

通用状态位

末尾校验位

例如:
00 01 01 01 01 02 01 x

表示对地址为0的数据填写四个数据为0x01、0x01、0x01、0x01,和一位通用数据0x02和一位状态位:0x01

注意这里的数均是16进制!

上位机判断逻辑

在末尾的判断中根据状态位向框内填入正常(Good)或者警告(Warning)

注意:

来自大佬的指点:

错误示例:

1.使用定时器接收蓝牙

2.循环运行

软件运行过程中所出现的卡死和闪退,一半以上均是由以上导致,那么大家会问,既然不能用定时器,那怎么做呢!

这位大佬也贴出了具体的使用推荐:

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

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

相关文章

什么开放式耳机好用?五大王牌开放式耳机种草!

随着科技的持续进步,开放式蓝牙耳机悄然兴起,逐步取代了经典的入耳式耳机。入耳式耳机以其卓越的隔音性能著称,然而,长时间的使用却容易引发耳道受压,伴随而来的不仅是疼痛与不适,更潜藏着耳膜受损的风险。…

C++面试宝典30题丨第一题:开灯

专栏导读 见得题目越多,考试时抽中的概率也越大。每一题都有详细的解答思路和独有的视频讲解。 本文收录于:C面试宝典(送视频讲解) ☆☆☆购买专栏后,请加微信会私发讲解视频! 题目描述 一条名叫Mango的街…

简过网:一建和二建的含金量,哪个难度更大一些?

你知道,一建和二建有什么区别吗,考哪个更合适自己呢?正在备考一建、二建的小伙伴们,这篇文章千万不要错过哦! 首先,先说一下大家比较关注的含金量问题,一建含金量明显比二建高,但是…

MySQL篇-SQL优化实战-减少子查询

回顾 上一篇了解了分析SQL使用的explain,可以点击查看MySQL篇-SQL优化实战了解我在写sql的注意事项还有explain的说明,这次拿一段生产使用的sql进行优化说明。从14s优化到2.6s 待优化的SQL SELECT DISTINCTswpe.tag_number,hca.ACCOUNT_NAME customer…

精准定位推广盲点?Xinstall数据监测让每一分投入都见成效!

在这个数字化时代,App的推广早已不再是简单的“上线即成功”。面对激烈的市场竞争和日益挑剔的用户,如何精准监测推广数据,优化营销策略,成为了每个开发者与营销人员不得不面对的挑战。而在这个关键时刻,Xinstall作为一…

AI 驱动的数据中心变革与前景

文章主要探讨了AI计算时代数据中心的转型,涉及计算技术的多样性、规格尺寸和加速器的发展、大型语言模型(LLM)的发展、功耗和冷却趋势、基准测试的重要性以及数据中心的发展等方面。为大家提供深入了解AI基础设施发展的视角。 计算技术的多样…

Python 程序打印图案“G”(Python Program to print the pattern ‘G’)

在本文中,我们将学习如何使用星号和空格打印图案 G。给定一个数字 n,我们将编写一个程序,在 n 行或列上打印图案 G。 例子: 输入:7 输出: *** * * * *** * * * * *** 输入&…

红酒的秘密花园:探索葡萄的种植艺术

在远离城市喧嚣的某个角落,隐藏着一座神秘的红酒秘密花园。这里,葡萄藤缠绵交织,绿叶间闪烁着晶莹的露珠,仿佛在诉说着关于红酒与葡萄种植艺术的古老传说。今天,就让我们一起走进这片神秘的花园,探寻葡萄种…

@amap/amap-jsapi-loader 实现高德地图中添加多边围栏,并可编辑,编辑后获得围栏各个点的经纬度

先上一张效果图 看看是不是大家想要的效果~ ❤️ 希望其中的小点能帮助大家,主要看怎么绘制在地图上的代码即可 1.第一步要加入项目package.json中或者直接yarn install它都可以 想必大家应该都会 "amap/amap-jsapi-loader": "0.0.7&qu…

Oracle EBS PO采购订单预审批状态处理

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 采购订单状态:预审批 采购订单流程报错如下: po.plsql.PO_DOCUMENT_ACTION_AUTH.approve:90:archive_po not successful - po.plsql.PO_DOCUMENT_ACTION_PVT.do_action:110:unexpected error in acti…

Unity In App Purchasing内购校验

1,利用收据验证混淆器 把后台的key填进去,点击自动生成一些文件 2,代码过滤 using UnityEngine.Purchasing.Security;在IAPManager.cs的 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)增加 #if !UNITY_EDITOR…

Linux—文件内系统与日志分析

目录 一、Linux文件系统 1、inode 与 block概述 1.2、inode内容 1.3、查找inode 1.4、inode故障处理 2、硬盘分区后的结构 3、访问文件的流程 4、文件恢复 4.1、恢复ext3格式文件 4.2、恢复 xfs 格式文件 二、Linux日志文件 1、日志的功能 2、日志的默认位置 3、日…

第一百四十二节 Java数据类型教程 - Java字符数据类型

Java数据类型教程 - Java字符数据类型 Character类的一个对象包装一个char值。 字符类包含isLetter()和isDigit()方法来检查字符是否为字母和数字。 toUpperCase()和toLowerCase()方法将字符转换为大写和小写。 该类提供了一个构造函数和一个工厂valueOf()方法来从char创建对…

高精度定位技术:赋能电网智能化转型的新引擎

在当今社会,电力作为经济发展的血脉,其稳定高效运行对于国家能源安全与社会发展至关重要。随着科技的飞速进步,高精度定位技术正逐步渗透至电网管理的各个环节,成为推动电网智能化转型的关键力量。本文将深入探讨高精度定位技术在…

联合查询(多表查询)

多表查询是对多张表的数据取笛卡尔积(关联查询可以对关联表使用别名) 数据准备 insert into classes(name, desc) values (计算机系2019级1班, 学习了计算机原理、C和Java语言、数据结构和算法), (中文系2019级3班,学习了中国传统文学), (自动化2019级5…

【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven+文档 前后端可分离也可不分离

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven文档 前后端可分离也可不分离 2项目介绍 系统功能: 美容院管理系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改…

起飞,纯本地实时语音转文字!

简介 偶然在 github 上翻到了这个项目 https://github.com/k2-fsa/sherpa-ncnn 在没有互联网连接的情况下使用带有 ncnn 的下一代 Kaldi 进行实时语音识别。支持 iOS、Android、Raspberry Pi、VisionFive2、LicheePi4A等。 也就是说语音转文字可以不再借助网络服务的接口&am…

为什么技术合作伙伴必须获得 ISO 27001 认证

在当今的数字环境中,强大的安全措施的重要性怎么强调都不为过。 即使是像 Snowflake 这样的巨头,也很少有一天不出现重大漏洞,据《连线》报道,这可能是历史上最大的漏洞之一。 此外,98.3%的组织与至少一家第三方供应商…

【公益案例展】四川农担x中电金信——大数据智能风控平台建设

‍ 中电金信公益案例 本项目案例由中电金信投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2024中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 1、外部经济环境带来的挑战 近几年经济发展和市场需求的挑…

关于5G和卫星

手机,已经串联起了我们生活中的一切环节。我们随时随地拿出手机,都能畅快地上网。 这一切是如此地理所当然,以至于我们甚至想不到这样不可思议的问题: 移动通信网络真的无处不在吗? 我们都知道,地球虽叫…