/*-------------------------------------------------------------------------------------- * @file pump_dicts.h * @author ZhaoDecheng * @version base on stm32f0x * @date 2024.01.03 * @brief 协议封装 ---------------------------------------------------------------------------------------*/ #ifndef __PUMP_DICTS_UTIL_H #define __PUMP_DICTS_UTIL_H #include struct PUMPDICTS_ParamsStruct{ uint16_t userId; // 编号1,用户编号;医院编号。 uint8_t networkType; // 编号2,网络类型。 char sim[30]; // 编号4,sim卡号 uint16_t lac; // 编号5,基站ID。 uint32_t ci; // 编号6,基站小区ID。 uint8_t pumpType; // 编号101,泵类型。 uint32_t infusionId; // 编号103,输注编号。 uint32_t dataNumber; // 编号104,数据编号。 uint64_t patientCode; // 编号105,住院号。 uint16_t continueDose; // 编号106,持续量。 uint8_t lockTime; // 编号107,锁定时间。 uint8_t ultimateDose; // 编号108,极限量。 uint8_t firstDose; // 编号109,首次量。 uint8_t appendDose; // 编号110,追加量。 uint16_t totalDose; // 编号111,总量。 uint16_t finishDose; // 编号112,已输注量。 uint8_t validTimes; // 编号113,有效追加次数。 uint8_t invalidTimes; // 编号114,无效追加次数。 uint8_t alarm_BubbleOrAneroid; // 编号115,1气泡或无液报警。0表示不报警,1表示报警。 uint8_t alarm_Blocked; // 编号115,2堵塞报警。0表示不报警,1表示报警。 uint8_t alarm_Total; // 编号115,3输入总量报警。0表示不报警,1表示报警。 uint8_t alarm_Ultimate; // 编号115,4极限量报警。0表示不报警,1表示报警。 uint8_t alarm_LowPower; // 编号115,5电量耗尽报警。0表示不报警,1表示报警。 uint8_t alarm_Finished; // 编号115,6输液结束报警。0表示不报警,1表示报警。 uint8_t alarm_MotorOutofcontrol; // 编号115,7电机失控报警。0表示不报警,1表示报警。 uint8_t alarm_MechanicalBreakdown; // 编号115,8机械故障报警。0表示不报警,1表示报警。 uint8_t alarm_UnfilledPillBox; // 编号115,9未装药盒报警。0表示不报警,1表示报警。 uint8_t forcast_WillFinished; // 编号116,1输液将结束预报。0表示不预报,1表示预报。 uint8_t forcast_InsufficientAnalgesia; // 编号116,2镇痛不足预报。0表示不预报,1表示预报。 uint8_t forcast_LowPowerForecast; // 编号116,3电量偏低预报。0表示不预报,1表示预报。 uint8_t runStatus; // 编号117,运行状态。0关机;1开机;2运行;3暂停;4待机。 uint8_t electricity; // 编号118,电量。 uint8_t pulseLockTime; // 编号121,脉冲量锁时。 uint8_t firstLockTime; // 编号122,脉冲首次锁时。 uint8_t pulseDose; // 编号123,脉冲量。 uint16_t ward; // 编号124,病区。 uint16_t bedNo; // 编号125,床号。 uint16_t version; // 编号136,版本号。 }; /** * 协议编码 * 输入<< * pump_params 泵参数。 * 输出>> * pump_data 编码后的二进制数据。 * pump_data_length 编码后的二进制数据的长度。 **/ void PUMPDICTS_ProtocolEncode(struct PUMPDICTS_ParamsStruct * pump_params, uint8_t * pump_data, uint16_t * pump_data_length); /** * 协议解码 * 输出<< * pump_data 编码后的二进制数据。 * pump_data_length 编码后的二进制数据的长度。 * 输出>> * pump_params 泵参数。 **/ void PUMPDICTS_ProtocolDecode(struct PUMPDICTS_ParamsStruct * pump_params, uint8_t * pump_data, uint16_t * pump_data_length); #endif