目录
目录README.md

1. 项目结构

|-- app.js:定义小程序全局变量
|-- app.json:tabBar(底部导航栏)配置
|-- weui.wxss:weui库
|-- pages
|   |-- device-information:设备信息页面
|   |   |-- device-information.js
|   |   |-- device-information.json
|   |   |-- device-information.wxml
|   |   |-- device-information.wxss
|   |-- device-interface:设备接口页面
|   |   |-- device-interface.js
|   |   |-- device-interface.json
|   |   |-- device-interface.wxml
|   |   |-- device-interface.wxss
|   |-- images:项目所有图标
|   |   |-- Dmp设备接口-active.png
|   |   |-- Dmp设备接口.png
|   |   |-- Dmp设备接口new-active.png
|   |   |-- hero.svg
|   |   |-- scan.png
|   |   |-- scan.svg
|   |   |-- 以太网-active.png
|   |   |-- 以太网.png
|   |   |-- 以太网new-active.png
|   |   |-- 网络设置-active.png
|   |   |-- 网络设置.png
|   |   |-- 网络设置new-active.png
|   |   |-- 联通4G-active.png
|   |   |-- 联通4G.png
|   |   |-- 联通4Gnew-active.png
|   |   |-- 设备信息-active.png
|   |   |-- 设备信息.png
|   |   |-- 设备信息new-active.png
|   |   |-- 首页-active.png
|   |   |-- 首页.png
|   |-- search:搜索页面(首页)
|   |   |-- search.js
|   |   |-- search.json
|   |   |-- search.wxml
|   |   |-- search.wxss
|   |-- settings:网络设置页面
|       |-- settings.js
|       |-- settings.json
|       |-- settings.wxml
|       |-- settings.wxss
|-- utils
    |-- util.js:工具库

2. 页面路由

image-20240820225437554

3. 功能详解

3.1.1 初始界面

如下图所示,搜索页面的初始界面只有一个“搜索蓝牙设备”按钮。点击该按钮,手机开始搜索周围所有的蓝牙设备。

image-20240820230301674

3.1.2 显示周围所有蓝牙设备

点击搜索按钮后,可以显示搜索到的每一个蓝牙设备的设备名称,设备ID以及信号强度。

如果再次点击按钮,则会停止蓝牙设备搜索。停止搜索后,如果再点击按钮,会重新搜索蓝牙设备。

如果点击任意设备,微信小程序会尝试使用蓝牙连接设备。若连接成功,会跳转至device-information页面;若连接失败,则会显示“蓝牙连接失败”的Toast。

bd33e4816b0579d2b34ebe29f5cdf5e

3.2 device-information

设备信息页面用于显示设备信息,包括系统ID、模块编号、设备序列号、固件版本、硬件版本、软件版本、设备生产商,如下图所示:

image-20240821134423683

这些设备信息通过读取特征值来获取,相关的服务ID和特征值ID详见附录2 蓝牙特征值 设备信息

3.3 device-interface

该页面用于配置设备接口相关参数,目前实现的设备接口仅有RS485。

RS485可以配置的参数有波特率、数据位、停止位、校验位。点击对应的选项可以弹出选择界面,如下所示:

image-20240821000504862

点击确定按钮,会向设备发送设备接口设置报文。

image-20240820235855112

3.4 settings

3.4.1 切换模块

settings页面主要用于进行网络设置,目前可以配置的模块为4G模块和以太网模块。点击上方导航栏可以切换模块,如下所示:

image-20240821001505333

3.4.2 字段校验

目前的字段校验工作由微信小程序前端来完成,如果字段填写不规范,小程序前端不会发送配置请求报文,而是会弹出相应的错误Toast,用于提醒用户哪个字段填写有误,如下所示:

948a2edf559fc3fdcf5c9a7611477a4

字段填写规范如下:

模块 字段 规范
4G/Ethernet 目的IP地址 不能为空,格式为a.b.c.d,a,b,c,d是0~255之间的十进制整数
4G/Ethernet 目的端口号 不能为空,必须是0~65535之间的十进制整数
4G MQTT发布主题 不能为空,不能超过63字节
4G MQTT用户名 不能为空,不能超过63字节
4G MQTT密码 不能为空,不能超过63字节
4G MQTT客户端ID 不能为空,不能超过63字节
Ethernet 源IP地址 不能为空,格式为a.b.c.d,a,b,c,d是0~255之间的十进制整数
Ethernet 源端口号 不能为空,必须是0~65535之间的十进制整数
Ethernet 子网掩码 不能为空,格式为a.b.c.d,a,b,c,d是0~255之间的十进制整数
Ethernet 网关地址 不能为空,格式为a.b.c.d,a,b,c,d是0~255之间的十进制整数

