25 KiB
智能内镜储存柜系统 PRD
文档信息
- 项目名称: 智能内镜储存柜系统
- 版本: v1.0.1
- 文档日期: 2026-01-20
- 应用平台: Android (UniApp + Vue3)
1. 产品概述
1.1 产品定位
智能内镜储存柜是一款面向医疗场景的专业内镜存储管理设备,通过物联网技术实现内镜的智能存取、环境监控、自动消毒等功能,提升医院内镜管理效率和使用安全性。
1.2 核心价值
- 智能管理: 通过RFID/IC卡技术实现内镜自动识别和存取记录
- 环境监控: 实时监控储存柜内的温度、湿度、压差等关键指标
- 安全存储: 自动消毒、真空保鲜、门禁管理等多重保障
- 数据追溯: 完整的操作日志记录,便于追踪和管理
2. 系统架构
2.1 技术栈
- 前端框架: UniApp + Vue3
- UI组件: Ant Design Vue
- 状态管理: Vuex
- 本地存储: SQLite
- 硬件通信: RS485 (传感器 + 门控制) + RS232 (卡片识别 + 设备控制)
- 原生插件: android-serialport (串口通信)
2.2 硬件组成
- RS485串口: 温湿度传感器、压差传感器、门锁控制器(左右门)
- RS232串口: 16个内镜位置IC卡读写器,门口1个IC卡读写器(可读取人员卡和内镜卡)
- 继电器控制: 风机、照明、真空泵、消毒设备
- 门系统: 主门(概念门)、左门、右门(实体门)
3. 功能模块
3.1 启动模块
功能描述
应用启动页面,负责系统初始化和硬件自检。
核心功能
-
串口初始化
- RS485串口:
/dev/ttyUSB2, 波特率 9600 - RS232串口:
/dev/ttyUSB1, 波特率 115200 - 支持通过配置文件自定义串口参数
- RS485串口:
-
本地存储初始化
- 加载运行参数配置
- 加载基础设置
- 加载服务器配置
-
数据库初始化
- user表: 人员卡信息
- endo表: 内镜卡片信息
- scope表: 16个内镜位置状态
- log表: 操作日志
-
时间同步
- 本地时间初始化
- 网络时间同步(联网状态下)
入口控制
- 点击"进入"按钮跳转主界面
- 密码保护: 可设置屏幕解锁密码
- 调试模式: 连续点击标题5次触发,提供Modbus调试、SQLite调试、清除缓存功能
3.2 主界面模块
功能描述
系统核心操作界面,实时显示设备状态和内镜存储情况。
核心功能
3.2.1 环境监控显示
- 温度显示: 实时显示当前温度(°C),超出阈值自动启动风机
- 湿度显示: 实时显示当前湿度(%RH),超出阈值自动启动风机
- 压差显示: 实时显示当前压差(Pa),支持压差补偿值设置
- 联网状态: 显示当前网络连接状态
- 模式切换: 自动模式/清扫模式
3.2.2 内镜存储管理
- 16个存储位置: 每个位置支持2个内镜存储位
- 实时状态显示:
- 空闲: 显示"已取出"
- 占用: 显示内镜编号和存储时长(如: "已存入:32h 42m")
- 临期提醒: 黄色高亮显示(超过临期阈值)
- 超期提醒: 红色高亮显示(超过超期阈值)
- 自动刷新: 每60秒自动刷新内镜列表数据
3.2.3 设备控制
| 控制项 | 功能说明 | 手动操作 | 自动逻辑 |
|---|---|---|---|
| 照明 | 控制柜内照明 | 开启/关闭按钮 | 开门自动开启,关门自动关闭 |
| 开门 | 控制左门/右门 | 手动选择门,通过RS485发送开门指令 | 人员刷卡验证通过后,弹窗选择开左门/右门 |
| 消毒 | 控制消毒设备 | 点击开启(运行指定时长后自动关闭) | 根据时间段自动启动/停止 |
| 真空 | 控制真空泵 | (预留) | 开门关闭,关门开启,定时运行/停止 |
3.2.4 模式切换
- 自动模式: 系统自动运行消毒、真空泵、风机等任务
- 清扫模式: 停止自动任务,便于设备维护清洁
3.3 串口通信模块
3.3.1 RS485通信(传感器数据)
支持的传感器:
-
温湿度传感器: 站号02
- 读取指令:
020300000002C438 - 返回数据格式:
01 03 04 XX XX XX XX XX XX ...
- 读取指令:
-
压差传感器: 站号01
- 读取指令:
01030001000295CB - 返回数据格式:
01 03 02 XX XX XX XX ...
- 读取指令:
-
门状态监测与控制: 站号03
- 协议说明: 采用中盛4路数字IO模块,通过Modbus RTU协议通信
- 左门控制(通道1,地址0000H):
- 左门开门指令(磁吸通电):
030600000001480A(发送后,leftDoor状态更新为true) - 左门关门指令(磁吸断电):
03060000000089CA(发送后,leftDoor状态更新为false)
- 左门开门指令(磁吸通电):
- 右门控制(通道2,地址0001H):
- 右门开门指令(磁吸通电):
03060001000109CA(发送后,rightDoor状态更新为true) - 右门关门指令(磁吸断电):
03060001000048E8(发送后,rightDoor状态更新为false)
- 右门开门指令(磁吸通电):
- 门状态上报(功能码04,读输入寄存器):
- 左门触点开关状态变化时主动上报
- 右门触点开关状态变化时主动上报
- 收到上报数据后需更新对应门状态
- 状态定义: true=开门(磁吸通电), false=关门(磁吸断电,触点触发)
门状态计算规则:
- 门状态(door) = 左门状态(leftDoor) OR 右门状态(rightDoor)
- 任一门打开时,door状态为开
- 两门都关闭时,door状态为关
数据读取策略:
- 定时轮询: 每5秒读取一次温湿度数据,间隔1秒读取压差数据
- 数据校验: 温湿度数据过滤异常值(0-100范围内有效)
3.3.2 RS232通信(控制与卡片识别)
指令协议:
| 功能 | 指令码 | 格式 | 说明 |
|---|---|---|---|
| 风机控制 | 02 | 5AA5EE02 + 01(开)/00(关) |
控制风机 |
| 照明控制 | 03 | 5AA5EE03 + 01(开)/00(关) |
控制照明 |
| 真空泵控制 | 04 | 5AA5EE04 + 01(开)/00(关) |
控制真空泵 |
| 消毒控制 | 05 | 5AA5EE05 + 01(开)/00(关) |
控制消毒设备 |
门状态逻辑说明:
- 门开关状态(door)是逻辑状态,由左右门物理状态共同决定
- 规则:
door = leftDoor OR rightDoor- 左门开 或 右门开 → door = true (开)
- 左门关 且 右门关 → door = false (关)
门控制流程:
- 发送开门指令到RS485站号03
- 左门开门:
cmd.LeftDoor(true)→ 发送030600000001480A(磁吸通电) - 右门开门:
cmd.RightDoor(true)→ 发送03060001000109CA(磁吸通电)
- 左门开门:
- 指令发送后,立即更新对应门的物理状态
- 左门打开 →
leftDoor = true - 右门打开 →
rightDoor = true
- 左门打开 →
- 根据左右门状态自动计算门状态
door = leftDoor OR rightDoor
- 发送关门指令到RS485站号03
- 左门关门:
cmd.LeftDoor(false)→ 发送03060000000089CA(磁吸断电) - 右门关门:
cmd.RightDoor(false)→ 发送03060001000048E8(磁吸断电)
- 左门关门:
- 指令发送后,更新对应门的物理状态
- 左门关闭 →
leftDoor = false - 右门关闭 →
rightDoor = false
- 左门关闭 →
- 重新计算门状态
door = leftDoor OR rightDoor
卡片识别协议:
-
门口IC卡读写器: 1个,位于门口,可读取人员卡和内镜卡
- 卡存入:
20 01 00 08 04 00 00 00 [卡号4字节] [校验] 03(14字节) - 卡离开:
20 01 00 01 02 [校验] 03(7字节) - 卡号位置: 倒数4-8字节为卡号数据
- 卡存入:
-
16个内镜位置IC卡读写器: 每个内镜位置1个,仅读取内镜卡
- 卡存入:
20 01 00 08 04 00 00 00 [卡号4字节] [校验] 03(14字节) - 卡离开:
20 01 00 01 02 [校验] 03(7字节) - 卡号位置: 倒数4-8字节为卡号数据
- 卡存入:
卡片处理逻辑:
-
卡片读取: 接收卡片数据 → 提取卡号 → 在数据库中比对判断卡片类型
- 在user表中找到 → 人员卡
- 在endo表中找到 → 内镜卡
- 都未找到 → 无效卡片
-
人员卡存入: 验证人员卡号是否在user数据库中 → 弹窗选择开左门/开右门 → 用户确认后通过RS485发送开门指令 → 更新门状态 → 记录日志
-
内镜卡存入: 验证内镜卡号是否在endo数据库中 → 弹窗选择存入/取出 → 用户选择后更新scope表对应位置 → 记录日志
-
内镜卡取出: 弹窗确认取出 → 更新scope表对应位置为空闲 → 记录日志
3.4 自动任务模块
3.4.1 自动消毒任务
- 配置: 支持多时间段配置(如: 08:00-10:00, 14:00-16:00)
- 执行逻辑:
- 到达开始时间 → 启动消毒和风机
- 到达结束时间 → 停止消毒
- 仅在自动模式下生效
- 运行时长: 手动启动时运行指定时长后自动关闭
3.4.2 真空泵任务
- 运行时长控制: 连续运行超过指定时长后自动停止
- 间隔运行控制: 停止后间隔指定时长自动启动
- 执行逻辑:
- 开门时 → 关闭真空泵
- 关门时 → 启动真空泵和风机
- 到达运行时长 → 关闭真空泵
- 到达间隔时长 → 启动真空泵和风机
3.4.3 风机自动控制
- 启动条件:
- 温度超过阈值
- 湿度超过阈值
- 消毒设备启动
- 真空泵启动
- 停止条件:
- 温度和湿度均低于阈值
- 照明、真空泵、消毒、门均处于关闭状态
- 清扫模式下不自动控制
3.4.4 门状态监控
- 开门超时报警: 开门超过3分钟且非清扫模式 → 触发蜂鸣器报警 → 弹窗提示
- 门状态记录: 记录开门/关门时间
- 门状态同步: 概念门(door)状态 = 左门(leftDoor) OR 右门(rightDoor)
- 门状态监测: 通过RS485站号03接收触点开关状态上报(功能码04)
- 收到DI状态变化上报时解析并更新对应门状态
- 左门触点触发(关门): 更新
leftDoor = false - 右门触点触发(关门): 更新
rightDoor = false
3.5 设置模块
功能描述
系统参数配置界面,需密码验证后访问。
3.5.1 设置菜单
设备信息管理
- 查看设备基本信息
- 设备SN码管理
基础设置
- 屏幕解锁密码
- 设置密码(访问设置界面)
服务器设置
- 服务器IP地址
- 服务器端口
- API接口配置
运行参数设置
- 温度阈值(自动启动风机)
- 湿度阈值(自动启动风机)
- 压差补偿值
- 内镜临期提醒时长
- 内镜超期提醒时长
- 消毒时长(手动启动时的运行时间)
- 真空泵运行时长
- 真空泵间隔时长
- 自动消毒时间段配置(支持多时段)
内镜信息管理
- 添加/编辑/删除内镜卡片
- 内镜RFID编号
- 内镜型号、品牌、类型
人员信息管理
- 添加/编辑/删除人员卡片
- 人员IC卡编号
- 人员姓名
3.5.2 数据同步功能
- 时间同步: 同步网络时间
- 内镜信息同步: 从服务器同步内镜列表
- 人员信息同步: 从服务器同步人员列表
- 运行参数同步: 从服务器同步运行参数
3.6 日志模块
功能描述
显示系统操作日志,支持分页查询。
核心功能
-
日志类型:
- 内镜存入记录
- 内镜取出记录
- 刷卡开门记录
- 设备操作记录
-
日志字段:
- 时间
- 操作对象(人员/内镜编号)
- 操作类型(存入/取出/开门等)
-
分页显示: 每页15条,支持上一页/下一页翻页
4. 数据库设计
4.1 user表(人员信息)
| 字段名 | 类型 | 说明 |
|---|---|---|
| ic | TEXT | 人员卡号 |
| name | TEXT | 人员姓名 |
| create_time | TEXT | 创建时间 |
| _openid | VARCHAR(64) | 用户标识 |
4.2 endo表(内镜信息)
| 字段名 | 类型 | 说明 |
|---|---|---|
| rfid | TEXT | 内镜RFID编号 |
| ic | TEXT | 内镜IC卡号 |
| model | TEXT | 内镜型号 |
| brand | TEXT | 品牌 |
| type | TEXT | 类型 |
| create_time | TEXT | 创建时间 |
| _openid | VARCHAR(64) | 用户标识 |
4.3 scope表(内镜位置状态)
| 字段名 | 类型 | 说明 |
|---|---|---|
| key | INTEGER | 位置编号(0-15) |
| name | TEXT | 状态名称(enter/leave) |
| ic | TEXT | 存储的内镜卡号 |
| time | TEXT | 存入时间 |
| _openid | VARCHAR(64) | 用户标识 |
4.4 log表(操作日志)
| 字段名 | 类型 | 说明 |
|---|---|---|
| name | TEXT | 操作对象 |
| action | TEXT | 操作类型 |
| create_time | TEXT | 操作时间 |
| _openid | VARCHAR(64) | 用户标识 |
5. 状态管理(Vuex)
5.1 relay(继电器状态)
{
door: false, // 主门状态(概念门)
leftDoor: false, // 左门状态
rightDoor: false, // 右门状态
wind: false, // 风机状态
light: false, // 照明状态
vacuum: false, // 真空泵状态
disinfect: false // 消毒状态
}
5.2 sensor(传感器数据)
{
temp: 0, // 温度(°C)
humi: 0, // 湿度(%RH)
pressure: 0 // 压差
}
5.3 run(运行参数)
{
temp: 30, // 温度阈值
humi: 60, // 湿度阈值
pressureCom: 0, // 压差补偿值
endoNear: 24, // 临期提醒时长(小时)
endoOver: 48, // 超期提醒时长(小时)
disinfectTime: 30, // 消毒时长(分钟)
vacuumRunTime: 5, // 真空泵运行时长(分钟)
vacuumPerHour: 2, // 真空泵间隔时长(小时)
group: [ // 自动消毒时间段
{ start: {h:8, m:0}, end: {h:10, m:0}, status: true },
{ start: {h:14, m:0}, end: {h:16, m:0}, status: true }
]
}
5.4 timer(计时器状态)
{
door: '', // 开门时间
doorAlert: false, // 门报警状态
disinfect: '', // 消毒开始时间
wind: '', // 风机开始时间
vacuumStart: '', // 真空泵开始时间
vacuumEnd: '' // 真空泵停止时间
}
5.5 其他状态
clean: 清扫模式标志autoDisinfect: 自动消毒标志connect: 网络连接状态apiUrl: API服务器地址time: 当前系统时间
6. 接口设计(API)
6.1 获取网络时间
- 接口:
GET /api/time - 返回: 时间字符串(如: "2026-01-20 10:30:00")
6.2 内镜列表同步
- 接口:
GET /api/endoscopelist - 返回:
{
"endoscope_list": [
{
"endoscope_rfid": "RFID001",
"endoscope_model": "型号1",
"endoscope_brand": "品牌1",
"endoscope_type": "胃镜"
}
]
}
6.3 人员列表同步
- 接口:
GET /api/userlist - 返回: 人员列表数据
6.4 运行参数同步
- 接口:
GET /api/parameterlist - 返回: 运行参数配置数据
6.5 日志上传
- 接口:
POST /api/logsync - 参数: 日志数据数组
7. 交互流程
7.1 完整操作流程
1. 刷人员卡
- 系统读取卡号,验证是否在user数据库中
- 验证通过: 弹窗提示"选择要打开的门",显示"开左门"和"开右门"按钮
- 验证失败: 提示"无权限"
2. 选择门并打开
- 用户点击"开左门"或"开右门"
- 通过RS485发送对应开门指令
- 系统自动开启照明和风机
- 提示"左门已打开"或"右门已打开"
3. 刷内镜卡
- 系统读取卡号,验证是否在endo数据库中
- 验证通过: 弹窗提示"选择操作",显示"存入"和"取出"按钮
- 验证失败: 提示"无效内镜卡"
4. 选择操作
- 用户点击"存入": 根据插入位置更新scope表 → 记录日志 → 提示"内镜已存入"
- 用户点击"取出": 更新scope表对应位置为空闲 → 记录日志 → 提示"内镜已取出"
5. 关门
- 用户手动关门
- 触点开关触发,IO控制器上报DI状态变化
- 系统收到上报数据,更新对应门状态为关闭
- 自动关闭照明,开启真空泵和风机
7.2 内镜存取详细流程
1. 用户将内镜卡插入对应位置
2. IC卡读写器检测到卡片
3. 系统解析卡片数据,提取卡号
4. 在数据库中查询卡号,判断卡片类型
- 在endo表中找到 → 内镜卡
- 在user表中找到 → 人员卡
- 都未找到 → 无效卡片
5. 验证内镜卡号是否在endo数据库中
- 验证通过: 弹窗选择"存入"或"取出"
- 用户选择存入: 根据插入位置更新scope表对应位置 → 记录日志 → 弹窗提示"内镜已存入"
- 用户选择取出: 更新scope表对应位置为空闲 → 记录日志 → 弹窗提示"内镜已取出"
- 验证失败: 提示"无效内镜卡"
7.2 内镜取出流程
1. 用户点击"取镜"按钮
2. 弹窗显示"取镜",提示"请刷人员卡"
3. 用户刷人员卡
- 系统读取卡号,验证是否在user数据库中
- 验证通过: 弹窗显示人员姓名
- 验证失败: 提示"无权限"
4. 系统提示"请刷内镜卡"
5. 用户刷内镜卡
- 系统读取卡号,验证是否在endo数据库中
- 验证通过: 弹窗显示内镜名称、钢印号、类型等信息
- 验证失败: 提示"无效内镜卡"
6. 弹窗显示"确定"按钮
7. 用户点击"确定"按钮
- 系统更新scope表对应位置为空闲
- 记录操作日志(包括操作人员、内镜信息)
- 弹出Toast提示"取镜成功"
- 关闭弹窗
7.3 人员刷卡开门流程
1. 人员在主门处刷人员卡
2. IC卡读写器检测到卡片
3. 系统解析卡片数据,提取卡号
4. 在数据库中查询卡号,判断卡片类型
- 在user表中找到 → 人员卡
- 在endo表中找到 → 内镜卡
- 都未找到 → 无效卡片
5. 验证人员卡号是否在user数据库中
- 验证通过: 弹窗选择"开左门"或"开右门"
- 用户选择左门: 通过RS485发送左门开门指令 `030600000001480A` → 更新leftDoor状态 → 记录日志 → 提示"左门已打开"
- 用户选择右门: 通过RS485发送右门开门指令 `03060001000109CA` → 更新rightDoor状态 → 记录日志 → 提示"右门已打开"
- 验证失败: 提示"无权限"
7.4 手动开门流程
1. 点击主界面"开门"按钮
2. 弹出门选择对话框(开左门/开右门)
3. 用户选择要打开的门
4. 通过RS485发送对应开门指令
- 左门: 发送 `030600000001480A` → 更新leftDoor=true → 记录日志 → 提示"左门已打开"
- 右门: 发送 `03060001000109CA` → 更新rightDoor=true → 记录日志 → 提示"右门已打开"
7.5 开门事件自动处理流程
1. 检测到门打开(通过RS485站号03监测,发送开门指令后立即更新状态)
- 左门打开: leftDoor = true
- 右门打开: rightDoor = true
- door = leftDoor OR rightDoor
2. 关闭真空泵
3. 延迟300ms开启照明
4. 延迟300ms开启风机
5. 记录开门时间
6. 启动开门超时监控(3分钟)
7.7 关门事件自动处理流程
1. 检测到门关闭(通过RS485站号03监测,收到功能码04的DI状态上报)
2. 解析上报数据,识别是左门还是右门的触点触发
- 左门触点触发: 更新 leftDoor = false
- 右门触点触发: 更新 rightDoor = false
3. 重新计算door状态: door = leftDoor OR rightDoor
4. 关闭照明
5. 延迟300ms开启真空泵和风机
6. 清除开门超时监控
7. 停止报警
8. 异常处理
8.1 串口通信异常
- 串口初始化失败 → 提示"初始化串口失败"
- 串口打开失败 → 提示错误信息
- 指令发送失败 → 记录错误日志,不影响系统运行
8.2 数据验证异常
- 无效内镜卡 → 弹窗提示"无效内镜卡"
- 无效人员卡 → 弹窗提示"无权限"
- 超期内镜 → 黄色高亮提醒
- 超期内镜 → 红色高亮提醒
8.3 网络异常
- 网络未连接 → 显示"未连接"状态
- 网络同步失败 → 提示"同步失败,请检查网络"
- 自动重试机制(暂未实现)
8.4 设备操作异常
- 开门超时(>3分钟) → 蜂鸣器报警 + 弹窗提示"未关门,请及时关闭"
- 温湿度异常 → 自动启动风机
- 压差数据异常 → 过滤无效数据
9. 安全设计
9.1 访问控制
- 屏幕解锁密码: 保护主界面访问
- 设置密码: 保护设置界面访问
9.2 操作审计
- 所有关键操作记录到日志表
- 日志包含时间、操作人、操作内容
9.3 卡片验证
- 所有内镜卡和人员卡必须在数据库中注册
- 未经注册的卡片无法操作
9.4 调试模式保护
- 调试入口隐藏(连续点击标题5次触发)
- 调试模式提供数据清除功能(需谨慎操作)
10. 性能要求
10.1 响应时间
- 界面切换: < 300ms
- 串口指令响应: < 100ms
- 数据刷新间隔: 60秒
10.2 数据处理
- 串口数据解析: 实时处理
- 数据库查询: < 200ms
- 日志记录: 异步存储
10.3 资源占用
- 内存占用: < 200MB
- CPU占用: < 20%(正常运行时)
11. 非功能性需求
11.1 可靠性
- 7x24小时不间断运行
- 异常情况下自动恢复
- 断网情况下本地功能正常运行
11.2 可维护性
- 模块化设计,便于功能扩展
- 完善的日志记录
- 调试模式支持问题排查
11.3 可扩展性
- 支持增加内镜位置(需修改硬件)
- 支持新增传感器类型
- 支持新增控制设备
12. 版本规划
v1.0.1 (当前版本)
- ✅ 基础功能完整
- ✅ 左右门独立控制
- ✅ RS485门状态监测集成
- ✅ 自动任务执行
- ✅ 日志记录
- ✅ 环境监控
- ✅ 卡片识别
v1.1.0 (当前开发中)
- 🔄 取镜流程优化(人员卡+内镜卡双卡片验证)
- 🔄 串口通信错误处理优化
- 🔄 状态同步逻辑完善
v2.0.0 (未来规划)
- 📋 网络日志上传
- 📋 远程控制接口
- 📋 数据统计分析
- 📋 多设备管理
13. 附录
13.1 术语表
| 术语 | 说明 |
|---|---|
| 主门(概念门) | 逻辑门状态,由左门和右门状态共同决定(door = leftDoor OR rightDoor) |
| 实体门 | 物理门锁(左门/右门) |
| IC卡 | 接触式智能卡 |
| RFID卡 | 射频识别卡 |
| RS485 | 串行通信标准,用于传感器通信和门控制 |
| RS232 | 串行通信标准,用于卡片识别和设备控制 |
13.2 硬件清单
| 设备 | 数量 | 说明 |
|---|---|---|
| 温湿度传感器 | 1 | 站号02,RS485通信 |
| 压差传感器 | 1 | 站号01,RS485通信 |
| 门状态监测与门锁控制 | 1 | 站号03,RS485通信,中盛4路数字IO模块,控制左右门磁吸和触点开关 |
| IC卡读写器(门口) | 1 | 位于门口,可读取人员卡和内镜卡,RS232通信 |
| 继电器模块 | 1 | 控制风机、照明、真空泵、消毒设备 |
13.3 通信协议
RS485传感器数据格式
温湿度数据(站号02)
帧格式: 01 03 04 [湿度高字节] [湿度低字节] [温度高字节] [温度低字节] [CRC低] [CRC高]
示例: 01 03 04 02 98 00 BC 7B D5
压差数据(站号01)
帧格式: 01 03 02 [压差高字节] [压差低字节] [CRC低] [CRC高]
示例: 01 03 02 12 34 B5 33
门控制数据(站号03,中盛4路数字IO模块)
硬件配置:
- 站号: 03
- 通道1(地址0000H): 左门磁吸控制(DO) + 左门触点开关(DI)
- 通道2(地址0001H): 右门磁吸控制(DO) + 右门触点开关(DI)
- 控制指令: 功能码06(写单个保持寄存器)
- 状态上报: 功能码04(读输入寄存器),DI状态变化主动上报
控制指令:
左门开门(磁吸通电): 03 06 00 00 00 01 48 0A (发送后,leftDoor=true)
左门关门(磁吸断电): 03 06 00 00 00 00 89 CA (发送后,leftDoor=false)
右门开门(磁吸通电): 03 06 00 01 00 01 09 CA (发送后,rightDoor=true)
右门关门(磁吸断电): 03 06 00 01 00 00 49 E8 (发送后,rightDoor=false)
状态上报:
收到功能码04的上报数据,解析DI状态
- 左门触点触发: 更新 leftDoor=false
- 右门触点触发: 更新 rightDoor=false
RS232控制指令格式
帧格式: 5AA5EE [指令码] [操作码] [校验和]
指令码: 02=风机, 03=照明, 04=真空泵, 05=消毒
操作码: 01=开启, 00=关闭
示例:
风机开启: 5AA5EE0201
照明开启: 5AA5EE0301
真空泵开启: 5AA5EE0401
消毒开启: 5AA5EE0501
门控制说明
-
开门操作: 通过RS485站号03发送开门指令(磁吸通电)
- 左门开启:
cmd.LeftDoor(true)→ 发送030600000001480A(发送后,leftDoor状态更新为true) - 右门开启:
cmd.RightDoor(true)→ 发送03060001000109CA(发送后,rightDoor状态更新为true)
- 左门开启:
-
关门操作: 通过RS485站号03发送关门指令(磁吸断电)
- 左门关闭:
cmd.LeftDoor(false)→ 发送03060000000089CA(发送后,leftDoor状态更新为false) - 右门关闭:
cmd.RightDoor(false)→ 发送03060001000048E8(发送后,rightDoor状态更新为false)
- 左门关闭:
-
门状态计算:
- 门状态(door)根据左右门物理状态实时计算
- 规则:
door = leftDoor OR rightDoor - 任一门打开 → door状态为开
- 两门全关 → door状态为关
-
门状态上报:
- 接收到功能码04的DI状态上报数据
- 解析上报数据识别触点开关状态
- 左门触点触发(关门) → 更新
leftDoor = false - 右门触点触发(关门) → 更新
rightDoor = false
RS232卡片数据格式
卡片数据通过同一通道读取
卡存入(14字节):
格式: 20 01 00 08 04 00 00 00 [卡号4字节] [校验] 03
卡号位置: 倒数4-8字节(字节位置6-9)
卡离开(7字节):
格式: 20 01 00 01 02 [校验] 03
卡片类型判断:
- 从数据库查询卡号
- 在user表找到 → 人员卡
- 在endo表找到 → 内镜卡
- 都未找到 → 无效卡片
13.4 开发环境
- IDE: HBuilderX / VSCode
- Node.js: >= 14.0
- Android SDK: API Level 21+
- UniApp: 3.x
文档结束