// Demo.cpp : �������̨Ӧ�ó������ڵ㡣 // #include "stdafx.h" #include "Demo.h" #include "TCLCommand.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // Ψһ��Ӧ�ó������ CWinApp theApp; using namespace std; void test(); void test1(); int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // ��ʼ�� MFC ����ʧ��ʱ��ʾ���� if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: ���Ĵ�������Է���������Ҫ _tprintf(_T("����: MFC ��ʼ��ʧ��\n")); nRetCode = 1; } else { // TODO: �ڴ˴�ΪӦ�ó������Ϊ��д���롣 test1(); system("pause"); } return nRetCode; } void test() { #if 0 TCLCommand tcl(true); std::string cmds; std::vector<CommandParam> vtCommandParams; utils::GetResourceData(BIN_CMD, "BIN", cmds); if ( cmds.size() ) { tcl.parse_cmds_from_string(cmds, vtCommandParams); } if (tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1")) ) { tcl.SetTimeouts(); //tcl.parse_cmds_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams); for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ ) { if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) ) break; byte szData[1024] = {0}; tcl.PackingCommand(*it, _T(""), 0); if (tcl.WriteSync((void*)it->_cmdContext.c_str(), it->_cmdContext.size()) ) { Sleep(it->read_wait_time); int c = tcl.ReadSync(szData, 1024); std::string str = utils::BytesToHexString(szData, c, ' '); utils::_dprintf("�����%s", str.c_str()); str = ""; str.append((char*)szData, c); tcl.ParseResultString(*it, str, str.size()); Sleep(it->cmd_wait_time); } } } #else TCLCommand tcl(false); std::string cmds; std::vector<CommandParam> vtCommandParams; utils::GetResourceData(BIN_CMD, "BIN", cmds); if ( cmds.size() ) { tcl.parse_cmds_from_string(cmds, vtCommandParams); } if ( tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1") ) ) { tcl.SetTimeouts(); //tcl.parse_cmds_from_file("F:\\source\\scbc_repos\\Serail-Demo\\Demo\\command.data", vtCommandParams); for ( std::vector<CommandParam>::iterator it = vtCommandParams.begin(); it != vtCommandParams.end(); it++ ) { if ( !_tcsicmp(it->name.c_str(), _T("LeaveFactory")) ) break; byte szData[1024] = {0}; tcl.PackingCommand(*it, _T(""), 0); //sb.Read(szData, 1024, 100); if ( tcl.Write((void*)it->_cmdContext.c_str(), it->_cmdContext.size()) ) { Sleep(it->read_wait_time); int c = tcl.Read(szData, 1024, 200); std::string str = utils::BytesToHexString(szData, c, ' '); utils::_dprintf("�����%s", str.c_str()); str = ""; str.append((char*)szData, c); tcl.ParseResultString(*it, str, str.size()); Sleep(it->cmd_wait_time); } tcl.ClearCommBuffer(); } } #endif } void test1() { TCLCommand tcl(false); tcl.SetInternalCMDParams(BIN_CMD); tcl.SetExternalCMDParams(_T("F:\\cmds.bin")); if (tcl.Open(21, _T("baud=115200 parity=N data=8 stop=1")) ) { tcl.SetTimeouts(); tcl.EnterFactory(); int pid; tcl.GetProjectId(pid); std::string value; tcl.GetSoftVersion(value); tcl.GetDeviceId(value); tcl.GetClientType(value); tcl.GetMAC(value); tcl.GetHDCPKey(value); tcl.GetHDCPKey22(value); tcl.GetWidi(value); tcl.GetNetflixESN(value); tcl.GetWidevine(value); tcl.GetCiKey(value); tcl.GetOSDLanguage(value); tcl.GetShopLanguage(value); tcl.GetChannel(value); tcl.LeaveFactory(); } }