Pārlūkot izejas kodu

1、返回的指令参数不一定只有一个字节;
2、设定cmd的长度只有一个字节;

sat23 4 gadi atpakaļ
vecāks
revīzija
e14a4d51f0
2 mainītis faili ar 31 papildinājumiem un 23 dzēšanām
  1. 14 6
      TCLCommand/TCLCommand/Command.cpp
  2. 17 17
      TCLCommand/TCLCommand/command.data

+ 14 - 6
TCLCommand/TCLCommand/Command.cpp

@@ -389,9 +389,9 @@ bool TCLCommand::TheSecondPart(CommandParam& cmdPara, std::string data)
 
         if (_tcsicmp(cmdPara.code.c_str(), utils::ByteToChars((byte)data[nDataPos] - 1).c_str()) != 0) {
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-			cmdPara._rtnError = utils::_dprintf(_T("返回的指令错误, %s, %02X"), cmdPara.head.c_str(), (byte)data[nDataPos]);
+			cmdPara._rtnError = utils::_dprintf(_T("返回的指令码错误, 正确:%02X, 当前:%02X"), utils::TwoHexCharToInteger(cmdPara.code[0],cmdPara.code[1]), (byte)data[nDataPos]);
 #elif _MSC_VER >= 1500
-            cmdPara._rtnError = utils::_dprintf(_T("[%s] 返回的指令错误, %s, %02X"), __FUNCTION__, cmdPara.head.c_str(), (byte)data[nDataPos]);
+            cmdPara._rtnError = utils::_dprintf(_T("[%s] 返回的指令码错误, 正确:%02X, 当前:%02X"), __FUNCTION__, utils::TwoHexCharToInteger(cmdPara.code[0],cmdPara.code[1]), (byte)data[nDataPos]);
 #endif
             return false;
         }
