You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
8.9 KiB

  1. #include "internationalization.hpp"
  2. #include "app_protocols/apperrorcode/apperrorcode.hpp"
  3. using namespace iflytop;
  4. using namespace std;
  5. using namespace transmit_disfection_protocol;
  6. using namespace iflytop::err;
  7. class EcodeInfo {
  8. public:
  9. int code;
  10. string info;
  11. EcodeInfo(int code, const string& info) : code(code), info(info) {}
  12. };
  13. class CmdInfo {
  14. public:
  15. int cmdid;
  16. string info;
  17. CmdInfo(int cmdid, const string& info) : cmdid(cmdid), info(info) {}
  18. };
  19. static EcodeInfo chEcodeInfo[] = {
  20. {kerr_overtime, "通信超时"},
  21. {kerr_invalid_param, "非法参数"},
  22. {kerr_invalid_param_num, "参数数量错误"},
  23. {kerr_subdevice_offline, "485总线设备异常"},
  24. {kerr_function_not_support, "代码错误方法不支持"},
  25. {kerr_subdevice_overtime, "485总线设备通信超时"},
  26. {kerr_motor_reset_error, "电机复位错误"},
  27. {kerr_motor_subdevice_offline, "电机子设备离线"},
  28. {kerr_motor_driver_error, "电机驱动器错误"},
  29. {kerr_motor_undervoltage_error, "电机欠压错误"},
  30. {kerr_motor_unkown_error, "电机未知错误"},
  31. {kerr_motor_overtemperature_flag, "电机过温"},
  32. {kerr_motor_overtemperature_pre_warning_flag, "电机过温预警"},
  33. {kerr_motor_short_to_ground_indicator_phase_A, "电机A相短接"},
  34. {kerr_motor_short_to_ground_indicator_phase_B, "电机B相短接"},
  35. {kerr_motor_open_load_indicator_phase_A, "电机A相过载"},
  36. {kerr_motor_open_load_indicator_phase_B, "电机B相过载"},
  37. {kerr_motor_standstill_indicator, "电机异常停止"},
  38. {kerr_AirBlowerError, "空压机异常"},
  39. {kerr_HeaterError, "加热片异常"},
  40. {kerr_BlowerError, "鼓风机异常"},
  41. {kerr_ProportionalValveError, "气密性测试专用空压机异常"},
  42. {kappe_code_error, "代码错误"},
  43. {kappe_component_cfg_not_find, "组件配置未找到"},
  44. {kappe_cmd_not_support, "命令不支持"},
  45. {kappe_parse_json_err, "解析json错误"},
  46. {kappe_std_exception, "标准库异常"},
  47. {kappe_db_operate_error, "数据库操作错误"},
  48. {kappe_missing_param, "缺少参数"},
  49. {kappe_param_num_err, "参数个数错误"},
  50. {kappe_param_value_err, "参数值错误"},
  51. {kappe_user_not_exist, "用户不存在"},
  52. {kappe_passwd_error, "密码错误"},
  53. {kappe_user_exist, "用户已存在"},
  54. {kappe_login_fail_device_islogined, "登陆失败,设备已登录"},
  55. {kappe_disinfectant_insufficient, "消毒液不足"},
  56. {kappe_the_bottom_of_the_device_has_water, "硬件仓内有液体"},
  57. {kappe_the_evaporation_bin_has_water, "蒸发仓内有液体"},
  58. {kappe_the_sensor_is_prehearting, "传感器正在预热"},
  59. {kappe_not_detect_udisk, "未检测到U盘"},
  60. {kappe_udisk_wr_fail, "U盘读写错误"},
  61. {kappe_open_file_error, "文件操作错误"},
  62. {kappe_adding_liquid_is_already_in_place, "液体已加到位"},
  63. {kappe_adding_liquid_is_greater_than_the_maximum_capacity_of_the_device, "加液大于设备最大容量"},
  64. {kappe_sensor_is_pre_hearting, "传感器正在预热"},
  65. {kappe_state_is_busy, "设备忙"},
  66. {kappe_is_adding_liquid, "加液中"},
  67. {kappe_is_draining_liquid, "排液中"},
  68. {kappe_is_disinfecting, "消毒中"},
  69. {kappe_is_air_leak_detect_testing, "气密性测试中"},
  70. {kappe_setting_id_outof_range, "设置ID超出范围"},
  71. {kappe_exception_flag_is_setted, "设备硬件异常"},
  72. {kappe_disinfection_state_is_wrong, "消毒状态错误"},
  73. {kappe_liquid_ctrl_reboot, "液路板复位"},
  74. {kappe_power_control_reboot, "功率板复位"},
  75. {kappe_device_type_not_init, "设备未初始化"},
  76. };
  77. static CmdInfo cmdInfo[] = {
  78. {kfn_read_board_info, "读取子板信息"},
  79. {kfn_force_report, "强制上报"},
  80. {kfn_read_sysinfo, "读取子板系统信息"},
  81. {kfn_read_taskinfo, "读取子板任务信息"},
  82. {kfn_heart_ping, "心跳PING"},
  83. {kfn_clear_reset_flag, "清除复位标志"},
  84. {kfn_enable_report, "启用上报"},
  85. {kfn_reset_board, "复位子板"},
  86. {kreport_heatpacket_pong, "心跳PONG"},
  87. {kreport_exception_error, "异常错误上报"},
  88. {kreport_device_reset, "设备复位上报"},
  89. {kfn_pump_rotate, "泵机控制"},
  90. {kfn_pump_stop, "泵机控制"},
  91. {kfn_pump_set_ihold_irun_idelay, "泵机设置IHOLD参数"},
  92. {kfn_pump_set_acc, "泵机设置加速参数"},
  93. {kfn_pump_ping, "泵机PING"},
  94. {kfn_pump_set_ramp, "泵机设置RAMP"},
  95. {kfn_pump_set_tzw, "泵机设置TZW"},
  96. {kfn_pump_set_subic_reg, "泵机设置子IC寄存器"},
  97. {kfn_pump_get_subic_reg, "泵机获取子IC寄存器"},
  98. {kfn_pump_is_run, "泵机是否在运行"},
  99. {kfn_heater_ctrl, "加热片控制"},
  100. {kfn_heater_ctrl_safe_valve, "加热片安全阀控制"},
  101. {kfn_heater_read_ei, "读取加热片电流"},
  102. {kfn_heater_read_temperature_data, "读取加热片温度数据"},
  103. {kfn_heater_read_ei_adc_raw, "读取加热片电流ADC原始数据"},
  104. {kfn_heater_read_temperature_data_adc_raw, "读取加热片温度数据ADC原始数据"},
  105. {kfn_heater_is_open, "加热片是否开启"},
  106. {kfn_h2o2_sensor_read_calibration_date, "读取H2O2传感器校准日期"},
  107. {kfn_h2o2_sensor_read_sub_ic_errorcode, "读取H2O2传感器子IC错误码"},
  108. {kfn_h2o2_sensor_read_sub_ic_reg, "读取H2O2传感器子IC寄存器"},
  109. {kreport_h2o2_sensor_data, "H2O2传感器数据上报"},
  110. {kfn_triple_warning_light_ctl, "三色警示灯控制"},
  111. {kfn_triple_warning_light_read_state, "三色警示灯读取状态"},
  112. {kfn_evaporation_tank_water_sensor_read_state, "读取蒸发仓水位传感器状态"},
  113. {kfn_device_bottom_water_sensor_read_state, "读取设备底部水位传感器状态"},
  114. {kreport_evaporation_bin_water_sensor, "蒸发仓水位传感器上报"},
  115. {kreport_device_bottom_water_sensor, "设备底部水位传感器上报"},
  116. {kfn_blower_ctrl, "风机控制"},
  117. {kfn_blower_ctrl_safe_valve, "风机安全阀控制"},
  118. {kfn_blower_read_ei, "读取风机电流"},
  119. {kfn_blower_is_error, "读取风机电气异常状态"},
  120. {kfn_blower_read_ei_adc_raw, "读取风机电流ADC原始数据"},
  121. {kfn_blower_is_open, "读取风机是否开启"},
  122. {kfn_air_compressor_ctrl, "空压机控制"},
  123. {kfn_air_compressor_ctrl_safe_valve, "空压机安全阀控制"},
  124. {kfn_air_compressor_read_ei, "读取空压机电流"},
  125. {kfn_air_compressor_read_ei_adc_raw, "读取空压机电流ADC原始数据"},
  126. {kfn_air_compressor_is_open, "读取空压机是否开启"},
  127. {kfn_air_leak_detect_ac_ctrl, "空压机气密性测试控制"},
  128. {kfn_air_leak_detect_ac_is_open, "空压机气密性测试是否开启"},
  129. {kfn_psbus_read_data, "读取PSBUS数据"},
  130. {kfn_psbus_scan, "扫描PSBUS设备"},
  131. {kfn_psbus_start_report, "开始PSBUS设备上报"},
  132. {kfn_psbus_stop_report, "停止PSBUS设备上报"},
  133. {kreport_pressure_data, "压力数据上报"},
  134. {kfn_proportional_set_valve, "设置比例阀"},
  135. {kfn_proportional_read_pos, "读取比例阀位置"},
  136. {kfn_proportional_is_busy, "比例阀是否忙碌"},
  137. {kfn_air_leak_test_set_mode, "设置气密性测试模式"},
  138. {kfn_air_leak_test_get_mode, "读取气密性测试模式"},
  139. {kfn_ext_ch_selector_set_ch, "设置外部通道选择器通道"},
  140. {kfn_ext_ch_selector_get_ch, "获取外部通道选择器通道"},
  141. {kfn_set_add_fluid_channel_selector_valve, "设置加液通道选择阀"},
  142. {kfn_disinfectant_bucket_level_sensor_read_level, "读取消毒液桶液位传感器"},
  143. };
  144. string Internationalization::ecode2description(int ecode) {
  145. for (const auto& e : chEcodeInfo) {
  146. if (e.code == ecode) {
  147. return fmt::format("{}({})", e.info, e.code);
  148. }
  149. }
  150. return fmt::format("错误码{}", ecode);
  151. }
  152. string Internationalization::cmdid2str(int cmdid) {
  153. for (const auto& c : cmdInfo) {
  154. if (c.cmdid == cmdid) {
  155. return fmt::format("{}({})", c.info, c.cmdid);
  156. }
  157. }
  158. return fmt::format("命令ID{}", cmdid);
  159. }
  160. string Internationalization::ecode2description(int ecode, int32_t toboard, int32_t cmdid, uint8_t* param, int32_t paramLen) { //
  161. if (cmdid == kfn_proportional_set_valve) {
  162. int32_t subid = ((int32_t*)param)[0];
  163. return fmt::format("{},设置比例阀{}异常", ecode, subid);
  164. }
  165. return fmt::format("{},执行{}错误", ecode, cmdid2str(cmdid));
  166. }
  167. string Internationalization::deviceBusyError2description(int ecode, DeviceState deviceState) {
  168. if (ecode == kappe_state_is_busy) {
  169. switch (deviceState) {
  170. case DeviceState::kIdle:
  171. return "设备空闲";
  172. case DeviceState::kAddingLiquid:
  173. return "操作不允许, 设备正在加液";
  174. case DeviceState::kDrainingLiquid:
  175. return "操作不允许, 设备正在排液";
  176. case DeviceState::kDisinfection:
  177. return "操作不允许, 设备正在消毒";
  178. case DeviceState::kAirLeakDetectTesting:
  179. return "操作不允许, 设备正在气密性测试";
  180. default:
  181. return "设备状态未知";
  182. }
  183. }
  184. return ecode2description(ecode);
  185. }