فهرست منبع

1、修改KeyInfo格式。2、Kayla基本完成。

sat23 3 سال پیش
والد
کامیت
362ab54557

+ 110 - 2
FactoryTool_CShare/Business/CommonMethod.cs

@@ -22,6 +22,7 @@ using System.Security.Cryptography.X509Certificates;
 using System.Net.Security;
 using System.Net.Security;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
 using System.Diagnostics;
 using System.Diagnostics;
+using System.Linq;
 
 
 namespace MOKA_Factory_Tools
 namespace MOKA_Factory_Tools
 {
 {
@@ -39,6 +40,8 @@ namespace MOKA_Factory_Tools
 
 
         private static LoginInput loginInput = new LoginInput();
         private static LoginInput loginInput = new LoginInput();
 
 
+        private static Dictionary<string,string> LastKaylaOrderInfo = new Dictionary<string,string>();
+
         /// <summary>
         /// <summary>
         /// 保存登录信息;
         /// 保存登录信息;
         /// </summary>
         /// </summary>
@@ -2202,9 +2205,10 @@ namespace MOKA_Factory_Tools
         /// <param name="result">抄写结果</param>
         /// <param name="result">抄写结果</param>
         /// <param name="msg">如果上报失败,此参数为失败的描述信息</param>
         /// <param name="msg">如果上报失败,此参数为失败的描述信息</param>
         /// <returns></returns>
         /// <returns></returns>
-        public static bool ReportDataBurningResultToMES(string fsn, string dsn, string result, string dateTime, SQLiteConnection errorDBNow, out string msg)
+        public static bool ReportDataBurningResultToMES(string fsn, string dsn, string result, string dateTime, SQLiteConnection errorDBNow, out string msg, out string returnObject)
         {
         {
             msg = "";
             msg = "";
+            returnObject = "";
             string strPost = string.Format("{{\"FSN\":\"{0}\",\"DSN\":\"{1}\",\"DataCopy\":\"{2}\",\"UPDATETIME\":\"{3}\"}}", fsn, dsn, result, dateTime);
             string strPost = string.Format("{{\"FSN\":\"{0}\",\"DSN\":\"{1}\",\"DataCopy\":\"{2}\",\"UPDATETIME\":\"{3}\"}}", fsn, dsn, result, dateTime);
             HttpHelper http = new HttpHelper();
             HttpHelper http = new HttpHelper();
             HttpItem item = new HttpItem()
             HttpItem item = new HttpItem()
@@ -2230,7 +2234,8 @@ namespace MOKA_Factory_Tools
 
 
                         bool bResult = jObject["Result"].Value<bool>();
                         bool bResult = jObject["Result"].Value<bool>();
                         msg = jObject["EroMsg"].Value<string>();
                         msg = jObject["EroMsg"].Value<string>();
-
+                        if ( jObject["returnObject"] != null )
+                            returnObject = jObject["returnObject"].ToString();
                         Log.WriteInfoLog("nReportDataBurningResultToMES:" + hResult.StatusDescription + "\r\n" + hResult.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata);
                         Log.WriteInfoLog("nReportDataBurningResultToMES:" + hResult.StatusDescription + "\r\n" + hResult.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata);
                         return true;
                         return true;
                     }
                     }
@@ -2367,6 +2372,109 @@ namespace MOKA_Factory_Tools
 
 
             return false;
             return false;
         }
         }