@@ -399,16 +399,19 @@ bool TCLCommand::TheSecondPart(CommandParam& cmdPara, std::string data)
         // 返回的数据;
         ++nDataPos;// 返回码占一字节;
         if (cmdPara.returnParam) {
-            if (_tcsicmp(cmdPara.param.c_str(), utils::ByteToChars((byte)data[nDataPos]).c_str()) != 0) {
+            // 返回的指令参数
+            std::string rtnParam = data.substr(nDataPos, cmdPara.param.size()/2);
+            rtnParam = utils::BytesToHexString((byte*)rtnParam.c_str(), rtnParam.size());
+            if (_tcsicmp(cmdPara.param.c_str(), rtnParam.c_str()) != 0) {
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-				cmdPara._rtnError = utils::_dprintf(_T("返回的指令参数错误, %s, %02X"), cmdPara.param.c_str(), (byte)data[nDataPos]);
+				cmdPara._rtnError = utils::_dprintf(_T("返回的指令参数错误, %s, %s"), cmdPara.param.c_str(), rtnParam.c_str());
 #elif _MSC_VER >= 1500
-                cmdPara._rtnError = utils::_dprintf(_T("[%s] 返回的指令参数错误, %s, %02X"), __FUNCTION__, cmdPara.param.c_str(), (byte)data[nDataPos]);
+                cmdPara._rtnError = utils::_dprintf(_T("[%s] 返回的指令参数错误, %s, %s"), __FUNCTION__, cmdPara.param.c_str(), rtnParam.c_str());
 #endif
 				return false;
             }
 
-            ++nDataPos;// 指令参数码占一字节;
+            nDataPos += rtnParam.size()/2;// 指令参数码占一字节;
         }
 
         cmdPara._rtnData = data.substr(nDataPos, nPacketLen - nDataPos - 2); //2 = crc;
@@ -517,6 +520,11 @@ bool TCLCommand::ParseResultString(CommandParam& cmdPara, std::string data, cons
         return false;
     }
 
+    if ( data.size() == 5 )
+    {
+        return true;
+    }
+
     switch (cmdPara.nOption)
     {
     case CMDOPT_None:

+ 17 - 17
TCLCommand/TCLCommand/command.data

@@ -4,16 +4,16 @@ name=GetSoftVersion; option=Get; head=AA; cmd=57; param=00; returnParam=false; r
 name=GetProjectID; option=Get; head=AA; cmd=84; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=GetDeviceId; option=Get; head=AA; cmd=BE; param=01; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
 name=GetClientType; option=Get; head=AA; cmd=8C; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetMAC; option=Get; head=AA; cmd=BE; param=00; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
+name=GetMAC; option=Get; head=AA; cmd=BE; param=00; returnParam=true; readWaitTime=150ms; cmdWaitTime=100ms
 name=GetHDCPKey; option=Get; head=AA; cmd=EE; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetHDCPKey22; option=Get; head=AA; cmd=E7; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetWidi; option=Get; head=AA; cmd=E7; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetNetflixESN; option=Get; head=AA; cmd=BE; param=06; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetWidevine; option=Get; head=AA; cmd=EC; param=00; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetCiKey; option=Get; head=AA; cmd=EC; param=01; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetOSDLanguage; option=Get; head=AA; cmd=97; param=00; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetShopLanguage; option=Get; head=AA; cmd=97; param=01; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=GetChannel; option=Get; head=AA; cmd=97; param=13; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
+name=GetHDCPKey22; option=Get; head=AA; cmd=E7; param=00; returnParam=false; readWaitTime=300ms; cmdWaitTime=100ms
+name=GetWidi; option=Get; head=AA; cmd=E7; param=00; returnParam=false; readWaitTime=300ms; cmdWaitTime=100ms
+name=GetNetflixESN; option=Get; head=AA; cmd=BE; param=06; returnParam=true; readWaitTime=300ms; cmdWaitTime=100ms
+name=GetWidevine; option=Get; head=AA; cmd=EC; param=00; returnParam=true; readWaitTime=300ms; cmdWaitTime=100ms
+name=GetCiKey; option=Get; head=AA; cmd=EC; param=01; returnParam=true; readWaitTime=300ms; cmdWaitTime=100ms
+name=GetOSDLanguage; option=Get; head=AA; cmd=97; param=00; returnParam=true; readWaitTime=150ms; cmdWaitTime=100ms
+name=GetShopLanguage; option=Get; head=AA; cmd=97; param=01; returnParam=true; readWaitTime=150ms; cmdWaitTime=100ms
+name=GetChannel; option=Get; head=AA; cmd=97; param=13; returnParam=true; readWaitTime=150ms; cmdWaitTime=100ms
 # Check is Get-Option
 name=CheckMAC; option=Get; head=AA; cmd=B4; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=CheckDeviceId; option=Get; head=AA; cmd=B4; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
@@ -31,15 +31,15 @@ name=SetDeviceID; option=Set; head=AA; cmd=B2; param=/; returnParam=false; readW
 name=SetMAC; option=Set; head=AA; cmd=B3; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=SetHDCPKey; option=Set; head=AA FE; cmd=86; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=SetHDCPKey22; option=Set; head=AA FE; cmd=E4; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetNetflixESN; option=Set; head=AA; cmd=99 00; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetNetflixESN; option=Set; head=AA; cmd=99; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=SetWidi; option=Set; head=AA FE; cmd=E4; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetWidevine; option=Set; head=AA FE; cmd=E9 00; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetCiKey; option=Set; head=AA FE; cmd=E9 01; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetOSDLanguage; option=Set; head=AA; cmd=99 00; param=/; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetShopLanguage; option=Set; head=AA; cmd=96 01; param=/; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetWidevine; option=Set; head=AA FE; cmd=E9; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetCiKey; option=Set; head=AA FE; cmd=E9; param=01; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetOSDLanguage; option=Set; head=AA; cmd=99; param=00; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetShopLanguage; option=Set; head=AA; cmd=96; param=01; returnParam=true; readWaitTime=100ms; cmdWaitTime=100ms
 name=SetChannel; option=Set; head=AA; cmd=15; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetWBNormal; option=Set; head=AA; cmd=4D 04 01 01; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetWBCool; option=Set; head=AA; cmd=4D 04 02 01; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
-name=SetWBWarm; option=Set; head=AA; cmd=4D 04 03 01; param=/; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetWBNormal; option=Set; head=AA; cmd=4D; param=04 01 01; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetWBCool; option=Set; head=AA; cmd=4D; param=04 02 01; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
+name=SetWBWarm; option=Set; head=AA; cmd=4D; param=04 03 01; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=StarWarmUpMode; option=None; head=AA; cmd=13; param=01; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms
 name=StopWarmUpMode; option=None; head=AA; cmd=13; param=00; returnParam=false; readWaitTime=100ms; cmdWaitTime=100ms