CommandParam.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #pragma once
  2. enum CMDOPT {
  3. CMDOPT_None = 0,
  4. CMDOPT_Get = 1,
  5. CMDOPT_Set = 2
  6. };
  7. typedef struct __CMDPARAM__ {
  8. std::string name; // 命令描述;
  9. std::string head; // 命令头;
  10. std::string cmd; // 命令码;
  11. std::string param; // 命令码参数;
  12. // 命令属性类型:
  13. // 0=None,只返回一段数据包;
  14. // 1=Get,返回一段或两段数据包(成功时返回2段,失败时返回1段);
  15. // 2=Set,返回一段或两段数据包(成功时返回1段,失败时返回1段);
  16. int nOption;
  17. bool returnParam; // 命令码是否多参数;
  18. int cmd_wait_time; // 两条串口指令间隔时间;
  19. int read_wait_time; // 写完串口后,等待多久读;
  20. byte _rtnCode; // 与head对应的;
  21. byte _rtnStatus; // 返回码:0A表示正常,0E、0F表示异常;
  22. std::string _rtnData; // 实际返回的数据:剥掉头尾、长度、CRC等内容;
  23. std::string _rtnError; // 出错描述;
  24. std::string _rtnContext; // 串口读取的内容:ReadFile的内容;
  25. std::string _cmdContext; // 串口写的内容:要WriteFile的内容;
  26. void UpdateRtnCode() {
  27. if (!_tcsicmp(_T("AA"), head.substr(0,2).c_str())) { // 调试用命令代码引导码;
  28. _rtnCode = 0xAB;
  29. }
  30. else if (!_tcsicmp(_T("AC"), head.substr(0,2).c_str())) { // 软件配屏参数调整命令代码引导码;
  31. _rtnCode = 0xAD;
  32. }
  33. else if (!_tcsicmp(_T("AE"), head.substr(0,2).c_str())) { // 保留命令发送类型引导码;
  34. _rtnCode = 0xAF;
  35. }
  36. }
  37. __CMDPARAM__& operator=(const __CMDPARAM__& cls) {
  38. if (this != &cls) {
  39. name = cls.name;
  40. head = cls.head;
  41. cmd = cls.cmd;
  42. param = cls.param;
  43. nOption = cls.nOption;
  44. returnParam = cls.returnParam;
  45. cmd_wait_time = cls.cmd_wait_time;
  46. read_wait_time = cls.read_wait_time;
  47. _rtnCode = cls._rtnCode;
  48. _rtnStatus = cls._rtnStatus;
  49. _rtnData = cls._rtnData;
  50. _rtnError = cls._rtnError;
  51. _rtnContext = cls._rtnContext;
  52. _cmdContext = cls._cmdContext;
  53. }
  54. return *this;
  55. }
  56. void Clean() {
  57. //_rtnCode = 0;
  58. _rtnStatus = 0x0E;
  59. #if _MSC_VER >= 1200 && _MSC_VER < 1500
  60. _rtnData = "";
  61. _rtnError = "";
  62. _rtnContext = "";
  63. _cmdContext = "";
  64. #elif _MSC_VER >= 1500
  65. _rtnData.clear();
  66. _rtnError.clear();
  67. _rtnContext.clear();
  68. _cmdContext.clear();
  69. #endif
  70. }
  71. __CMDPARAM__() {
  72. _rtnCode = 0;
  73. _rtnStatus = 0;
  74. nOption = 0;
  75. returnParam = false;
  76. cmd_wait_time = 100;
  77. read_wait_time = 100;
  78. }
  79. } CommandParam, * pCommandParam;