+
+        /// <summary>
+        // Section1:本机信息;
+        // Section2:SMES信息;
+        // Section3:实际抄写Key信息;
+        /// </summary>
+        /// <param name="Line"></param>
+        /// <param name="Station"></param>
+        /// <param name="order"></param>
+        /// <param name="sn"></param>
+        /// <param name="StartTime"></param>
+        /// <param name="EndOfTime"></param>
+        /// <param name="returnObject"></param>
+        /// <param name="key"></param>
+        /// <param name="result"></param>
+        /// <returns></returns>
+        public static bool GeneratKaylaData(string Line, string Station, string order, string sn, DateTime StartTime, DateTime EndOfTime, string returnObject, KeyInfo key, bool result)
+        {
+            Dictionary<string, string> localInfo = new Dictionary<string,string>();
+            // 本机信息;
+            localInfo.Add("factory_id_I", "TCL_Moka");
+            localInfo.Add("operator_I", Line);
+            localInfo.Add("station_I", Station);
+            localInfo.Add("fixture_id_I", "1_1");
+            localInfo.Add("gui_ver_I", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
+            localInfo.Add("route_check_I", "1");
+
+            // SMES信息;
+            string strLastOrder = ReadProfileString("MOKAFactoryTools", "LastOrder", "");
+            if ( !strLastOrder.Equals(order,StringComparison.OrdinalIgnoreCase) )
+            {
+                // 请求新的订单信息;
+                MaInfo maInfo;
+                if ( !GetMaInfo(sn, out maInfo, null) )
+                {
+                    Log.WriteErrorLog("Kayla GetMaInfo失败");
+                    return false;
+                }
+
+                LastKaylaOrderInfo = new Dictionary<string,string>();
+                if ( maInfo != null )
+                {
+                    LastKaylaOrderInfo.Add("project_name_I", maInfo.project_name_I);
+                    LastKaylaOrderInfo.Add("build_I", maInfo.build_I);
+                    LastKaylaOrderInfo.Add("build_config_I", maInfo.build_config_I);
+                    LastKaylaOrderInfo.Add("diag_ver_I", maInfo.diag_ver_I);
+                    LastKaylaOrderInfo.Add("image_name_ver_I", maInfo.image_name_ver_I);
+                    LastKaylaOrderInfo.Add("soc_type", maInfo.soc_type);
+                    LastKaylaOrderInfo.Add("speaker_vender", maInfo.speaker_vender);
+                    LastKaylaOrderInfo.Add("mic_vender", maInfo.mic_vender);
+                }
+            }
+            Dictionary<string, string> dic = localInfo.Union(LastKaylaOrderInfo).ToDictionary(k=>k.Key, v=>v.Value);
+
+            dic.Add("start_time_I", StartTime.ToString());
+            dic.Add("serial_id_I", key != null ? key._PSN : "");   // PSN;
+            dic.Add("FSN", sn);
+
+            // 耐压值;
+            if ( returnObject != null && returnObject.Length > 0 && returnObject.Contains("Hightpot"))
+            {
+                // 删除头尾[];
+                returnObject = returnObject.Remove(0, 1);
+                returnObject = returnObject.Remove(returnObject.Length - 1, 1);
+
+                JObject jObject = JObject.Parse(returnObject);
+                JSON_SeleteNode(jObject, "Hightpot");
+            }
+            else
+            {
+                dic.Add("AC_I", "");
+                dic.Add("DC_R", "");
+            }
+
+            if ( key != null )
+            {
+
+            }
+
+            dic.Add("cycle_time_I", EndOfTime.Subtract(StartTime).Seconds.ToString());
+            dic.Add("test_result_I", result ? "PASS" : "FAIL");
+
+            try
+            {
+                // 以DSN命名文件;
+                string savefile = string.Format("{0}\\{1}\\{2}.csv", AppDomain.CurrentDomain.BaseDirectory, "Kayla", key.DSN);
+                using (System.IO.StreamWriter file = new System.IO.StreamWriter(savefile, false))
+                {
+                    foreach (KeyValuePair<string, string> kvp in dic)
+                    {
+                        file.WriteLine(string.Format("{0},{1}", kvp.Key, kvp.Value));
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Log.WriteErrorLog(string.Format("保存csv文件失败:{0}", ex.ToString()));
+                return false;
+            }
+
+            return true;
+        }
+
         #endregion
         #endregion
 
 
         #region 小米FireTV功能模块相关接口;
         #region 小米FireTV功能模块相关接口;

+ 0 - 1
FactoryTool_CShare/IO/SerialCMD.cs

@@ -1,5 +1,4 @@
 using System;
 using System;
-using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Text;
 using System.Text;

+ 77 - 28
FactoryTool_CShare/Models/StructList.cs

@@ -235,35 +235,74 @@ namespace MOKA_Factory_Tools
         #endregion
         #endregion
     }
     }
 
 
+    public class KeyData
+    {
+        public bool enable { get; set; } = false;   // 是否要抄写;
+        public string data { get; set; }
+        public bool result { get; set; } = false;
+        public int Length
+        {
+            get { return data.Length; }
+        }
+
+        /// <summary>
+        /// KeyData kd; string data; data = kd;
+        /// </summary>
+        /// <param name="v"></param>
+        public static implicit operator string(KeyData v)
+        {
+            return v.data;
+        }
+
+#if false
+        /// <summary>
+        /// KeyData did; string value="xxxx";did = (KeyData)value;
+        /// </summary>
+        /// <param name="v"></param>
+        public static explicit operator KeyData(string v)
+        {
+            if (v == null)
+                return null;
+            KeyData kd = new KeyData();
+            kd.result = false;
+            kd.data = v;
+            return kd;
+        }
+#endif
+    }
+
     public class KeyInfo
     public class KeyInfo
     {
     {
-        public string DID { get; set; }
-        public string Mac { get; set; }
-        public string HDCP { get; set; }
-        public string HDCP22 { get; set; }
-        public string ESN { get; set; }
-        public string WiDi { get; set; }
-        public string Widevine { get; set; }
-        public string CI_plus { get; set; }
-        public string Attestation { get; set; }
-        public string AttestationMD5 { get; set; }
-        public string MGK { get; set; }
-        public string Fairplay { get; set; }
-        public string DSN { get; set; }
-        public string WiFi_MAC { get; set; }
-        public string BT_MAC { get; set; }
-        public string LEK { get; set; }
-        public string PEK { get; set; }
-        public string Playready { get; set; }
-        public string Hashkey { get; set; }
-        public string ECP { get; set; }
-        public string YouTube_KEY { get; set; }
-        public string EDIDPid { get; set; }
-        public string EDIDModelName { get; set; }
-        public string ACASKey_Data { get; set; }
-        public string ACASKey_Tool { get; set; }
-        public string ACASKey_DataMd5 { get; set; }
-        public string ACASKey_ToolMd5 { get; set; }
+        public KeyData DID { get; set; }
+        public KeyData Mac { get; set; }
+        public KeyData HDCP { get; set; }
+        public KeyData HDCP22 { get; set; }
+        public KeyData ESN { get; set; }
+        public KeyData WiDi { get; set; }
+        public KeyData Widevine { get; set; }
+        public KeyData CI_plus { get; set; }
+        public KeyData Attestation { get; set; }
+        public KeyData AttestationMD5 { get; set; }
+        public KeyData MGK { get; set; }
+        public KeyData Fairplay { get; set; }
+        public KeyData DSN { get; set; }
+        public KeyData WiFi_MAC { get; set; }
+        public KeyData BT_MAC { get; set; }
+        public KeyData LEK { get; set; }
+        public KeyData PEK { get; set; }
+        public KeyData Playready { get; set; }
+        public KeyData Hashkey { get; set; }
+        public KeyData ECP { get; set; }
+        public KeyData YouTube_KEY { get; set; }
+        public KeyData EDIDPid { get; set; }
+        public KeyData EDIDModelName { get; set; }
+        public KeyData ACASKey_Data { get; set; }
+        public KeyData ACASKey_Tool { get; set; }
+        public KeyData ACASKey_DataMd5 { get; set; }
+        public KeyData ACASKey_ToolMd5 { get; set; }
+        #region Kayla所需数据;
+        public KeyData _PSN { get; set; } 
+        #endregion
     }
     }
 
 
     public class FireTVKey
     public class FireTVKey
@@ -536,6 +575,16 @@ namespace MOKA_Factory_Tools
         public string SHIPPING;
         public string SHIPPING;
         public string SIZE;
         public string SIZE;
         public string Model;
         public string Model;
+        #region Kayla返回所需;
+        public string project_name_I { get; set; } = "";
+        public string build_I { get; set; } = "";
+        public string build_config_I { get; set; } = "";
+        public string diag_ver_I { get; set; } = "";
+        public string image_name_ver_I { get; set; } = "";
+        public string soc_type { get; set; } = "";
+        public string speaker_vender { get; set; } = "";
+        public string mic_vender { get; set; } = "";
+        #endregion
     }
     }
     #endregion
     #endregion
 
 
@@ -580,5 +629,5 @@ namespace MOKA_Factory_Tools
         public string HDCP14 { set; get; } = "";
         public string HDCP14 { set; get; } = "";
         public string HDCP22 { set; get; } = "";
         public string HDCP22 { set; get; } = "";
     }
     }
-    #endregion
+#endregion
 }
 }

+ 149 - 96
FactoryTool_CShare/Views/OperationPanel.cs

