``` TODO: 1. 数据库文件是否被破坏检查 2. 数据库文件如果被破坏,自动恢复默认配置 3. 添加归零保护,底层检测,如果电机未归零就执行moveTo,则报错。 坐标XY方向约定: 0 -----------------------> | (X) | | | | | v(Y) 舵机位置约定: 抓手 1.夹紧位置为0 2.最大张开位置为300 3.垂直位置70 水平位置 初始位置为0 2.水平移动舵机初始化位置为200(处于设备最后端) 复位要求: 1. 板夹仓推杆电机需要处于零点位置 2. 光学模组推杆电机需要处于零点位置 3. 试管架通道中没有试管架 4. 出料口没有试管架 5. 进出料位置没有试管 逻辑漏洞 1.高试管如果脱帽,会被识别成低试管。 TODO: 1.想办法解决 4:号仓位退不出 14 ``` ``` 入料: while(true) { } ``` ``` 第一层服务 FrontEndEventRouter 前端事件路由器 用户服务:(OK) 1.添加 2.删除 3.修改 ID卡服务: 1.插入检测,插入事件上报(Service,Fn) 2.删除 3.查询 系统服务: 1.时间修改 2.本机IP 系统配置服务: 1. 设备初始化服务: 设备初始化运行前检查 耗材扫描服务: 样本添加服务: 主运行服务: 入料与预处理控制服务: 滴定 反应 设备运行状态服务: ------------------------------------------------ 第二层服务: 硬件层 光学标定服务: 报表打印服务: 开机---> 设备不动 service core_service event_bus app_service hardware_service setting_service appSettingService TODO: 初始化服务 物料扫描服务 入料服务 预处理服务 孵育服务 取样与反应服务 ``` ``` ``` ``` 动作: 入料并扫描 准备下一个样本 条件: 当前正在处理的样本处理完成 && 急诊位Pending | 还有剩余试管未处理 样本处理 BEFORE_PROCESS 预处理A(脱帽,摇匀) BEFORE_PROCESS 预处理B(hbot取tip头,移动到待机位) BEFORE_PROCESS 预处理C(推出反应板夹) PROCESS 处理(取样,处理,滴定) AFTER_PROCESS 后处理 将反应板推出到光学扫描位 光学扫描 代码规范 1. 什么样的检查写在动作中? 需要进行报错处理的检查写在步骤中 ``` ``` 任务列表: 0. 重新思考整个系统的状态 1. 尽可能完成整个流程的控制,如果中间缺少某些位置参数,则只修改状态,让整个流程执行下去。 2. 支持急诊位置 3. 根据配置,修改对应的动作的细节,使其支持更多的试管架类型,更多的项目类型。 4. 完善日志 3. 完成剩余动作的校准工作。(取样本,取耗材,滴定,光学扫描,结果分析) 5. 添加温度控制。 5. 支持吸空检测。 6. 支持反应板夹类型检测。 ``` ``` TODO: 1. 如果当前板夹仓对应位置的耗材批次码没有发生变化,则耗材量不重新初始化。 2. tip头只有在第一次扫描时,才会初始化其数量是满的。 ``` ``` TODO: 1. 软件启动后读取所有单片机版本号。 2. 添加温度控制服务。(不用向前台提供接口) 3. 扫描耗材时,检查ID卡,同时检查温度是否一致。 4. MainFlowCtrl监听,温度控制异常事件,当发生异常时,主动暂停MainFlowCtrl 5. 打印结果 6. 支持扫码枪 添加DEBUG模式, 需要模拟硬件行为的地方。 1. 耗材扫描 2. 初始化 3. 工作流中的所有动作 需要产生的虚假行为 1. 触发.提供插入一个假的ID卡配置的事件 2. 触发.提供假的耗材配置 3. 触发.提供假的样本 4. 触发.添加一个假的急诊 为前台提供的接口: 设备控制 主流程控制 扫描耗材 添加急诊 开关机 配置: xxx xxx xxx 数据 项目管理 用户接口 事件 ... 错误码 ... ```