【国民技术N32WB452测评】+ 蓝牙OTA升级
[复制链接]
【国民技术N32WB452测评】+ 蓝牙OTA升级(成功篇)
前言:
上一篇由于硬件故障,仅做了理论分析和c语言方面剖析。
本篇主要介绍下Android源码,因为在此过程中APP应用也同样遇到很大的坎。个人以嵌入式软件开发为主,Android 软件只是学过。
Android源码架构
一、MainActivity.java
APP软件主函数,开机后第一个界面(也可以说是主页面)都和这个有关联,比如说跳转到其他界面也是由此跳转出去。像本工程搜索设备就是调用的弹窗界面,开始升级按键都在此文件当中进行处理。
1)用户权限参数,对应keil工程的admin
private String activeKey = "31D3492F3D962DA7";
uint8_t admin_pwd[20] = {0x31, 0xD3, 0x49, 0x2F, 0x3D, 0x96, 0x2D, 0xA7};//{1, 2, 3, 4, 5, 6, 7, 8};
2)搜索设备按键,调用手机蓝牙接口,在此环节上注意手机开启蓝牙即可。
SearchRequest request = new SearchRequest.Builder().searchBluetoothLeDevice(10000, 2).build();
搜索到相关设备后,手机app软件会显示MAC地址设备名称和SN序列号
const char ble_name[] = "WB452_OTA";
const char ble_addr[] = "11:22:33:FF:30:AA";
#define PRODUCE_SN "AM1001D001001219"
3)压缩包解压,调用的此函数库,然而在此环境上对手机的系统版本有严格的要求,下文详细说明入坑说明。
fileList = ZipUtils.unzipFile(zipFile, folder);
App将之前的打包文件进行解压,解压成功将进行校验和升级,如果解压失败则跳出程序。
4)校验升级文件
校验功能主要校验的是ver_info.json文件下的数据参数,如下所示:
{
"binFile":"N32WB452_OTA_V101_2020619.bin",
"Lockmodel":"TZ3HBN1",
"HwVersion":"100",
"FwVersion":"101",
"HwInfo":"040302060C02020301020102010102000000000000000000",
"ImageSize":85112,
"ImageCRC":41713,
"CustomerCode": 14
}
keil工程编译后自动会出现这蓝色的这两个参数,然后将binFile替换下即可。详细的操作在keil工程当中。
二、activity_mian.xml
1)人机界面如图所示:
2)实际效果如图所示:
在design当中有多种插件,button、imageView、Text等等,在此模式下直接拖拽即可。
- 人机界面软件代码如图所示,可以设置各个控件的参数摆放位置等等
三、AndrodManifest.xml
用户权限申请和软件名称,在此申请了蓝牙功能解压功能等等。
四、NSLockSDK
此SDK应该是国民技术公司自己开发的一套软件。
大概的功能应该是.zip压缩包升级软件的校验,升级包的解析和发送升级包文件的主要程序。
还会涉及通信协议等进行二次开发的话需要详细的理解和解读。
五、手机系统版本
官方提供《N32WB45x蓝牙手机兼容列表》,涉及99个手机各厂家都挺全的,但是都是几年前的手机版本了,现在手机android系统已经到了Androd12,而其提供的兼容性系统版本都是Android4.4.2-Android8.0.
·个人找了6个手机其中五个不再其中,系统版本较高,在软件解压环节就开始报错。
高版本手机仿真效果。
兼容版本手机仿真的结果
六、Keil 编译升级包制作
1.Keil工程应该是已经加载了GetInfo.bat,他是用于生成升级文件信息的。
2.新建bin文件名同名的文件夹
3.将bin文件和ota_file压缩包内的ver_info.json一同复制到新建的文件夹当中
4.更改ver_info.json文件内容,将__OTA_FW_info.Txt的固件名称、校验码和文件长度复制并替换如图所示
5.将文件夹压缩,需要压缩成 .Zip文件格式
七、升级过程和升级结果
Android APP升级界面:图1 是同版本软件所以检测后提示无需升级。
图2之后是升级过程显示。
PC电脑端串口打印信息界面
八、APP源码
|