@@ -830,27 +830,27 @@ namespace MOKA_Factory_Tools
                     else if (keyjson.Length > 0)
                     else if (keyjson.Length > 0)
                     {
                     {
                         JObject jObject = JObject.Parse(keyjson);
                         JObject jObject = JObject.Parse(keyjson);
-                        keyInfo.DID = jObject["did"].Value<string>();
-                        keyInfo.Mac = jObject["mac"].Value<string>();
-                        keyInfo.HDCP = jObject["hdcp"].Value<string>();
-                        keyInfo.HDCP22 = jObject["hdcp22"].Value<string>();
-                        keyInfo.WiDi = jObject["widi"].Value<string>();
-                        keyInfo.Widevine = jObject["widevine"].Value<string>();
-                        keyInfo.ESN = jObject["esn"].Value<string>();
-                        keyInfo.CI_plus = jObject["cikey"].Value<string>();
-                        keyInfo.MGK = jObject["mgk"].Value<string>();
-                        keyInfo.Attestation = jObject["attestation"].Value<string>();
-                        keyInfo.Fairplay = jObject["fairplay"].Value<string>();
-                        keyInfo.ECP = jObject["ecp"].Value<string>();
-                        keyInfo.WiFi_MAC = jObject["wifimac"].Value<string>();
-                        keyInfo.BT_MAC = jObject["btmac"].Value<string>();
-                        keyInfo.LEK = jObject["lek"].Value<string>();
-                        keyInfo.PEK = jObject["pek"].Value<string>();
-                        keyInfo.Playready = jObject["playready"].Value<string>();
-                        keyInfo.Hashkey = jObject["hash"].Value<string>();
-                        keyInfo.YouTube_KEY = jObject["youtubekey"].Value<string>();
-                        keyInfo.ACASKey_Data = jObject["acaskey_data"].Value<string>();
-                        keyInfo.ACASKey_Tool = jObject["acaskey_tool"].Value<string>();
+                        keyInfo.DID.data = jObject["did"].Value<string>();
+                        keyInfo.Mac.data = jObject["mac"].Value<string>();
+                        keyInfo.HDCP.data = jObject["hdcp"].Value<string>();
+                        keyInfo.HDCP22.data = jObject["hdcp22"].Value<string>();
+                        keyInfo.WiDi.data = jObject["widi"].Value<string>();
+                        keyInfo.Widevine.data = jObject["widevine"].Value<string>();
+                        keyInfo.ESN.data = jObject["esn"].Value<string>();
+                        keyInfo.CI_plus.data = jObject["cikey"].Value<string>();
+                        keyInfo.MGK.data = jObject["mgk"].Value<string>();
+                        keyInfo.Attestation.data = jObject["attestation"].Value<string>();
+                        keyInfo.Fairplay.data = jObject["fairplay"].Value<string>();
+                        keyInfo.ECP.data = jObject["ecp"].Value<string>();
+                        keyInfo.WiFi_MAC.data = jObject["wifimac"].Value<string>();
+                        keyInfo.BT_MAC.data = jObject["btmac"].Value<string>();
+                        keyInfo.LEK.data = jObject["lek"].Value<string>();
+                        keyInfo.PEK.data = jObject["pek"].Value<string>();
+                        keyInfo.Playready.data = jObject["playready"].Value<string>();
+                        keyInfo.Hashkey.data = jObject["hash"].Value<string>();
+                        keyInfo.YouTube_KEY.data = jObject["youtubekey"].Value<string>();
+                        keyInfo.ACASKey_Data.data = jObject["acaskey_data"].Value<string>();
+                        keyInfo.ACASKey_Tool.data = jObject["acaskey_tool"].Value<string>();
 
 
                         WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
                         WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
                         if (WriteDID.Checked)
                         if (WriteDID.Checked)
@@ -1646,6 +1646,7 @@ namespace MOKA_Factory_Tools
         /// </summary>
         /// </summary>
         public void Writekey()
         public void Writekey()
         {
         {
+            DateTime startTime = DateTime.Now;
             ArrayList keypath = new ArrayList();
             ArrayList keypath = new ArrayList();
             ArrayList keyStream = new ArrayList();
             ArrayList keyStream = new ArrayList();
             ArrayList keyReader = new ArrayList();
             ArrayList keyReader = new ArrayList();
@@ -1779,7 +1780,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalStringKeys(orderNow, "DeviceID", FunctionSettingNow.LocalDidSize, out FileStream Stream, out StreamReader Reader, out string did, out Didpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalStringKeys(orderNow, "DeviceID", FunctionSettingNow.LocalDidSize, out FileStream Stream, out StreamReader Reader, out string did, out Didpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.DID = did;
+                        keyInfo.DID.data = did;
                         Log.WriteGetKeyLog("\r\nLocal DeviceID=" + keyInfo.DID);
                         Log.WriteGetKeyLog("\r\nLocal DeviceID=" + keyInfo.DID);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1799,7 +1800,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "MAC", FunctionSettingNow.LocalMacSize, out FileStream Stream, out BinaryReader Reader, out string mac, out Macpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "MAC", FunctionSettingNow.LocalMacSize, out FileStream Stream, out BinaryReader Reader, out string mac, out Macpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Mac = mac;
+                        keyInfo.Mac.data = mac;
                         Log.WriteGetKeyLog("\r\nLocal Mac=" + keyInfo.Mac);
                         Log.WriteGetKeyLog("\r\nLocal Mac=" + keyInfo.Mac);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1819,7 +1820,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "HDCPKEY", FunctionSettingNow.LocalHdcpSize, out FileStream Stream, out BinaryReader Reader, out string hdcp, out Hdcppath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "HDCPKEY", FunctionSettingNow.LocalHdcpSize, out FileStream Stream, out BinaryReader Reader, out string hdcp, out Hdcppath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.HDCP = hdcp;
+                        keyInfo.HDCP.data = hdcp;
                         Log.WriteGetKeyLog("\r\nLocal HDCP=" + keyInfo.HDCP);
                         Log.WriteGetKeyLog("\r\nLocal HDCP=" + keyInfo.HDCP);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1839,7 +1840,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "HDCPKEY22", FunctionSettingNow.LocalHdcp22Size, out FileStream Stream, out BinaryReader Reader, out string hdcp22, out Hdcp22path, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "HDCPKEY22", FunctionSettingNow.LocalHdcp22Size, out FileStream Stream, out BinaryReader Reader, out string hdcp22, out Hdcp22path, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.HDCP22 = hdcp22;
+                        keyInfo.HDCP22.data = hdcp22;
                         Log.WriteGetKeyLog("\r\nLocal HDCP22=" + keyInfo.HDCP22);
                         Log.WriteGetKeyLog("\r\nLocal HDCP22=" + keyInfo.HDCP22);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1859,7 +1860,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "ESN", FunctionSettingNow.LocalEsnSize, out FileStream Stream, out BinaryReader Reader, out string esn, out Esnpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "ESN", FunctionSettingNow.LocalEsnSize, out FileStream Stream, out BinaryReader Reader, out string esn, out Esnpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.ESN = esn;
+                        keyInfo.ESN.data = esn;
                         Log.WriteGetKeyLog("\r\nLocal ESN=" + keyInfo.ESN);
                         Log.WriteGetKeyLog("\r\nLocal ESN=" + keyInfo.ESN);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1879,7 +1880,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "MGK", FunctionSettingNow.LocalMGKSize, out FileStream Stream, out BinaryReader Reader, out string mgk, out MGKpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "MGK", FunctionSettingNow.LocalMGKSize, out FileStream Stream, out BinaryReader Reader, out string mgk, out MGKpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.MGK = mgk;
+                        keyInfo.MGK.data = mgk;
                         Log.WriteGetKeyLog("\r\nLocal MGK=" + keyInfo.MGK);
                         Log.WriteGetKeyLog("\r\nLocal MGK=" + keyInfo.MGK);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1899,7 +1900,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Fairplay", FunctionSettingNow.LocalFairplaySize, out FileStream Stream, out BinaryReader Reader, out string fairplay, out Fairplaypath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Fairplay", FunctionSettingNow.LocalFairplaySize, out FileStream Stream, out BinaryReader Reader, out string fairplay, out Fairplaypath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Fairplay = fairplay;
+                        keyInfo.Fairplay.data = fairplay;
                         Log.WriteGetKeyLog("\r\nLocal Fairplay=" + keyInfo.Fairplay);
                         Log.WriteGetKeyLog("\r\nLocal Fairplay=" + keyInfo.Fairplay);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1919,7 +1920,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "WiDi", FunctionSettingNow.LocalWidiSize, out FileStream Stream, out BinaryReader Reader, out string widi, out Widipath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "WiDi", FunctionSettingNow.LocalWidiSize, out FileStream Stream, out BinaryReader Reader, out string widi, out Widipath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.WiDi = widi;
+                        keyInfo.WiDi.data = widi;
                         Log.WriteGetKeyLog("\r\nLocal WiDi=" + keyInfo.WiDi);
                         Log.WriteGetKeyLog("\r\nLocal WiDi=" + keyInfo.WiDi);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1939,7 +1940,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Widevine", FunctionSettingNow.LocalWidevineSize, out FileStream Stream, out BinaryReader Reader, out string widevine, out Widevinepath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Widevine", FunctionSettingNow.LocalWidevineSize, out FileStream Stream, out BinaryReader Reader, out string widevine, out Widevinepath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Widevine = widevine;
+                        keyInfo.Widevine.data = widevine;
                         Log.WriteGetKeyLog("\r\nLocal Widevine=" + keyInfo.Widevine);
                         Log.WriteGetKeyLog("\r\nLocal Widevine=" + keyInfo.Widevine);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1959,7 +1960,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "CIKEY", FunctionSettingNow.LocalCiSize, out FileStream Stream, out BinaryReader Reader, out string ci, out Cipath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "CIKEY", FunctionSettingNow.LocalCiSize, out FileStream Stream, out BinaryReader Reader, out string ci, out Cipath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.CI_plus = ci;
+                        keyInfo.CI_plus.data = ci;
                         Log.WriteGetKeyLog("\r\nLocal CI_plus=" + keyInfo.CI_plus);
                         Log.WriteGetKeyLog("\r\nLocal CI_plus=" + keyInfo.CI_plus);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1979,7 +1980,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Attestation", FunctionSettingNow.LocalCiSize, out FileStream Stream, out BinaryReader Reader, out string attestation, out Attestationpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Attestation", FunctionSettingNow.LocalCiSize, out FileStream Stream, out BinaryReader Reader, out string attestation, out Attestationpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Attestation = attestation;
+                        keyInfo.Attestation.data = attestation;
                         Log.WriteGetKeyLog("\r\nLocal attestation=" + keyInfo.Attestation);
                         Log.WriteGetKeyLog("\r\nLocal attestation=" + keyInfo.Attestation);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -1999,7 +2000,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "LEK", -1, out FileStream Stream, out BinaryReader Reader, out string lek, out LEKpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "LEK", -1, out FileStream Stream, out BinaryReader Reader, out string lek, out LEKpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.LEK = lek;
+                        keyInfo.LEK.data = lek;
                         Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.LEK);
                         Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.LEK);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -2019,7 +2020,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "PEK", -1, out FileStream Stream, out BinaryReader Reader, out string pek, out PEKpath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "PEK", -1, out FileStream Stream, out BinaryReader Reader, out string pek, out PEKpath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.PEK = pek;
+                        keyInfo.PEK.data = pek;
                         Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.PEK);
                         Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.PEK);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -2039,7 +2040,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Playready", -1, out FileStream Stream, out BinaryReader Reader, out string playready, out Playreadypath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Playready", -1, out FileStream Stream, out BinaryReader Reader, out string playready, out Playreadypath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Playready = playready;
+                        keyInfo.Playready.data = playready;
                         Log.WriteGetKeyLog("\r\nLocal Playready=" + keyInfo.Playready);
                         Log.WriteGetKeyLog("\r\nLocal Playready=" + keyInfo.Playready);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -2059,7 +2060,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Hashkey", -1, out FileStream Stream, out BinaryReader Reader, out string hashkey, out Hashkeypath, out error, errorDBNow, ref localmidList, SN))
                     if (GetLocalKeyCount.GetLocalHexKeys(orderNow, "Hashkey", -1, out FileStream Stream, out BinaryReader Reader, out string hashkey, out Hashkeypath, out error, errorDBNow, ref localmidList, SN))
                     {
                     {
-                        keyInfo.Hashkey = hashkey;
+                        keyInfo.Hashkey.data = hashkey;
                         Log.WriteGetKeyLog("\r\nLocal Hashkey=" + keyInfo.Hashkey);
                         Log.WriteGetKeyLog("\r\nLocal Hashkey=" + keyInfo.Hashkey);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -2079,7 +2080,7 @@ 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))
                     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_Data = acaskey;
+                        keyInfo.ACASKey_Data.data = acaskey;
                         Log.WriteGetKeyLog("\r\nLocal ACASKey=" + keyInfo.ACASKey_Data);
                         Log.WriteGetKeyLog("\r\nLocal ACASKey=" + keyInfo.ACASKey_Data);
                         if (Stream != null && Reader != null)
                         if (Stream != null && Reader != null)
                         {
                         {
@@ -2120,7 +2121,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "DeviceID", SN, "devicetype=tcl_unknown_model", errorDBNow, out string did, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "DeviceID", SN, "devicetype=tcl_unknown_model", errorDBNow, out string did, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.DID = did;
+                        keyInfo.DID.data = did;
                         Log.WriteGetKeyLog("\r\nDeviceID=" + keyInfo.DID);
                         Log.WriteGetKeyLog("\r\nDeviceID=" + keyInfo.DID);
                     }
                     }
                     else
                     else
@@ -2134,7 +2135,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.Mac = mac;
+                        keyInfo.Mac.data = mac;
                         Log.WriteGetKeyLog("\r\nMac=" + keyInfo.Mac);
                         Log.WriteGetKeyLog("\r\nMac=" + keyInfo.Mac);
                     }
                     }
                     else
                     else