3.4.3 模块字段

3.4.3.1 4G

4G模块可以配置的字段有:目的IP地址、目的端口号、MQTT开关、MQTT发布主题、MQTT用户名、MQTT密码、MQTT客户端ID。

如果关闭MQTT开关,则无法配置MQTT发布主题、MQTT用户名、MQTT密码、MQTT客户端ID。

打开MQTT开关之后的页面如下所示:

image-20240821004512660

关闭MQTT开关之后的页面如下所示:

image-20240821004618263

3.4.3.2 Ethernet

Ethernet模块可以配置的字段有:目的IP地址、目的端口号、DHCP开关、源IP地址、源端口号、子网掩码、网关地址。

如果打开DHCP开关,则无法配置源IP地址、源端口号、子网掩码、网关地址。

关闭DHCP开关后的页面如下所示:

image-20240821005845770

打开DHCP开关后的页面如下所示:

image-20240821010119561

3.4.4 连接状态

点击确认按钮后,若字段校验全部通过,则会发送一个请求报文。此时微信小程序会等待网络连接状态的响应报文,并且显示正在连接的标识,如下所示:

image-20240821142135727

若连接成功,则显示“连接成功”的标识,如下所示:

image-20240821142253045

若连接失败,则显示“连接失败”的标识,如下所示:

image-20240821142422911

附录1 蓝牙帧格式

ch32v208与微信小程序通过蓝牙交互。一个请求报文分成多个蓝牙包,每个蓝牙包固定20字节。

微信小程序发出请求报文,ch32v208响应确认报文并解析请求报文。如果配置的是4G模块或者以太网模块,还会响应一个网络连接状态报文。

请求报文

微信小程序向ch32v208发送请求报文。

请求蓝牙包格式

==蓝牙每个包固定20个字节,每次发送请求可能有多个包,根据报文类型决定==

字段 长度(位) 说明
包ID 8 每个报文固定同一个包ID
是否有下一个包 1 有的话为1,没有的话为0
包序号 7 包序号从0到127,意味着数据最多只能有128×20=2560字节
数据 18×8=148位 将报文拆分

网络设置报文

  1. 4G模块:关闭MQTT开关,设置目的IP地址、目的端口号。

    字段 长度 (字节) 说明
    报文ID 1 0~255
    报文类型 1 固定为 0x01
    模块类型 1 固定为 0x01 (4G)
    目的IP地址 4 IPv4 地址
    目的端口号 2 端口号 (0-65535)
    MQTT开关 1 固定为0
  2. 4G模块:打开MQTT开关,设置目的IP地址、目的端口号、MQTT发布主题、MQTT用户名、MQTT密码、MQTT客户端ID。

    字段 长度 (字节) 说明
    报文ID 1 0~255
    报文类型 1 固定为 0x02
    模块类型 1 固定为 0x01 (4G)
    目的IP地址 4 IPv4 地址
    目的端口号 2 端口号 (0-65535)
    MQTT开关 1 固定为1
    MQTT发布主题 64 限制在63字节以内
    MQTT用户名 64 限制在 63字节以内
    MQTT密码 64 限制在 63字节以内
    MQTT客户端ID 24 限制在 23 字节以内
  3. 以太网模块:打开DHCP开关,设置目的IP地址、目的端口号。

    字段 长度 (字节) 说明
    报文ID 1 0~255
    报文类型 1 固定为 0x03
    模块类型 1 固定为 0x02 (以太网)
    目的IP地址 4 IPv4 地址
    目的端口号 2 端口号 (0-65535)
    DHCP开关 1 固定为1
  4. 以太网模块:关闭DHCP开关,设置目的IP地址、目的端口号、源IP地址、源端口号、子网掩码、网关地址。

    字段 长度 (字节) 说明
    报文ID 1 0~255
    报文类型 1 固定为 0x04
    模块类型 1 固定为 0x02 (以太网)
    目的IP地址 4 IPv4 地址
    目的端口号 2 端口号 (0-65535)
    DHCP开关 1 固定为0
    源IP地址 4 IPv4 地址
    源端口号 2 端口号 (0-65535)
    子网掩码 4 IPv4 地址
    网关地址 4 IPv4 地址

