|
@@ -99,19 +99,9 @@ bool TCLCommand::parse_pair_key(std::string& RetValue, std::string strLine, TCHA
|
|
|
|
|
|
int TCLCommand::parse_cmds_from_file(const TCHAR* file_name, std::vector<CommandParam>& vtCommandParams)
|
|
|
{
|
|
|
- TCHAR buf[MAX_PATH] = { 0 };
|
|
|
- TCHAR name[MAX_PATH] = { 0 };
|
|
|
- TCHAR option[MAX_PATH] = { 0 };
|
|
|
- TCHAR head[MAX_PATH] = { 0 };
|
|
|
- TCHAR code[MAX_PATH] = { 0 };
|
|
|
- TCHAR param[MAX_PATH] = { 0 };
|
|
|
- TCHAR multicode[MAX_PATH] = { 0 };
|
|
|
- TCHAR cmd_wait_time[MAX_PATH] = { 0 };
|
|
|
- TCHAR read_wait_time[MAX_PATH] = { 0 };
|
|
|
-
|
|
|
int ret = -1;
|
|
|
FILE* fp = NULL;
|
|
|
-
|
|
|
+ TCHAR buf[MAX_PATH] = { 0 };
|
|
|
if (!file_name || file_name[0] == '\0')
|
|
|
return ret;
|
|
|
|
|
@@ -131,40 +121,9 @@ int TCLCommand::parse_cmds_from_file(const TCHAR* file_name, std::vector<Command
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#if _MSC_VER >= 1200 && _MSC_VER < 1500 // VC6.0~8.0
|
|
|
- if (sscanf(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, option, head, code, param, multicode, read_wait_time, cmd_wait_time) == 8)
|
|
|
-#elif _MSC_VER >= 1500
|
|
|
- //if ( _stscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8) // 等价下面;
|
|
|
- if (_stscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%s", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8)
|
|
|
-#endif
|
|
|
- {
|
|
|
- CommandParam cp;
|
|
|
- parse_pair_key(cp.name, name, _T("name"));
|
|
|
- parse_pair_key(cp.head, head, _T("head"));
|
|
|
- parse_pair_key(cp.code, code, _T("cmd"));
|
|
|
- parse_pair_key(cp.param, param, _T("param"));
|
|
|
-
|
|
|
- std::string value;
|
|
|
- parse_pair_key(value, option, _T("option"));
|
|
|
- if (!_tcsicmp(value.c_str(), _T("None")))
|
|
|
- cp.nOption = CMDOPT_None;
|
|
|
- else if (!_tcsicmp(value.c_str(), _T("Get")))
|
|
|
- cp.nOption = CMDOPT_Get;
|
|
|
- else if (!_tcsicmp(value.c_str(), _T("Set")))
|
|
|
- cp.nOption = CMDOPT_Set;
|
|
|
-
|
|
|
- parse_pair_key(value, multicode, _T("returnParam"));
|
|
|
- cp.returnParam = !_tcsicmp(value.c_str(), _T("true")) ? true : false;
|
|
|
-
|
|
|
- parse_pair_key(value, read_wait_time, _T("readWaitTime"));
|
|
|
- cp.read_wait_time = pares_time_value(value.c_str());
|
|
|
-
|
|
|
- parse_pair_key(value, cmd_wait_time, _T("cmdWaitTime"));
|
|
|
- cp.cmd_wait_time = pares_time_value(value.c_str());
|
|
|
- cp.UpdateRtnCode();
|
|
|
-
|
|
|
+ CommandParam cp;
|
|
|
+ if (ParseCommandFromString(buf, cp))
|
|
|
vtCommandParams.push_back(cp);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
ret = 0;
|
|
@@ -178,14 +137,6 @@ void TCLCommand::parse_cmds_from_string(std::string str, std::vector<CommandPara
|
|
|
{
|
|
|
int nPos(0);
|
|
|
TCHAR buf[MAX_PATH] = { 0 };
|
|
|
- TCHAR name[MAX_PATH] = { 0 };
|
|
|
- TCHAR option[MAX_PATH] = { 0 };
|
|
|
- TCHAR head[MAX_PATH] = { 0 };
|
|
|
- TCHAR code[MAX_PATH] = { 0 };
|
|
|
- TCHAR param[MAX_PATH] = { 0 };
|
|
|
- TCHAR multicode[MAX_PATH] = { 0 };
|
|
|
- TCHAR cmd_wait_time[MAX_PATH] = { 0 };
|
|
|
- TCHAR read_wait_time[MAX_PATH] = { 0 };
|
|
|
|
|
|
do
|
|
|
{
|
|
@@ -226,41 +177,58 @@ void TCLCommand::parse_cmds_from_string(std::string str, std::vector<CommandPara
|
|
|
str = "";
|
|
|
}
|
|
|
|
|
|
+ CommandParam cp;
|
|
|
+ if (ParseCommandFromString(buf, cp))
|
|
|
+ vtCommandParams.push_back(cp);
|
|
|
+ } while (str.size());
|
|
|
+}
|
|
|
+
|
|
|
+bool TCLCommand::ParseCommandFromString(std::string str, CommandParam &cmdParam)
|
|
|
+{
|
|
|
+ TCHAR name[MAX_PATH] = { 0 };
|
|
|
+ TCHAR option[MAX_PATH] = { 0 };
|
|
|
+ TCHAR head[MAX_PATH] = { 0 };
|
|
|
+ TCHAR code[MAX_PATH] = { 0 };
|
|
|
+ TCHAR param[MAX_PATH] = { 0 };
|
|
|
+ TCHAR multicode[MAX_PATH] = { 0 };
|
|
|
+ TCHAR cmd_wait_time[MAX_PATH] = { 0 };
|
|
|
+ TCHAR read_wait_time[MAX_PATH] = { 0 };
|
|
|
+
|
|
|
#if _MSC_VER >= 1200 && _MSC_VER < 1500 // VC6.0~8.0
|
|
|
- if (sscanf(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, option, head, code, param, multicode, read_wait_time, cmd_wait_time) == 8)
|
|
|
+ if (sscanf(str.c_str(), "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, option, head, code, param, multicode, read_wait_time, cmd_wait_time) == 8)
|
|
|
#elif _MSC_VER >= 1500
|
|
|
- //if ( _stscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8) // 等价下面;
|
|
|
- if (_stscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%s", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8)
|
|
|
+ //if ( _stscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8) // 等价下面;
|
|
|
+ if (_stscanf_s(str.c_str(), "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%s", name, MAX_PATH, option, MAX_PATH, head, MAX_PATH, code, MAX_PATH, param, MAX_PATH, multicode, MAX_PATH, read_wait_time, MAX_PATH, cmd_wait_time, MAX_PATH) == 8)
|
|
|
#endif
|
|
|
- {
|
|
|
- CommandParam cp;
|
|
|
- parse_pair_key(cp.name, name, _T("name"));
|
|
|
- parse_pair_key(cp.head, head, _T("head"));
|
|
|
- parse_pair_key(cp.code, code, _T("cmd"));
|
|
|
- parse_pair_key(cp.param, param, _T("param"));
|
|
|
-
|
|
|
- std::string value;
|
|
|
- parse_pair_key(value, option, _T("option"));
|
|
|
- if (!_tcsicmp(value.c_str(), _T("None")))
|
|
|
- cp.nOption = CMDOPT_None;
|
|
|
- else if (!_tcsicmp(value.c_str(), _T("Get")))
|
|
|
- cp.nOption = CMDOPT_Get;
|
|
|
- else if (!_tcsicmp(value.c_str(), _T("Set")))
|
|
|
- cp.nOption = CMDOPT_Set;
|
|
|
-
|
|
|
- parse_pair_key(value, multicode, _T("returnParam"));
|
|
|
- cp.returnParam = !_tcsicmp(value.c_str(), _T("true")) ? true : false;
|
|
|
-
|
|
|
- parse_pair_key(value, read_wait_time, _T("readWaitTime"));
|
|
|
- cp.read_wait_time = pares_time_value(value.c_str());
|
|
|
-
|
|
|
- parse_pair_key(value, cmd_wait_time, _T("cmdWaitTime"));
|
|
|
- cp.cmd_wait_time = pares_time_value(value.c_str());
|
|
|
- cp.UpdateRtnCode();
|
|
|
+ {
|
|
|
+ parse_pair_key(cmdParam.name, name, _T("name"));
|
|
|
+ parse_pair_key(cmdParam.head, head, _T("head"));
|
|
|
+ parse_pair_key(cmdParam.code, code, _T("cmd"));
|
|
|
+ parse_pair_key(cmdParam.param, param, _T("param"));
|
|
|
+
|
|
|
+ std::string value;
|
|
|
+ parse_pair_key(value, option, _T("option"));
|
|
|
+ if (!_tcsicmp(value.c_str(), _T("None")))
|
|
|
+ cmdParam.nOption = CMDOPT_None;
|
|
|
+ else if (!_tcsicmp(value.c_str(), _T("Get")))
|
|
|
+ cmdParam.nOption = CMDOPT_Get;
|
|
|
+ else if (!_tcsicmp(value.c_str(), _T("Set")))
|
|
|
+ cmdParam.nOption = CMDOPT_Set;
|
|
|
+
|
|
|
+ parse_pair_key(value, multicode, _T("returnParam"));
|
|
|
+ cmdParam.returnParam = !_tcsicmp(value.c_str(), _T("true")) ? true : false;
|
|
|
+
|
|
|
+ parse_pair_key(value, read_wait_time, _T("readWaitTime"));
|
|
|
+ cmdParam.read_wait_time = pares_time_value(value.c_str());
|
|
|
+
|
|
|
+ parse_pair_key(value, cmd_wait_time, _T("cmdWaitTime"));
|
|
|
+ cmdParam.cmd_wait_time = pares_time_value(value.c_str());
|
|
|
+ cmdParam.UpdateRtnCode();
|
|
|
|
|
|
- vtCommandParams.push_back(cp);
|
|
|
- }
|
|
|
- } while (str.size());
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
bool TCLCommand::GetCommandParams(std::string name, CommandParam& cmdPara)
|
|
@@ -512,7 +480,7 @@ bool TCLCommand::TheSecondPartForFC(CommandParam& cmdPara, std::string data)
|
|
|
}
|
|
|
|
|
|
// 返回的数据;
|
|
|
- ++nDataPos;// 返回码占一字节;
|
|
|
+ ++nDataPos;// code返回码占一字节;
|
|
|
#if 0 // FireTV的返回的指令参数与code没有规律对应;returnParam要外部根据协议来判断;
|
|
|
if (cmdPara.returnParam) {
|
|
|
// 返回的指令参数
|
|
@@ -592,8 +560,7 @@ void TCLCommand::PackingCommand(CommandParam& cmdPara, LPVOID data, const int& d
|
|
|
szlen[0] = (len >> 8) & 0xFF;
|
|
|
szlen[1] = len & 0xFF;
|
|
|
command.insert(2, (char*)szlen, 2);
|
|
|
- }
|
|
|
- else {
|
|
|
+ } else {
|
|
|
// 2位crc + 1位长度;
|
|
|
len = command.size() + 3;
|
|
|
//if ( _tcsicmp(cmdPara.code.c_str(), "99 00") == 0 )
|
|
@@ -649,7 +616,10 @@ bool TCLCommand::ParseResultString(CommandParam& cmdPara, std::string data, cons
|
|
|
break;
|
|
|
case CMDOPT_Get:
|
|
|
case CMDOPT_Set:
|
|
|
- return TheSecondPart(cmdPara, data.substr(5));
|
|
|
+ if ( _tcsicmp(cmdPara.code.c_str(), _T("FC")) )
|
|
|
+ return TheSecondPart(cmdPara, data.substr(5));
|
|
|
+ else
|
|
|
+ return TheSecondPartForFC(cmdPara, data.substr(5));
|
|
|
break;
|
|
|
default:
|
|
|
break;
|