@@ -2148,7 +2149,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "HDCP_KEY", SN, midListNow.keytype["HDCP_KEY"], errorDBNow, out string hdcp, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "HDCP_KEY", SN, midListNow.keytype["HDCP_KEY"], errorDBNow, out string hdcp, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.HDCP = hdcp;
+                        keyInfo.HDCP.data = hdcp;
                         Log.WriteGetKeyLog("\r\nHDCP=" + keyInfo.HDCP);
                         Log.WriteGetKeyLog("\r\nHDCP=" + keyInfo.HDCP);
                     }
                     }
                     else
                     else
@@ -2162,7 +2163,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "HDCP2.2_KEY", SN, midListNow.keytype["HDCP2.2_KEY"], errorDBNow, out string hdcp22, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "HDCP2.2_KEY", SN, midListNow.keytype["HDCP2.2_KEY"], errorDBNow, out string hdcp22, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.HDCP22 = hdcp22;
+                        keyInfo.HDCP22.data = hdcp22;
                         Log.WriteGetKeyLog("\r\nHDCP22=" + keyInfo.HDCP22);
                         Log.WriteGetKeyLog("\r\nHDCP22=" + keyInfo.HDCP22);
                     }
                     }
                     else
                     else
@@ -2176,7 +2177,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "NETFILX_ESN", SN, midListNow.keytype["NETFILX_ESN"], errorDBNow, out string esn, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "NETFILX_ESN", SN, midListNow.keytype["NETFILX_ESN"], errorDBNow, out string esn, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.ESN = esn;
+                        keyInfo.ESN.data = esn;
                         Log.WriteGetKeyLog("\r\nESN=" + keyInfo.ESN);
                         Log.WriteGetKeyLog("\r\nESN=" + keyInfo.ESN);
                     }
                     }
                     else
                     else