设备接口设置报文

  1. RS485模块,设置波特率、数据位、停止位、校验位。

    字段 长度 (字节) 说明
    报文ID 1 0~255
    报文类型 1 固定为 0x10
    模块类型 1 固定为 0x01 (RS485)
    波特率 1 2400 -> 0x01
    4800 -> 0x02
    9600 -> 0x03
    19200 -> 0x04
    38400 -> 0x05
    57600 -> 0x06
    115200 -> 0x07
    230400 -> 0x08
    数据位 1 8 -> 0x01
    9 -> 0x02
    停止位 1 1 -> 0x01
    2 -> 0x02
    校验位 1 None -> 0x01
    Odd -> 0x02
    Even -> 0x03

响应报文

ch32v208向微信小程序发送响应报文。

设置确认报文

如果ch32v208收到设置报文,会通过类型为notification的特征值向微信小程序返回设置确认报文。

字段 长度 (字节) 说明
报文ID 1 0~255,和设置报文的ID保持一致
报文类型 1 固定为 0x01
设置状态 1 1:正在设置,2:设置成功,3:设置失败

网络连接状态报文

如果微信小程序发送网络设置报文,ch32v208会通过类型为notification的特征值向小程序返回网络连接状态报文。

字段 长度 (字节) 说明
报文ID 1 0~255,和设置报文的ID保持一致
报文类型 1 固定为 0x02
模块类型 1 4G为0x01,以太网为0x02
网络状态 1 1:连接成功,2:连接失败,3: 4G模块未启动

附录2 蓝牙特征值

设备信息

变量 蓝牙服务ID 蓝牙特征值ID 说明
devInfoSystemId 0000180A-0000-1000-8000-00805F9B34FB 00002A23-0000-1000-8000-00805F9B34FB 系统ID
devInfoModelNumber 0000180A-0000-1000-8000-00805F9B34FB 00002A24-0000-1000-8000-00805F9B34FB 模块编号
devInfoSerialNumber 0000180A-0000-1000-8000-00805F9B34FB 00002A25-0000-1000-8000-00805F9B34FB 设备序列号
devInfoFirmwareRev 0000180A-0000-1000-8000-00805F9B34FB 00002A26-0000-1000-8000-00805F9B34FB 固件版本
devInfoHardwareRev 0000180A-0000-1000-8000-00805F9B34FB 00002A27-0000-1000-8000-00805F9B34FB 硬件版本
devInfoSoftwareRev 0000180A-0000-1000-8000-00805F9B34FB 00002A28-0000-1000-8000-00805F9B34FB 软件版本
devInfoMfrName 0000180A-0000-1000-8000-00805F9B34FB 00002A29-0000-1000-8000-00805F9B34FB 设备生产商

交互

ch32v208通过两个特征值与微信小程序进行交互:

  • 属性为GATT_PROP_WRITE_NO_RSP | GATT_PROP_WRITE的特征值,负责微信小程序向ch32v208发送请求报文。该特征值暂称ble_uart_RxChar(在ch32v208视角中是读取该特征值)。
  • 属性为GATT_PROP_NOTIFY的特征值,负责ch32v208向微信小程序发送响应报文。该特征值暂称ble_uart_TxChar(在ch32v208视角中是写入该特征值)。

如下图所示:

image-20240821135031130

变量 蓝牙服务ID 蓝牙特征值ID 说明
ble_uart_RxChar 6E400001-B5A3-F393-E0A9-E50E24DCCA9F 6E400002-B5A3-F393-E0A9-E50E24DCCA9F 请求报文
ble_uart_TxChar 6E400001-B5A3-F393-E0A9-E50E24DCCA9F 6E400003-B5A3-F393-E0A9-E50E24DCCA9F 响应报文
关于

基于xizi工业物联网操作系统的微信小程序,旨在实现智能设备与服务的无缝互联,构建出一个万物皆可智能交互、互联互通的未来生态体系

2.0 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号