Pump_Dicts_Util.h 3.4 KB

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