@@ -2190,7 +2191,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "WiDi", SN, midListNow.keytype["WiDi"], errorDBNow, out string widi, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "WiDi", SN, midListNow.keytype["WiDi"], errorDBNow, out string widi, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.WiDi = widi;
+                        keyInfo.WiDi.data = widi;
                         Log.WriteGetKeyLog("\r\nWiDi=" + keyInfo.WiDi);
                         Log.WriteGetKeyLog("\r\nWiDi=" + keyInfo.WiDi);
                     }
                     }
                     else
                     else
@@ -2204,7 +2205,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "CI_PLUS_KEY", SN, midListNow.keytype["CI_PLUS_KEY"], errorDBNow, out string ci, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "CI_PLUS_KEY", SN, midListNow.keytype["CI_PLUS_KEY"], errorDBNow, out string ci, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.CI_plus = ci;
+                        keyInfo.CI_plus.data = ci;
                         Log.WriteGetKeyLog("\r\nCI_plus=" + keyInfo.CI_plus);
                         Log.WriteGetKeyLog("\r\nCI_plus=" + keyInfo.CI_plus);
                     }
                     }
                     else
                     else
@@ -2228,13 +2229,13 @@ namespace MOKA_Factory_Tools
                         orderNow,
                         orderNow,
                         out string md5))
                         out string md5))
                     {
                     {
-                        keyInfo.Widevine = widevine;
+                        keyInfo.Widevine.data = widevine;
                         Log.WriteGetKeyLog("\r\nWidevine=" + keyInfo.Widevine);
                         Log.WriteGetKeyLog("\r\nWidevine=" + keyInfo.Widevine);
 
 
                         if (isAndroidTV)
                         if (isAndroidTV)
                         {
                         {
-                            keyInfo.Attestation = attestation;
-                            keyInfo.AttestationMD5 = md5;
+                            keyInfo.Attestation.data = attestation;
+                            keyInfo.AttestationMD5.data = md5;
                             Log.WriteGetKeyLog("\r\nAttestationMD5=" + keyInfo.AttestationMD5);
                             Log.WriteGetKeyLog("\r\nAttestationMD5=" + keyInfo.AttestationMD5);
                         }
                         }
                     }
                     }
@@ -2249,7 +2250,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "MGK_KEY", SN, midListNow.keytype["MGK_KEY"], errorDBNow, out string mgk, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "MGK_KEY", SN, midListNow.keytype["MGK_KEY"], errorDBNow, out string mgk, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.MGK = mgk;
+                        keyInfo.MGK.data = mgk;
                         Log.WriteGetKeyLog("\r\nMGK=" + keyInfo.MGK);
                         Log.WriteGetKeyLog("\r\nMGK=" + keyInfo.MGK);
                     }
                     }
                     else
                     else
@@ -2263,7 +2264,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "Fairplay_KEY", SN, midListNow.keytype["Fairplay_KEY"], errorDBNow, out string fairplay, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "Fairplay_KEY", SN, midListNow.keytype["Fairplay_KEY"], errorDBNow, out string fairplay, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.Fairplay = fairplay;
+                        keyInfo.Fairplay.data = fairplay;
                         Log.WriteGetKeyLog("\r\nFairplay=" + keyInfo.Fairplay);
                         Log.WriteGetKeyLog("\r\nFairplay=" + keyInfo.Fairplay);
                     }
                     }
                     else
                     else
@@ -2277,7 +2278,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", "WiFi_MAC" + SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", "WiFi_MAC" + SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.WiFi_MAC = mac;
+                        keyInfo.WiFi_MAC.data = mac;
                         Log.WriteGetKeyLog("\r\nWiFi_MAC=" + keyInfo.WiFi_MAC);
                         Log.WriteGetKeyLog("\r\nWiFi_MAC=" + keyInfo.WiFi_MAC);
                     }
                     }
                     else
                     else
@@ -2291,7 +2292,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", "BT_MAC" + SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "MAC", "BT_MAC" + SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.BT_MAC = mac;
+                        keyInfo.BT_MAC.data = mac;
                         Log.WriteGetKeyLog("\r\nBT_MAC=" + keyInfo.BT_MAC);
                         Log.WriteGetKeyLog("\r\nBT_MAC=" + keyInfo.BT_MAC);
                     }
                     }
                     else
                     else
@@ -2305,7 +2306,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "ECP_KEY", SN, midListNow.keytype["ECP_KEY"], errorDBNow, out string ecp, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "ECP_KEY", SN, midListNow.keytype["ECP_KEY"], errorDBNow, out string ecp, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.ECP = ecp;
+                        keyInfo.ECP.data = ecp;
                         Log.WriteGetKeyLog("\r\nECP_KEY=" + keyInfo.ECP);
                         Log.WriteGetKeyLog("\r\nECP_KEY=" + keyInfo.ECP);
                     }
                     }
                     else
                     else
@@ -2319,7 +2320,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "LEK", SN, midListNow.keytype["LEK"], errorDBNow, out string lek, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "LEK", SN, midListNow.keytype["LEK"], errorDBNow, out string lek, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.LEK = lek;
+                        keyInfo.LEK.data = lek;
                         Log.WriteGetKeyLog("\r\nLEK=" + keyInfo.LEK);
                         Log.WriteGetKeyLog("\r\nLEK=" + keyInfo.LEK);
                     }
                     }
                     else
                     else
@@ -2333,7 +2334,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "PEK", SN, midListNow.keytype["PEK"], errorDBNow, out string pek, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "PEK", SN, midListNow.keytype["PEK"], errorDBNow, out string pek, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.PEK = pek;
+                        keyInfo.PEK.data = pek;
                         Log.WriteGetKeyLog("\r\nPEK=" + keyInfo.PEK);
                         Log.WriteGetKeyLog("\r\nPEK=" + keyInfo.PEK);
                     }
                     }
                     else
                     else
