Demo.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Demo.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "Demo.h"
  5. #include "TCLCommand.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. // 唯一的应用程序对象
  10. CWinApp theApp;
  11. using namespace std;
  12. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  13. {
  14. int nRetCode = 0;
  15. // 初始化 MFC 并在失败时显示错误
  16. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  17. {
  18. // TODO: 更改错误代码以符合您的需要
  19. _tprintf(_T("错误: MFC 初始化失败\n"));
  20. nRetCode = 1;
  21. }
  22. else
  23. {
  24. // TODO: 在此处为应用程序的行为编写代码。
  25. #if 1
  26. TCLCommand tcl(true);
  27. if (tcl.Open(23, _T("baud=115200 parity=N data=8 stop=1")) )
  28. {
  29. tcl.SetTimeouts();
  30. std::vector<CommandParam> vtCommandParams;
  31. tcl.parse_cmd_param_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams);
  32. for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ )
  33. {
  34. if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) )
  35. break;
  36. byte szData[1024] = {0};
  37. std::string cmd = tcl.PackingCommand(*it, _T(""), 0);
  38. if (tcl.WriteSync((void*)cmd.c_str(), cmd.size()) )
  39. {
  40. Sleep(it->read_wait_time);
  41. int c = tcl.ReadSync(szData, 1024);
  42. std::string str = utils::BytesToHexString(szData, c, ' ');
  43. utils::_dprintf("结果:%s", str.c_str());
  44. str = "";
  45. str.append((char*)szData, c);
  46. tcl.ParseResultString(*it, str, str.size());
  47. Sleep(it->cmd_wait_time);
  48. }
  49. }
  50. }
  51. #else
  52. CBaseSerial sb;
  53. if ( sb.Open(23, _T("baud=115200 parity=N data=8 stop=1") ) )
  54. {
  55. sb.SetTimeouts();
  56. std::vector<CommandParam> vtCommandParams;
  57. parse_cmd_param_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams);
  58. for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ )
  59. {
  60. if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) )
  61. break;
  62. byte szData[1024] = {0};
  63. std::string cmd = PackingCommand(*it, _T(""), 0);
  64. //sb.Read(szData, 1024, 100);
  65. if ( sb.Write((void*)cmd.c_str(), cmd.size()) )
  66. {
  67. Sleep(it->read_wait_time);
  68. int c = sb.Read(szData, 1024, 200);
  69. std::string str = BytesToHexString(szData, c, ' ');
  70. _dprintf("结果:%s", str.c_str());
  71. Sleep(it->cmd_wait_time);
  72. }
  73. sb.ClearCommBuffer();
  74. }
  75. }
  76. #endif
  77. system("pause");
  78. }
  79. return nRetCode;
  80. }