Demo.cpp 2.4 KB

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