@@ -2347,7 +2348,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "PlayReady_key", SN, midListNow.keytype["PlayReady_key"], errorDBNow, out string playready, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "PlayReady_key", SN, midListNow.keytype["PlayReady_key"], errorDBNow, out string playready, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.Playready = playready;
+                        keyInfo.Playready.data = playready;
                         Log.WriteGetKeyLog("\r\nPlayReady_key=" + keyInfo.Playready);
                         Log.WriteGetKeyLog("\r\nPlayReady_key=" + keyInfo.Playready);
                     }
                     }
                     else
                     else
@@ -2361,7 +2362,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "Hashkey", SN, midListNow.keytype["Hashkey"], errorDBNow, out string hash, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "Hashkey", SN, midListNow.keytype["Hashkey"], errorDBNow, out string hash, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.Hashkey = hash;
+                        keyInfo.Hashkey.data = hash;
                         Log.WriteGetKeyLog("\r\nHashkey=" + keyInfo.Hashkey);
                         Log.WriteGetKeyLog("\r\nHashkey=" + keyInfo.Hashkey);
                     }
                     }
                     else
                     else
@@ -2375,7 +2376,7 @@ namespace MOKA_Factory_Tools
                 {
                 {
                     if (CommonMethod.GetKeys(midListNow.host, "YouTube_KEY", SN, midListNow.keytype["YouTube_KEY"], errorDBNow, out string youtube, out error, orderNow, out string md5))
                     if (CommonMethod.GetKeys(midListNow.host, "YouTube_KEY", SN, midListNow.keytype["YouTube_KEY"], errorDBNow, out string youtube, out error, orderNow, out string md5))
                     {
                     {
-                        keyInfo.YouTube_KEY = youtube;
+                        keyInfo.YouTube_KEY.data = youtube;
                         Log.WriteGetKeyLog("\r\nYouTube_KEY=" + keyInfo.YouTube_KEY);
                         Log.WriteGetKeyLog("\r\nYouTube_KEY=" + keyInfo.YouTube_KEY);
                     }
                     }
                     else
                     else
@@ -2387,21 +2388,21 @@ namespace MOKA_Factory_Tools
                 }
                 }
                 if (WriteEDIDPID.Checked)
                 if (WriteEDIDPID.Checked)
                 {
                 {
-                    keyInfo.EDIDPid = midListNow.keytype["edid_pid"];
+                    keyInfo.EDIDPid.data = midListNow.keytype["edid_pid"];
                 }
                 }
                 if (WriteEDIDName.Checked)
                 if (WriteEDIDName.Checked)
                 {
                 {
-                    keyInfo.EDIDModelName = midListNow.keytype["edid_model_name"];
+                    keyInfo.EDIDModelName.data = midListNow.keytype["edid_model_name"];
                 }
                 }
                 if (WriteACASKey.Checked)
                 if (WriteACASKey.Checked)
                 {
                 {
                     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))
                     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_Data = acaskey_data;
-                        keyInfo.ACASKey_DataMd5 = acaskey_datamd5;
+                        keyInfo.ACASKey_Data.data = acaskey_data;
+                        keyInfo.ACASKey_DataMd5.data = acaskey_datamd5;
 
 
-                        keyInfo.ACASKey_Tool = acaskey_tool;
-                        keyInfo.ACASKey_ToolMd5 = acaskey_toolmd5;
+                        keyInfo.ACASKey_Tool.data = acaskey_tool;
+                        keyInfo.ACASKey_ToolMd5.data = acaskey_toolmd5;
 
 
                         Log.WriteGetKeyLog("\r\nACAS_KEY_DATA=" + keyInfo.ACASKey_Data + "\r\nACAS_KEY_MD5=" + keyInfo.ACASKey_DataMd5);
                         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);
                         Log.WriteGetKeyLog("\r\nACAS_KEY_TOOL=" + keyInfo.ACASKey_Tool + "\r\nACAS_KEY_TOOLMD5=" + keyInfo.ACASKey_ToolMd5);
@@ -2432,25 +2433,29 @@ namespace MOKA_Factory_Tools
                 if (_MiKey.EthernetMac != null)
                 if (_MiKey.EthernetMac != null)
                 {
                 {
                     SetCheckboxStatus(WriteMac, true);
                     SetCheckboxStatus(WriteMac, true);
-                    keyInfo.Mac = _MiKey.EthernetMac;
+                    keyInfo.Mac.data = _MiKey.EthernetMac;
+                    keyInfo.Mac.enable = true;
                 }
                 }
 
 
                 if (_MiKey.BTMac != null)
                 if (_MiKey.BTMac != null)
                 {
                 {
                     SetCheckboxStatus(WriteBTMac, true);
                     SetCheckboxStatus(WriteBTMac, true);
-                    keyInfo.BT_MAC = _MiKey.BTMac;
+                    keyInfo.BT_MAC.data = _MiKey.BTMac;
+                    keyInfo.BT_MAC.enable = true;
                 }
                 }
 
 
                 if (_MiKey.DSN != null)
                 if (_MiKey.DSN != null)
                 {
                 {
                     SetCheckboxStatus(WriteDSN, true);
                     SetCheckboxStatus(WriteDSN, true);
-                    keyInfo.DSN = _MiKey.DSN;
+                    keyInfo.DSN.data = _MiKey.DSN;
+                    keyInfo.DSN.enable = true;
                 }
                 }
 
 
                 if (_MiKey.WifiMac != null)
                 if (_MiKey.WifiMac != null)
                 {
                 {
                     SetCheckboxStatus(WriteWifiMac, true);
                     SetCheckboxStatus(WriteWifiMac, true);
-                    keyInfo.WiFi_MAC = _MiKey.WifiMac;
+                    keyInfo.WiFi_MAC.data = _MiKey.WifiMac;
+                    keyInfo.WiFi_MAC.enable = true;
                 }
                 }
             }
             }
             #endregion
             #endregion
