Demo.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. void test();
  13. void test1();
  14. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  15. {
  16. int nRetCode = 0;
  17. // 初始化 MFC 并在失败时显示错误
  18. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  19. {
  20. // TODO: 更改错误代码以符合您的需要
  21. _tprintf(_T("错误: MFC 初始化失败\n"));
  22. nRetCode = 1;
  23. }
  24. else
  25. {
  26. // TODO: 在此处为应用程序的行为编写代码。
  27. test1();
  28. system("pause");
  29. }
  30. return nRetCode;
  31. }
  32. void test()
  33. {
  34. #if 0
  35. TCLCommand tcl(true);
  36. std::string cmds;
  37. std::vector<CommandParam> vtCommandParams;
  38. utils::GetResourceData(BIN_CMD, "BIN", cmds);
  39. if ( cmds.size() ) {
  40. tcl.parse_cmds_from_string(cmds, vtCommandParams);
  41. }
  42. if (tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1")) )
  43. {
  44. tcl.SetTimeouts();
  45. //tcl.parse_cmds_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams);
  46. for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ )
  47. {
  48. if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) )
  49. break;
  50. byte szData[1024] = {0};
  51. tcl.PackingCommand(*it, _T(""), 0);
  52. if (tcl.WriteSync((void*)it->_cmdContext.c_str(), it->_cmdContext.size()) )
  53. {
  54. Sleep(it->read_wait_time);
  55. int c = tcl.ReadSync(szData, 1024);
  56. std::string str = utils::BytesToHexString(szData, c, ' ');
  57. utils::_dprintf("结果:%s", str.c_str());
  58. str = "";
  59. str.append((char*)szData, c);
  60. tcl.ParseResultString(*it, str, str.size());
  61. Sleep(it->cmd_wait_time);
  62. }
  63. }
  64. }
  65. #else
  66. TCLCommand tcl(false);
  67. std::string cmds;
  68. std::vector<CommandParam> vtCommandParams;
  69. utils::GetResourceData(BIN_CMD, "BIN", cmds);
  70. if ( cmds.size() ) {
  71. tcl.parse_cmds_from_string(cmds, vtCommandParams);
  72. }
  73. if ( tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1") ) )
  74. {
  75. tcl.SetTimeouts();
  76. //tcl.parse_cmds_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams);
  77. for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ )
  78. {
  79. if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) )
  80. break;
  81. byte szData[1024] = {0};
  82. tcl.PackingCommand(*it, _T(""), 0);
  83. //sb.Read(szData, 1024, 100);
  84. if ( tcl.Write((void*)it->_cmdContext.c_str(), it->_cmdContext.size()) )
  85. {
  86. Sleep(it->read_wait_time);
  87. int c = tcl.Read(szData, 1024, 200);
  88. std::string str = utils::BytesToHexString(szData, c, ' ');
  89. utils::_dprintf("结果:%s", str.c_str());
  90. str = "";
  91. str.append((char*)szData, c);
  92. tcl.ParseResultString(*it, str, str.size());
  93. Sleep(it->cmd_wait_time);
  94. }
  95. tcl.ClearCommBuffer();
  96. }
  97. }
  98. #endif
  99. }
  100. void test1()
  101. {
  102. TCLCommand tcl(false);
  103. tcl.SetInternalCMDParams(BIN_CMD);
  104. tcl.SetExternalCMDParams(_T("F:\\cmds.bin"));
  105. if (tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1")) )
  106. {
  107. tcl.SetTimeouts();
  108. tcl.EnterFactory();
  109. int pid;
  110. tcl.GetProjectId(pid);
  111. std::string value;
  112. tcl.GetSoftVersion(value);
  113. tcl.GetDeviceId(value);
  114. tcl.GetClientType(value);
  115. tcl.GetMAC(value);
  116. tcl.GetHDCPKey(value);
  117. tcl.GetHDCPKey22(value);
  118. tcl.GetWidi(value);
  119. tcl.GetNetflixESN(value);
  120. tcl.GetWidevine(value);
  121. tcl.GetCiKey(value);
  122. tcl.GetOSDLanguage(value);
  123. tcl.GetShopLanguage(value);
  124. tcl.GetChannel(value);
  125. tcl.LeaveFactory();
  126. }
  127. }