Pump_Dicts_Util.h 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*--------------------------------------------------------------------------------------
  2. * @file pump_dicts.h
  3. * @author ZhaoDecheng
  4. * @version base on stm32f0x
  5. * @date 2024.01.03
  6. * @brief 协议封装
  7. ---------------------------------------------------------------------------------------*/
  8. #ifndef __PUMP_DICTS_UTIL_H
  9. #define __PUMP_DICTS_UTIL_H
  10. #include <stdint.h>
  11. struct PUMPDICTS_ParamsStruct{
  12. uint16_t userId; // 编号1,用户编号;医院编号。
  13. uint8_t networkType; // 编号2,网络类型。
  14. char sim[30]; // 编号4,sim卡号
  15. uint16_t lac; // 编号5,基站ID。
  16. uint32_t ci; // 编号6,基站小区ID。
  17. uint8_t pumpType; // 编号101,泵类型。
  18. uint32_t infusionId; // 编号103,输注编号。
  19. uint32_t dataNumber; // 编号104,数据编号。
  20. uint64_t patientCode; // 编号105,住院号。
  21. uint16_t continueDose; // 编号106,持续量。
  22. uint8_t lockTime; // 编号107,锁定时间。
  23. uint8_t ultimateDose; // 编号108,极限量。
  24. uint8_t firstDose; // 编号109,首次量。
  25. uint8_t appendDose; // 编号110,追加量。
  26. uint16_t totalDose; // 编号111,总量。
  27. uint16_t finishDose; // 编号112,已输注量。
  28. uint8_t validTimes; // 编号113,有效追加次数。
  29. uint8_t invalidTimes; // 编号114,无效追加次数。
  30. uint8_t alarm_BubbleOrAneroid; // 编号115,1气泡或无液报警。0表示不报警,1表示报警。
  31. uint8_t alarm_Blocked; // 编号115,2堵塞报警。0表示不报警,1表示报警。
  32. uint8_t alarm_Total; // 编号115,3输入总量报警。0表示不报警,1表示报警。
  33. uint8_t alarm_Ultimate; // 编号115,4极限量报警。0表示不报警,1表示报警。
  34. uint8_t alarm_LowPower; // 编号115,5电量耗尽报警。0表示不报警,1表示报警。
  35. uint8_t alarm_Finished; // 编号115,6输液结束报警。0表示不报警,1表示报警。
  36. uint8_t alarm_MotorOutofcontrol; // 编号115,7电机失控报警。0表示不报警,1表示报警。
  37. uint8_t alarm_MechanicalBreakdown; // 编号115,8机械故障报警。0表示不报警,1表示报警。
  38. uint8_t alarm_UnfilledPillBox; // 编号115,9未装药盒报警。0表示不报警,1表示报警。
  39. uint8_t forcast_WillFinished; // 编号116,1输液将结束预报。0表示不预报,1表示预报。
  40. uint8_t forcast_InsufficientAnalgesia; // 编号116,2镇痛不足预报。0表示不预报,1表示预报。
  41. uint8_t forcast_LowPowerForecast; // 编号116,3电量偏低预报。0表示不预报,1表示预报。
  42. uint8_t runStatus; // 编号117,运行状态。0关机;1开机;2运行;3暂停;4待机。
  43. uint8_t electricity; // 编号118,电量。
  44. uint8_t pulseLockTime; // 编号121,脉冲量锁时。
  45. uint8_t firstLockTime; // 编号122,脉冲首次锁时。
  46. uint8_t pulseDose; // 编号123,脉冲量。
  47. uint16_t ward; // 编号124,病区。
  48. uint16_t bedNo; // 编号125,床号。
  49. uint16_t version; // 编号136,版本号。
  50. };
  51. /**
  52. * 协议编码
  53. * 输入<<
  54. * pump_params 泵参数。
  55. * 输出>>
  56. * pump_data 编码后的二进制数据。
  57. * pump_data_length 编码后的二进制数据的长度。
  58. **/
  59. void PUMPDICTS_ProtocolEncode(struct PUMPDICTS_ParamsStruct * pump_params, uint8_t * pump_data, uint16_t * pump_data_length);
  60. /**
  61. * 协议解码
  62. * 输出<<
  63. * pump_data 编码后的二进制数据。
  64. * pump_data_length 编码后的二进制数据的长度。
  65. * 输出>>
  66. * pump_params 泵参数。
  67. **/
  68. void PUMPDICTS_ProtocolDecode(struct PUMPDICTS_ParamsStruct * pump_params, uint8_t * pump_data, uint16_t * pump_data_length);
  69. #endif