@@ -2559,12 +2564,14 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.DID.result = true;
             }
             }
 
 
             //Eth_Mac抄写
             //Eth_Mac抄写
             if (WriteMac.Checked)
             if (WriteMac.Checked)
             {
             {
-                string mac = keyInfo.Mac.Replace("-", "");
+                string mac = keyInfo.Mac.data.Replace("-", "");
                 if (!CommonMethod.IsNumberAndWord(mac))
                 if (!CommonMethod.IsNumberAndWord(mac))
                 {
                 {
                     ErrMsg = string.Format("Mac format error!\r\n{0}", mac);
                     ErrMsg = string.Format("Mac format error!\r\n{0}", mac);
@@ -2621,12 +2628,14 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Mac.result = true;
             }
             }
 
 
             //WiFi_MAC抄写
             //WiFi_MAC抄写
             if (WriteWifiMac.Checked)
             if (WriteWifiMac.Checked)
             {
             {
-                string wifimac = keyInfo.WiFi_MAC.Replace("-", "");
+                string wifimac = keyInfo.WiFi_MAC.data.Replace("-", "");
                 if (!CommonMethod.IsNumberAndWord(wifimac))
                 if (!CommonMethod.IsNumberAndWord(wifimac))
                 {
                 {
                     ErrMsg = string.Format("Wifi Mac format error!\r\n{0}", wifimac);
                     ErrMsg = string.Format("Wifi Mac format error!\r\n{0}", wifimac);
@@ -2683,12 +2692,14 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.WiFi_MAC.result = true;
             }
             }
 
 
             //BT_MAC抄写
             //BT_MAC抄写
             if (WriteBTMac.Checked)
             if (WriteBTMac.Checked)
             {
             {
-                string btmac = keyInfo.BT_MAC.Replace("-", "");
+                string btmac = keyInfo.BT_MAC.data.Replace("-", "");
                 if (!CommonMethod.IsNumberAndWord(btmac))
                 if (!CommonMethod.IsNumberAndWord(btmac))
                 {
                 {
                     ErrMsg = string.Format("BTMac format error!\r\n{0}", btmac);
                     ErrMsg = string.Format("BTMac format error!\r\n{0}", btmac);
@@ -2745,6 +2756,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.BT_MAC.result = true;
             }
             }
 
 
             //HDCP KEY抄写
             //HDCP KEY抄写
@@ -2807,6 +2820,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.HDCP.result = true;
             }
             }
 
 
             //HDCP22 KEY抄写
             //HDCP22 KEY抄写
@@ -2869,6 +2884,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.HDCP22.result = true;
             }
             }
 
 
             //ESN KEY抄写
             //ESN KEY抄写
@@ -2994,6 +3011,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.WiDi.result = true;
             }
             }
 
 
             //PEK抄写
             //PEK抄写
@@ -3056,6 +3075,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.PEK.result = true;
             }
             }
 
 
             //Youtube key抄写
             //Youtube key抄写
@@ -3118,6 +3139,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.YouTube_KEY.result = true;
             }
             }
 
 
             //Widevine KEY抄写
             //Widevine KEY抄写
@@ -3187,6 +3210,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Widevine.result = true;
             }
             }
 
 
             //CI plus KEY抄写
             //CI plus KEY抄写
@@ -3256,6 +3281,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.CI_plus.result = true;
             }
             }
 
 
             //Attestation KEY抄写
             //Attestation KEY抄写
@@ -3325,6 +3352,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Attestation.result = true;
             }
             }
 
 
             //MGK KEY抄写
             //MGK KEY抄写
@@ -3395,6 +3424,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.MGK.result = true;
             }
             }
 
 
             //Fairplay KEY抄写
             //Fairplay KEY抄写
@@ -3456,6 +3487,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Fairplay.result = true;
             }
             }
 
 
             //ECP KEY抄写
             //ECP KEY抄写
@@ -3517,6 +3550,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.ECP.result = true;
             }
             }
 
 
             //LEK抄写
             //LEK抄写
@@ -3578,6 +3613,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.LEK.result = true;
             }
             }
 
 
             //Playready抄写
             //Playready抄写
@@ -3647,6 +3684,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Playready.result = true;
             }
             }
 
 
             //Hash抄写
             //Hash抄写
@@ -3708,6 +3747,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.Hashkey.result = true;
             }
             }
 
 
             //频道预置
             //频道预置
@@ -3878,6 +3919,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.EDIDPid.result = true;
             }
             }
 
 
             // EDID Mode Name抄写;
             // EDID Mode Name抄写;
@@ -3932,6 +3975,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.EDIDModelName.result = true;
             }
             }
 
 
             // ACAS Key抄写;
             // ACAS Key抄写;
@@ -4040,6 +4085,8 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                     goto end;
                 }
                 }
+
+                keyInfo.ACASKey_Data.result = true;
             }
             }
 
 
             //Project ID 抄写检查
             //Project ID 抄写检查
@@ -4657,10 +4704,10 @@ namespace MOKA_Factory_Tools
                         string error_psn;
                         string error_psn;
                         if (SerialCMD.ReadFireTVPSN(TVPort, out result_psn, out data_psn, out error_psn, SerailDelay))
                         if (SerialCMD.ReadFireTVPSN(TVPort, out result_psn, out data_psn, out error_psn, SerailDelay))
                         {
                         {
-                            string psn = Encoding.ASCII.GetString(data_psn);
+                            string psn = keyInfo._PSN.data = Encoding.ASCII.GetString(data_psn);
                             if (CommonMethod.GetFireTVDsn(midListNow.host, orderNow, Encoding.ASCII.GetString(data), SN, psn, out string dsn, out error_psn, errorDBNow))
                             if (CommonMethod.GetFireTVDsn(midListNow.host, orderNow, Encoding.ASCII.GetString(data), SN, psn, out string dsn, out error_psn, errorDBNow))
                             {
                             {
-                                keyInfo.DSN = dsn;
+                                keyInfo.DSN.data = dsn;
                                 if (!CommonMethod.IsNumberAndWord(keyInfo.DSN))
                                 if (!CommonMethod.IsNumberAndWord(keyInfo.DSN))
                                 {
                                 {
                                     ErrMsg = string.Format("DSN format error!\r\n{0}", keyInfo.DSN);
                                     ErrMsg = string.Format("DSN format error!\r\n{0}", keyInfo.DSN);
@@ -4740,6 +4787,8 @@ namespace MOKA_Factory_Tools
                     watch.Stop();
                     watch.Stop();
                     Log.WriteInfoLog(string.Format("Write DSN Elapsed={0}", watch.Elapsed.TotalMilliseconds));
                     Log.WriteInfoLog(string.Format("Write DSN Elapsed={0}", watch.Elapsed.TotalMilliseconds));
                 }
                 }
+
+                keyInfo.DSN.result = true;
             }
             }
 
 
             if (FunctionSettingNow.MITVEnable)
             if (FunctionSettingNow.MITVEnable)
@@ -4932,8 +4981,8 @@ namespace MOKA_Factory_Tools
             }
             }
             #endregion
             #endregion
 
 
-            SetsuccessStatus(ResultStatus);
             Thread.Sleep(FunctionSettingNow.Wait_after_completion);
             Thread.Sleep(FunctionSettingNow.Wait_after_completion);
+            SetsuccessStatus(ResultStatus);
         end:
         end:
             #region 只有惠州工厂才启用G客户防呆措施;
             #region 只有惠州工厂才启用G客户防呆措施;
             if (FunctionSettingNow.NTF)
             if (FunctionSettingNow.NTF)
