== Requirements == === 指示灯 === *'''故障灯''' #状态: #*故障:红灯常亮。 #*正常:灯不亮。 #状态说明: #*故障: #**电机堵转。 #**电流检测异常。 *'''电池灯''' #状态: #*低电量:红灯常亮。 #*充电中:绿灯闪烁。 #*充电完成:绿灯常亮。 #*正常:灯不亮。 #判断说明: #*低电量判断: #**正常工作后的低电压。 #**电机正常工作时拉低电压(低电压判断需要放宽)。 #**电机堵转时拉低电压(低电压判断需要放宽)。 *'''蓝牙灯''' #状态: #*无连接:蓝灯闪烁。 #*连接中:蓝灯常亮。 #*非工作状态:灯不亮。 *'''Ready灯''' #状态: #*前组件安装完成/丝杆到位:绿灯常亮。 #*注射中:绿灯闪烁。 #*无前组件/完成注射/丝杆没到位:灯不亮。 *'''OK灯''' #状态: #*注射完成:绿灯常亮。 #*电机回收丝杆完成后:灯不亮。 === 蜂鸣器 === #状态: #*前组件安装完成:一声短音。 #*故障:连续3次短音。 #*完成注射:一声长音。 === 蓝牙数据传输 === #状态: #*故障:上传具体故障说明。 #*注射完成:上传注射完成时间。 === OTA === #过程: #*使用.img文件通过蓝牙对设备进行空中更新。 #*进入方式:连接蓝牙,进行.img文件通过蓝牙对设备进行空中更新。 === 蓝牙协议 === #服务特征部分: #*服务2UUID:00000000-1111-2222-2222-888888888888 #**特征1UUID:11111111-0000-0000-0000-111111111111 #**属性:用于测试时模拟用户打完针后的时间保存,写入0x12触发一次保存当下时间。 #*服务3UUID:1805 #**特征1:Current Time #**属性:读取和修改RTC时间。 #**读写时间格式:单次时间为80位16进制数构成。 #***比如0xE6070614093A00040000 #***年:H07E6 == D2022(两位颠倒一下) #***月:H06 == D6 #***日:H14 == D20 #***时:H09 == D9 #***分:H3A == D58 #***秒:H00 == D0 #***H040000:暂无意义。 #*服务4UUID:180F #**特征1:Battery Level #**属性:读取剩余电池含量。 #**读电池含量格式:单次电池含量为8位16进制数构成: #***比如0x42,代表剩余电量66%。 #*服务5UUID:11111111-0000-0000-0000-222222222222 #**特征1UUID:11111111-0000-0000-0000-000000000002 #**属性:写入一个时间,读取写入时间以下的时间。 #**读时间格式: #***正在修复错误时间数据:0xff44ff44(不可以进行写时间操作) #***正在搜索:0xFF11FF11 #***错误指令:0xFF33FF33 #***没搜索到:0xFF55FF55 #***搜索成功:直接读到480字节的时间数据: #****比如0x0107000101461300 #****秒:H01 == D1 #****分:H07 == D7 #****时:H00 == D0 #****日:H01 == D1 #****月:H01 == D1 #****年(后两个数字):H46 == D70 #****年(前两个数字):H13 == D19 #****H00:暂无意义。 #**写时间格式:单次时间为64位16进制数构成。 #***比如:0x0502030101461300 #***秒:H05 == D5 #***分:H02 == D2 #***时:H03 == D3 #***日:H01 == D1 #***月:H01 == D1 #***年(后两个数字):H46 == D70 #***年(前两个数字):H13 == D19 #***H00:暂无意义。 #***如果写:0xff000000000000ff #***读时间将会从头开始读取。 #**特征2UUID:11111111-0000-0000-0000-000000000022 #**属性:读取特定时间是否可以读取的信息。 #**读说明: #***读取到0xff22ff22,说明内部错误时间修复完成,可以进行正常时间读取。 #***读取到0xff44ff44,说明内部错误时间修复未完成,不可以进行正常时间读取。 #*服务6UUID:11111111-0000-0000-0000-333333333333 #**特征1UUID:11111111-0000-0000-0000-000000000001 #**属性:读写硬件版本信息,支持字符串和16进制数的写入和读出(最大25个字节)。 #**特征2UUID:11111111-0000-0000-0000-000000000011 #**属性:读写软件版本信息,支持字符串和16进制数的写入和读出(最大25个字节)。 #**特征3UUID:11111111-0000-0000-0000-000000000111 #**属性:读写序列号信息,支持字符串和16进制数的写入和读出(最大25个字节)。 #*服务7UUID:11111111-0000-0000-0000-444444444444 #**特征1UUID:11111111-0000-0000-0000-000000001111 #**属性:读写厂商信息和设备型号信息,支持字符串和16进制数的写入和读出(最大50个字节)。 #*服务8UUID:11111111-0000-0000-0000-555555555555 #**特征1UUID:11111111-0000-0000-0000-000000055555 #**属性:读电池状态,支持16进制数的读出。 #**读说明: #***H27:正常上电状态。 #***H23:恒流状态。 #***H22:恒压状态。 #***H21:充电完成状态。 #***例如:0x2700:H27说明电池正在正常工作,H00暂无意义。 #**特征2UUID:11111111-0000-0000-0000-000000066666 #**属性:写命令进行恢复出场设置;读命令判断是否初始化完成。 #**写说明: #***0xff88ff88:开始初始化。 #**读说明: #***0x00000000:初始化完成。 #***0xff88ff88:初始化未完成。 #*服务9UUID:11111111-0000-0000-0000-777777777777 #**特征1UUID:11111111-0000-0000-0000-000000088888 #**属性:完成遥控模式的一系列蓝牙操作。 #***如果写:0xee0000000000ee,代表模拟组装上上组件。 #***如果写:0xdd0000000000dd,代表模拟下压针筒。 #***如果写:0xcc0000000000cc,代表模拟RESET。 #***如果写:0xbb0000000000bb,代表模拟抬起针筒。 #**特征2UUID:11111111-0000-0000-0000-000000099999 #**属性:读遥控模式返回值。 #***如果读到:0xee000000ee,说明模拟组装上上组件命令发送成功。 #***如果读到:0xdd000000dd,说明模拟下压针筒命令发送成功。 #***如果读到:0xcc000000cc,说明模拟RESET命令发送成功。 #***如果读到:0xbb000000bb,说明模拟抬起针筒命令发送成功。 #***如果读到:0x0000000000,说明已经读取完成清空了。 #**特征3UUID:11111111-0000-0000-0000-0000000aaaaa #**属性:设置开关debug模式。 #**写说明: #***H1:进入debug模式。 #***H0:进入正常打针模式。 #**读说明: #***H1:在debug模式中。 #***H0:在正常打针模式中。 #**特征4UUID:11111111-0000-0000-0000-0000000bbbbb #**属性:读取当前注射笔错误码。 #**读说明: #***H00:无错误。 #***H01:错误:电量低。 #***H02:错误:电机复位不成功。 #***H03:错误:注射次数超出。 #***H04:错误:注射锁止时间状态锁止。 #***H05:错误:超液。 #***H06:错误:电机卡死。 #***H07:错误:空瓶。 #***H08: 错误:超瓶。 #***H09: 错误:下压堵转后电机位置不正确。 === 流程图 === [[Image:ESIM流程图v1.0.2.jpg]]