|  | @@ -797,7 +797,8 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                          keyInfo.Playready = jObject["playready"].Value<string>();
 | 
	
		
			
				|  |  |                          keyInfo.Hashkey = jObject["hash"].Value<string>();
 | 
	
		
			
				|  |  |                          keyInfo.YouTube_KEY = jObject["youtubekey"].Value<string>();
 | 
	
		
			
				|  |  | -                        keyInfo.ACASKey = jObject["acaskey"].Value<string>();
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_Data = jObject["acaskey_data"].Value<string>();
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_Tool = jObject["acaskey_tool"].Value<string>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
 | 
	
		
			
				|  |  |                          if (WriteDID.Checked)
 | 
	
	
		
			
				|  | @@ -856,9 +857,9 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                          WriteYouTube.Checked = (keyInfo.YouTube_KEY.Length > 0 && m_writeYouTube.Text != LResource.Skip);
 | 
	
		
			
				|  |  |                          if (WriteYouTube.Checked)
 | 
	
		
			
				|  |  |                              Log.WriteGetKeyLog("\r\nLocal DB YouTube_KEY=" + keyInfo.YouTube_KEY);
 | 
	
		
			
				|  |  | -                        WriteACASKey.Checked = (keyInfo.ACASKey.Length > 0 && m_writeACASKey.Text != LResource.Skip);
 | 
	
		
			
				|  |  | +                        WriteACASKey.Checked = (keyInfo.ACASKey_Data.Length > 0 && m_writeACASKey.Text != LResource.Skip);
 | 
	
		
			
				|  |  |                          if (WriteACASKey.Checked)
 | 
	
		
			
				|  |  | -                            Log.WriteGetKeyLog("\r\nLocal DB ACAS_KEY=" + keyInfo.ACASKey);
 | 
	
		
			
				|  |  | +                            Log.WriteGetKeyLog("\r\nLocal DB ACAS_KEY=" + keyInfo.ACASKey_Data);
 | 
	
		
			
				|  |  |                          WriteDSN.Checked = midListNow.keytype == null ? false : midListNow.keytype.ContainsKey("DSN") && m_writeDSN.Text != LResource.Skip;
 | 
	
		
			
				|  |  |                          WritePSN.Checked = FunctionSettingNow.BarcodeWrite;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1994,8 +1995,8 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "ACAS_KEY", FunctionSettingNow.localACASKeySize, out FileStream Stream, out BinaryReader Reader, out string acaskey, out AcasKeypath, out error, errorDBNow, ref localmidList, SN))
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        keyInfo.ACASKey = acaskey;
 | 
	
		
			
				|  |  | -                        Log.WriteGetKeyLog("\r\nLocal ACASKey=" + keyInfo.ACASKey);
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_Data = acaskey;
 | 
	
		
			
				|  |  | +                        Log.WriteGetKeyLog("\r\nLocal ACASKey=" + keyInfo.ACASKey_Data);
 | 
	
		
			
				|  |  |                          if (Stream != null && Reader != null)
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              keypath.Add(AcasKeypath);
 | 
	
	
		
			
				|  | @@ -2290,11 +2291,16 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  if (WriteACASKey.Checked)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    if (CommonMethod.GetKeys(midListNow.host, "ACAS_KEY", SN, midListNow.keytype["ACAS_KEY"], errorDBNow, out string acaskey, out error, orderNow, out string md5))
 | 
	
		
			
				|  |  | +                    if (CommonMethod.GetAcasKey(midListNow.host, "ACAS_KEY", SN, midListNow.keytype["ACAS_KEY"], errorDBNow, orderNow, out string acaskey_data, out string acaskey_datamd5, out string acaskey_tool, out string acaskey_toolmd5, out error))
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        keyInfo.ACASKey = acaskey;
 | 
	
		
			
				|  |  | -                        keyInfo.ACASKeyMd5 = md5;
 | 
	
		
			
				|  |  | -                        Log.WriteGetKeyLog("\r\nACAS_KEY=" + keyInfo.ACASKey + "\r\nACAS_KEY_MD5=" + keyInfo.ACASKeyMd5);
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_Data = acaskey_data;
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_DataMd5 = acaskey_datamd5;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_Tool = acaskey_tool;
 | 
	
		
			
				|  |  | +                        keyInfo.ACASKey_ToolMd5 = acaskey_toolmd5;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        Log.WriteGetKeyLog("\r\nACAS_KEY_DATA=" + keyInfo.ACASKey_Data + "\r\nACAS_KEY_MD5=" + keyInfo.ACASKey_DataMd5);
 | 
	
		
			
				|  |  | +                        Log.WriteGetKeyLog("\r\nACAS_KEY_TOOL=" + keyInfo.ACASKey_Tool + "\r\nACAS_KEY_TOOLMD5=" + keyInfo.ACASKey_ToolMd5);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      else
 | 
	
		
			
				|  |  |                      {
 | 
	
	
		
			
				|  | @@ -3812,18 +3818,71 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |              // ACAS Key抄写;
 | 
	
		
			
				|  |  |              if (WriteACASKey.Checked)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                byte[] ACASKeyData = SerialInit.HexToByte(keyInfo.ACASKey);
 | 
	
		
			
				|  |  | +                // 1.acas key抄写前,必须先抄写playreadkey;
 | 
	
		
			
				|  |  | +                // 2.将tool先抄写再抄写data;
 | 
	
		
			
				|  |  |                  Log.WriteInfoLog("Write ACAC Key...");
 | 
	
		
			
				|  |  | -                if (SerialCMD.SetACASKey(TVPort, ACASKeyData, out result, out data, out error, SerailDelay))
 | 
	
		
			
				|  |  | +                byte[] ACASKeyTool = SerialInit.HexToByte(keyInfo.ACASKey_Tool);
 | 
	
		
			
				|  |  | +                if (SerialCMD.SetACASKeyTool(TVPort, ACASKeyTool, out result, out data, out error, SerailDelay))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    SetsuccessStatus(m_writeACASKey);
 | 
	
		
			
				|  |  | +                    keycontent += "acas_tool=" + keyInfo.ACASKey_Tool+ "&";
 | 
	
		
			
				|  |  | +                    Log.WriteInfoLog("Check ACAS Key Tool...");
 | 
	
		
			
				|  |  | +                    if (writeCheckNow.ACASKeyCheckcheck ? SerialCMD.CheckACASKeyTool(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        SetsuccessStatus(m_checkACASKey);
 | 
	
		
			
				|  |  | +                        Log.WriteInfoLog("Read ACAS Key Tool...");
 | 
	
		
			
				|  |  | +                        if (readCheckNow.ACASIDReadcheck ? SerialCMD.ReadACASKeyTool(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            if (readCheckNow.ACASIDReadcheck)
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                if (CommonMethod.CompareMD5(ACASKeyTool, data))
 | 
	
		
			
				|  |  | +                                {
 | 
	
		
			
				|  |  | +                                    SetsuccessStatus(m_readACASKey);
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                else
 | 
	
		
			
				|  |  | +                                {
 | 
	
		
			
				|  |  | +                                    SetfailStatus(m_readACASKey);
 | 
	
		
			
				|  |  | +                                    Log.WriteErrorLog(SN + "   contrast ACAS Key Tool fail");
 | 
	
		
			
				|  |  | +                                    MessageBox.Show(LResource.ContrastACASKeyError);
 | 
	
		
			
				|  |  | +                                    goto end;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        else
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            SetfailStatus(m_readACASKey);
 | 
	
		
			
				|  |  | +                            Log.WriteErrorLog(SN + "   read ACAS Key Tool fail");
 | 
	
		
			
				|  |  | +                            MessageBox.Show(LResource.ReadACASKeyError);
 | 
	
		
			
				|  |  | +                            goto end;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        SetfailStatus(m_checkACASKey);
 | 
	
		
			
				|  |  | +                        Log.WriteErrorLog(SN + "   Check ACAS Key Tool fail");
 | 
	
		
			
				|  |  | +                        MessageBox.Show(LResource.WriteACASKeyError);
 | 
	
		
			
				|  |  | +                        goto end;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    SetfailStatus(m_writeACASKey);
 | 
	
		
			
				|  |  | +                    Log.WriteErrorLog(SN + "   Write ACAS Key Tool fail");
 | 
	
		
			
				|  |  | +                    MessageBox.Show(LResource.WriteACASKeyError);
 | 
	
		
			
				|  |  | +                    goto end;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                byte[] ACASKeyData = SerialInit.HexToByte(keyInfo.ACASKey_Data);
 | 
	
		
			
				|  |  | +                if (SerialCMD.SetACASKeyData(TVPort, ACASKeyData, out result, out data, out error, SerailDelay))
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      SetsuccessStatus(m_writeACASKey);
 | 
	
		
			
				|  |  | -                    keycontent += "ACACKeyMd5=" + keyInfo.ACASKeyMd5 + "&";
 | 
	
		
			
				|  |  | -                    Log.WriteInfoLog("Check ACAS Key...");
 | 
	
		
			
				|  |  | -                    if (writeCheckNow.ACASKeyCheckcheck ? SerialCMD.CheckACASKey(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  | +                    keycontent += "acas_data=" + keyInfo.ACASKey_Data + "&";
 | 
	
		
			
				|  |  | +                    Log.WriteInfoLog("Check ACAS Key Data...");
 | 
	
		
			
				|  |  | +                    if (writeCheckNow.ACASKeyCheckcheck ? SerialCMD.CheckACASKeyData(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          SetsuccessStatus(m_checkACASKey);
 | 
	
		
			
				|  |  | -                        Log.WriteInfoLog("Read ACAS Key...");
 | 
	
		
			
				|  |  | -                        if (readCheckNow.ACASIDReadcheck ? SerialCMD.ReadACASKey(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  | +                        Log.WriteInfoLog("Read ACAS Key Data...");
 | 
	
		
			
				|  |  | +                        if (readCheckNow.ACASIDReadcheck ? SerialCMD.ReadACASKeyData(TVPort, out result, out data, out error, SerailDelay) : true)
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              if (readCheckNow.ACASIDReadcheck)
 | 
	
		
			
				|  |  |                              {
 | 
	
	
		
			
				|  | @@ -3834,7 +3893,7 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                                  else
 | 
	
		
			
				|  |  |                                  {
 | 
	
		
			
				|  |  |                                      SetfailStatus(m_readACASKey);
 | 
	
		
			
				|  |  | -                                    Log.WriteErrorLog(SN + "   contrast ACAS Key fail");
 | 
	
		
			
				|  |  | +                                    Log.WriteErrorLog(SN + "   contrast ACAS Key Data fail");
 | 
	
		
			
				|  |  |                                      MessageBox.Show(LResource.ContrastACASKeyError);
 | 
	
		
			
				|  |  |                                      goto end;
 | 
	
		
			
				|  |  |                                  }
 | 
	
	
		
			
				|  | @@ -3851,7 +3910,7 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                      else
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          SetfailStatus(m_checkACASKey);
 | 
	
		
			
				|  |  | -                        Log.WriteErrorLog(SN + "   Check ACAS Key fail");
 | 
	
		
			
				|  |  | +                        Log.WriteErrorLog(SN + "   Check ACAS Key Data fail");
 | 
	
		
			
				|  |  |                          MessageBox.Show(LResource.WriteACASKeyError);
 | 
	
		
			
				|  |  |                          goto end;
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -3859,7 +3918,7 @@ namespace MOKA_Factory_Tools
 | 
	
		
			
				|  |  |                  else
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      SetfailStatus(m_writeACASKey);
 | 
	
		
			
				|  |  | -                    Log.WriteErrorLog(SN + "   Write ACAS Key fail");
 | 
	
		
			
				|  |  | +                    Log.WriteErrorLog(SN + "   Write ACAS Key Data fail");
 | 
	
		
			
				|  |  |                      MessageBox.Show(LResource.WriteACASKeyError);
 | 
	
		
			
				|  |  |                      goto end;
 | 
	
		
			
				|  |  |                  }
 |