@@ -5008,14 +5057,18 @@ namespace MOKA_Factory_Tools
                 if (TestResult != 2)
                 if (TestResult != 2)
                 { // 上报抄写结果到MES系统中;
                 { // 上报抄写结果到MES系统中;
                     string strOutMsg;
                     string strOutMsg;
-                    if (!CommonMethod.ReportDataBurningResultToMES(SN, keyInfo.DSN, (TestResult != 0) ? "Pass" : "Fail", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), errorDBNow, out strOutMsg))
+                    string returnObject;
+                    if (!CommonMethod.ReportDataBurningResultToMES(SN, keyInfo.DSN, (TestResult != 0) ? "Pass" : "Fail", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), errorDBNow, out strOutMsg, out returnObject))
                     {
                     {
                         ErrMsg = string.Format("上报抄写结果到MES失败,请紧急处理:{0}", strOutMsg);
                         ErrMsg = string.Format("上报抄写结果到MES失败,请紧急处理:{0}", strOutMsg);
                         Log.WriteErrorLog(ErrMsg);
                         Log.WriteErrorLog(ErrMsg);
                         // 上报MES失败,重置为False
                         // 上报MES失败,重置为False
                         TestResult = 0;
                         TestResult = 0;
                     }
                     }
-                }                
+
+                    // 将测试结果保存到Kayla要求的csv文件中;
+                    CommonMethod.GeneratKaylaData(FunctionSettingNow.Line, FunctionSettingNow.Station, OrderText.Text, SN, startTime, DateTime.Now, returnObject, keyInfo, TestResult != 0 ? true : false);
+                }
             }
             }
             #endregion
             #endregion
 
 
@@ -6111,27 +6164,27 @@ namespace MOKA_Factory_Tools
         /// </summary>
         /// </summary>
         public void Onlinemode()
         public void Onlinemode()
         {
         {
-            WriteDID.Checked = (WriteDID.Checked && m_writedid.Text != LResource.Skip);
-            WriteMac.Checked = (WriteMac.Checked && m_writemac.Text != LResource.Skip);
-            WriteHDCP.Checked = (WriteHDCP.Checked && m_writehdcp.Text != LResource.Skip);
-            WriteHDCP22.Checked = (WriteHDCP22.Checked && m_writehdcp22.Text != LResource.Skip);
-            WriteWiDi.Checked = (WriteWiDi.Checked && m_writewidi.Text != LResource.Skip);
-            WriteWidevine.Checked = (WriteWidevine.Checked && m_writewidevine.Text != LResource.Skip);
-            WriteESN.Checked = (WriteESN.Checked && m_writeesn.Text != LResource.Skip);
-            WriteCiplus.Checked = (WriteCiplus.Checked && m_writeci.Text != LResource.Skip);
-            WriteAttestation.Checked = (WriteAttestation.Checked && m_writeattestation.Text != LResource.Skip);
-            WriteMGK.Checked = (WriteMGK.Checked && m_writeMGK.Text != LResource.Skip);
-            WriteWifiMac.Checked = (WriteWifiMac.Checked && m_writeWifiMac.Text != LResource.Skip);
-            WriteBTMac.Checked = (WriteBTMac.Checked && m_writeBTMac.Text != LResource.Skip);
-            WriteECP.Checked = (WriteECP.Checked && m_writeECP.Text != LResource.Skip);
-            WriteLEK.Checked = (WriteLEK.Checked && m_writeLEK.Text != LResource.Skip);
-            WritePEK.Checked = (WritePEK.Checked && m_writePEK.Text != LResource.Skip);
-            WritePlayready.Checked = (WritePlayready.Checked && m_writePlayready.Text != LResource.Skip);
-            WriteHash.Checked = (WriteHash.Checked && m_writeHash.Text != LResource.Skip);
-            WriteYouTube.Checked = (WriteYouTube.Checked && m_writeYouTube.Text != LResource.Skip);
-            WriteEDIDPID.Checked = (WriteEDIDPID.Checked && m_writeEDIDPID.Text != LResource.Skip);
-            WriteEDIDName.Checked = (WriteEDIDName.Checked && m_writeEDIDName.Text != LResource.Skip);
-            WriteACASKey.Checked = (WriteACASKey.Checked && m_writeACASKey.Text != LResource.Skip);
+            keyInfo.DID.enable = WriteDID.Checked = (WriteDID.Checked && m_writedid.Text != LResource.Skip);
+            keyInfo.Mac.enable = WriteMac.Checked = (WriteMac.Checked && m_writemac.Text != LResource.Skip);
+            keyInfo.HDCP.enable = WriteHDCP.Checked = (WriteHDCP.Checked && m_writehdcp.Text != LResource.Skip);
+            keyInfo.HDCP22.enable = WriteHDCP22.Checked = (WriteHDCP22.Checked && m_writehdcp22.Text != LResource.Skip);
+            keyInfo.WiDi.enable = WriteWiDi.Checked = (WriteWiDi.Checked && m_writewidi.Text != LResource.Skip);
+            keyInfo.Widevine.enable = WriteWidevine.Checked = (WriteWidevine.Checked && m_writewidevine.Text != LResource.Skip);
+            keyInfo.ESN.enable = WriteESN.Checked = (WriteESN.Checked && m_writeesn.Text != LResource.Skip);
+            keyInfo.CI_plus.enable = WriteCiplus.Checked = (WriteCiplus.Checked && m_writeci.Text != LResource.Skip);
+            keyInfo.Attestation.enable = WriteAttestation.Checked = (WriteAttestation.Checked && m_writeattestation.Text != LResource.Skip);
+            keyInfo.MGK.enable = WriteMGK.Checked = (WriteMGK.Checked && m_writeMGK.Text != LResource.Skip);
+            keyInfo.WiFi_MAC.enable = WriteWifiMac.Checked = (WriteWifiMac.Checked && m_writeWifiMac.Text != LResource.Skip);
+            keyInfo.BT_MAC.enable = WriteBTMac.Checked = (WriteBTMac.Checked && m_writeBTMac.Text != LResource.Skip);
+            keyInfo.ECP.enable = WriteECP.Checked = (WriteECP.Checked && m_writeECP.Text != LResource.Skip);
+            keyInfo.LEK.enable = WriteLEK.Checked = (WriteLEK.Checked && m_writeLEK.Text != LResource.Skip);
+            keyInfo.PEK.enable = WritePEK.Checked = (WritePEK.Checked && m_writePEK.Text != LResource.Skip);
+            keyInfo.Playready.enable = WritePlayready.Checked = (WritePlayready.Checked && m_writePlayready.Text != LResource.Skip);
+            keyInfo.Hashkey.enable = WriteHash.Checked = (WriteHash.Checked && m_writeHash.Text != LResource.Skip);
+            keyInfo.YouTube_KEY.enable = WriteYouTube.Checked = (WriteYouTube.Checked && m_writeYouTube.Text != LResource.Skip);
+            keyInfo.EDIDPid.enable = WriteEDIDPID.Checked = (WriteEDIDPID.Checked && m_writeEDIDPID.Text != LResource.Skip);
+            keyInfo.EDIDModelName.enable = WriteEDIDName.Checked = (WriteEDIDName.Checked && m_writeEDIDName.Text != LResource.Skip);
+            keyInfo.ACASKey_Data.enable = WriteACASKey.Checked = (WriteACASKey.Checked && m_writeACASKey.Text != LResource.Skip);
             bool preloadresult = false;
             bool preloadresult = false;
 
 
             preloadresult = true;
             preloadresult = true;