Browse Source

1、更新数据库Roku相关表结构;2、更新数据库表相关数据接口;3、更新相应调用接口逻辑。

JeffWang 2 years ago
parent
commit
f431368079

+ 8 - 5
FactoryTool_CShare/Business/CommonMethod.cs

@@ -259,6 +259,7 @@ namespace MOKA_Factory_Tools
                 mid.whiteType = jObject["whiteType"].Value<string>();
                 object a = jObject["rokuCustomer"];
                 if (jObject["rokuCustomer"].ToString().Length > 0)
+                {
                     mid.rokuCustomer = new RokuCustomer()
                     {
                         id = JSON_SeleteNode(jObject["rokuCustomer"], "id").Trim(),
@@ -266,15 +267,15 @@ namespace MOKA_Factory_Tools
                         brand = JSON_SeleteNode(jObject["rokuCustomer"], "brand").Trim(),
                         region = JSON_SeleteNode(jObject["rokuCustomer"], "region").Trim(),
                         oemmodel = JSON_SeleteNode(jObject["rokuCustomer"], "oemmodel").Trim(),
-                        supporturl = JSON_SeleteNode(jObject["rokuCustomer"], "supporturl").Trim(),
-                        supportphone = JSON_SeleteNode(jObject["rokuCustomer"], "supportphone").Trim(),
+                        //supporturl = JSON_SeleteNode(jObject["rokuCustomer"], "supporturl").Trim(),
+                        //supportphone = JSON_SeleteNode(jObject["rokuCustomer"], "supportphone").Trim(),
                         productiondate = JSON_SeleteNode(jObject["rokuCustomer"], "productiondate").Trim(),
                         remotetype = JSON_SeleteNode(jObject["rokuCustomer"], "remotetype").Trim(),
                         updatetime = JSON_SeleteNode(jObject["rokuCustomer"], "updatetime").Trim(),
                         createtime = JSON_SeleteNode(jObject["rokuCustomer"], "createtime").Trim(),
                         isdelete = JSON_SeleteNode(jObject["rokuCustomer"], "isdelete").Trim()
                     };
-
+                }
                 mid.keytype = new Dictionary<string, string>();
                 foreach (var ss in jObject["obj"])  //查找某个字段与值
                 {
@@ -2133,7 +2134,8 @@ end:
                         {
                             if (localmidList.host == null)
                             {
-                                if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
+                                //if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
+                                if (V2Method.GetMidInfo(order, TestMode.MAC, errorDBNow, out localmidList))
                                 {
                                     ;
                                 }
@@ -2209,7 +2211,8 @@ end:
                         {
                             if (localmidList.host == null)
                             {
-                                if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
+                                //if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
+                                if (V2Method.GetMidInfo(order, TestMode.MAC, errorDBNow, out localmidList))
                                 {
                                     ;
                                 }

+ 16 - 23
FactoryTool_CShare/Database/SQLiteHelper.cs

@@ -82,7 +82,7 @@ namespace MOKA_Factory_Tools
                 sqliteConn.Open();
                 SQLiteCommand cmd = new SQLiteCommand();
                 cmd.Connection = sqliteConn;
-                cmd.CommandText = string.Format("insert into rokuCustomer(ordernum,region,brand,oemmodel,supporturl,supportphone,productiondate,remotetype) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7]);
+                cmd.CommandText = string.Format("insert into rokuCustomer(ordernum,data) values('{0}','{1}')", param[0], param[1]);
                 cmd.ExecuteNonQuery();
             }
             sqliteConn.Close();
@@ -143,6 +143,7 @@ namespace MOKA_Factory_Tools
             sqliteConn.Close();
             sqliteConn.Dispose();
         }
+
         static public void UpdateStatus(string dbPath, string str)
         {
             SQLiteConnection sqliteConn = new SQLiteConnection("data source=" + dbPath);
@@ -157,6 +158,7 @@ namespace MOKA_Factory_Tools
             sqliteConn.Close();
             sqliteConn.Dispose();
         }
+
         /// <summary>
         /// 使用事务批量插入sn,key行
         /// </summary>
@@ -192,8 +194,7 @@ namespace MOKA_Factory_Tools
                     trans.Rollback();
                 Log.WriteErrorLog("\r\nFail to transfer key to DB:\r\n" + ex.Message);
                 return false;
-            }
-            
+            }            
         }
 
         /// <summary>
@@ -307,17 +308,7 @@ namespace MOKA_Factory_Tools
             if (dr.Read())
             {
                 NameValueCollection user = dr.GetValues();
-                rokuCustomer = new RokuCustomer()
-                {
-                    ordernum = user.Get("ordernum"),
-                    brand = user.Get("brand"),
-                    region = user.Get("region"),
-                    oemmodel = user.Get("oemmodel"),
-                    supporturl = user.Get("supporturl"),
-                    supportphone = user.Get("supportphone"),
-                    productiondate = user.Get("productiondate"),
-                    remotetype= user.Get("remotetype")
-                };
+                rokuCustomer = V2Method.GetRokuInfo(user.Get("data"));
                 dr.Close();
                 return true;
             }
@@ -422,6 +413,7 @@ namespace MOKA_Factory_Tools
             dr.Close();
             return false;
         }
+
         static public bool UpdateCopyStatus(SQLiteConnection sqliteConn,string SN,out string copydate)
         {
             SQLiteCommand cmd = new SQLiteCommand();
@@ -443,6 +435,7 @@ namespace MOKA_Factory_Tools
             else
                 return false;
         }
+
         static public bool UpdateReportStatus(SQLiteConnection sqliteConn, string SN)
         {
             SQLiteCommand cmd = new SQLiteCommand();
@@ -477,8 +470,8 @@ namespace MOKA_Factory_Tools
             {
                 return false;
             }
-
         }
+
         static public bool InsertDelayCopyReport(SQLiteConnection sqliteConn, object[] param)
         {
             SQLiteCommand cmd = new SQLiteCommand();
@@ -576,6 +569,7 @@ namespace MOKA_Factory_Tools
             else
                 return false;
         }
+
         public static bool UpdateProductionNum(SQLiteConnection sqliteConn, string order)
         {
             try
@@ -609,9 +603,9 @@ namespace MOKA_Factory_Tools
             {
                 Log.WriteErrorLog("\r\nFail to UpdateProductionNum:" + ex.Message);
                 return false;
-            }
-            
+            }            
         }
+
         /// <summary>
         /// 获取本地DB对应订单已经抄写的数量(包含重复抄写)
         /// </summary>
@@ -643,8 +637,8 @@ namespace MOKA_Factory_Tools
                 Log.WriteErrorLog("\r\nFail to GetProductionNum:" + ex.Message);
                 return "";
             }
-
         }
+
         /// <summary>
         /// 删除30天之前已经上报的数据
         /// </summary>
@@ -670,6 +664,7 @@ namespace MOKA_Factory_Tools
                 return false;
             }
         }
+
         /// <summary>
         /// 获取本地DB记录的未上报异常数据
         /// </summary>
@@ -705,9 +700,9 @@ namespace MOKA_Factory_Tools
                 GC.Collect();
                 Log.WriteErrorLog("\r\nFail to GetErrorReportData:" + ex.Message);
                 return false;
-            }
-            
+            }            
         }
+
         /// <summary>
         /// 获取本地DB记录的未上报烧录数据
         /// </summary>
@@ -744,10 +739,8 @@ namespace MOKA_Factory_Tools
                 Log.WriteErrorLog("\r\nFail to GetDelayReportData:" + ex.Message);
                 return false;
             }
-
         }
 
-
         public static bool GetEppormDataList(SQLiteConnection sqliteConn, out List<PostDateClass> postList,out List<string> SNs)
         {
             postList = new List<PostDateClass>();
@@ -860,8 +853,8 @@ namespace MOKA_Factory_Tools
                 Log.WriteErrorLog("\r\nFail to GetEppormDataCount:" + ex.Message);
                 return false;
             }
-
         }
+
         /// <summary>
         /// 更新本地DB记录的未上报数据
         /// </summary>

+ 35 - 18
FactoryTool_CShare/Views/Download.cs

@@ -38,6 +38,7 @@ namespace MOKA_Factory_Tools
         public MidList midlistnow;
         public WhiteBalanceList whiteBalanceListnow;
         public string filename;
+
         public Download(System.Data.SQLite.SQLiteConnection errorDB, MidAddress MidAddress1,int type, MidList midList, WhiteBalanceList whiteBalanceList)
         {
             InitializeComponent();
@@ -114,7 +115,7 @@ namespace MOKA_Factory_Tools
                 }
             }
 
-           Thread[] threadk = new Thread[thread];
+            Thread[] threadk = new Thread[thread];
             HttpFile[] httpfile = new HttpFile[thread];
 
             //各进程开始下载
@@ -127,8 +128,7 @@ namespace MOKA_Factory_Tools
         }
 
         private void Download_Shown(object sender, EventArgs e)
-        {
-            
+        {            
             StartDownload();
         }
 
@@ -231,30 +231,47 @@ namespace MOKA_Factory_Tools
                         SQLiteHelper.NewTable(dbPath, "keys", "(sn varchar,keys varvhar,copy_date DATETIME,report_date DATETIME)");
                         SQLiteHelper.NewTable(dbPath, "mid", "(bid varchar,number varchar, pid varchar,ctype varvhar,version varvhar,host varchar,purl varvhar,psize varvhar,pmd5 varvhar,status varvhar,start_date DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')),finish_date DATETIME,desc varvhar)");
                         SQLiteHelper.NewTable(dbPath, "report", "(url varchar,content varchar,gener_date DATETIME,report_date DATETIME)");
-                        SQLiteHelper.NewTable(dbPath, "rokuCustomer", "(ordernum varchar,region varchar,brand varchar,oemmodel varchar,supporturl varchar,supportphone varchar,productiondate varchar,remotetype varchar)");
+                        SQLiteHelper.NewTable(dbPath, "rokuCustomer", "(ordernum varchar,data varchar)");
                         SQLiteHelper.NewTable(dbPath, "whitebalance", "(ordernum varchar,hdmirgain varchar,hdmiggain varchar,hdmibgain varchar,nrgain varchar,nggain varchar,nbgain varchar,lrgain varchar,lggain varchar,lbgain varchar,updatetime DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))");
                         SQLiteHelper.NewTable(dbPath, "dsn", "(ordernum varchar,dsn varchar,updatetime DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))");
                         SQLiteHelper.AddOneLine(dbPath, new object[] { formm.Ordername, formm.Ordernumber, formm.OrderPID, formm.Orderclient, formm.OrderSV, formm.RequireHost, formm.DownloadLink, formm.DownloadSize, formm.packet_md5, "0" });
                         if (formm.midlistnow.rokuCustomer != null)
-                            SQLiteHelper.AddRokuOneLine(dbPath, new object[] { formm.midlistnow.rokuCustomer.ordernum, formm.midlistnow.rokuCustomer.region, formm.midlistnow.rokuCustomer.brand, formm.midlistnow.rokuCustomer.oemmodel, formm.midlistnow.rokuCustomer.supporturl, formm.midlistnow.rokuCustomer.supportphone, formm.midlistnow.rokuCustomer.productiondate, formm.midlistnow.rokuCustomer.remotetype });
+                        {
+                            SQLiteHelper.AddRokuOneLine(dbPath, new object[]
+                            {
+                                formm.midlistnow.rokuCustomer.ordernum,
+                                JsonConvert.SerializeObject(formm.midlistnow.rokuCustomer).ToString()
+                            });
+                        }
+
                         if (formm.whiteBalanceListnow != null)
+                        {
                             if (formm.whiteBalanceListnow.whiteBalanceInfo != null)
+                            {      
                                 if (formm.whiteBalanceListnow.whiteBalanceInfo.isExemption != "1")
                                 {
-                                    SQLiteHelper.AddwbOneLine(dbPath, new object[] { formm.whiteBalanceListnow.whiteBalanceInfo.ordernum,
-                                formm.whiteBalanceListnow.whiteBalanceInfo.hdmirgain, formm.whiteBalanceListnow.whiteBalanceInfo.hdmiggain, formm.whiteBalanceListnow.whiteBalanceInfo.hdmibgain,
-                                formm.whiteBalanceListnow.whiteBalanceInfo.nrgain, formm.whiteBalanceListnow.whiteBalanceInfo.nggain, formm.whiteBalanceListnow.whiteBalanceInfo.nbgain,
-                                formm.whiteBalanceListnow.whiteBalanceInfo.lrgain, formm.whiteBalanceListnow.whiteBalanceInfo.lggain, formm.whiteBalanceListnow.whiteBalanceInfo.lbgain });
+                                    SQLiteHelper.AddwbOneLine(dbPath, new object[]
+                                    {
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.ordernum,
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.hdmirgain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.hdmiggain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.hdmibgain,
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.nrgain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.nggain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.nbgain,
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.lrgain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.lggain, 
+                                        formm.whiteBalanceListnow.whiteBalanceInfo.lbgain }
+                                    );
                                 }
-
+                            }
+                        }
                         if (formm.midlistnow.keytype.ContainsKey("DSN"))
                         {
                             SQLiteHelper.AdddsnOneLine(dbPath, new object[] { formm.Ordername, formm.midlistnow.keytype["DSN"] });
                         }
                     }
                 }
-                
-
             }
             catch (Exception ex)
             {
@@ -267,6 +284,7 @@ namespace MOKA_Factory_Tools
                 GC.Collect();
                 return;
             }
+
             string keyinfo = "";
             string downloadMD5 = GetMD5.GetMD5HashFromFile(filenamea);
             if (downloadMD5 == formm.packet_md5)
@@ -316,20 +334,19 @@ namespace MOKA_Factory_Tools
                                                 return;
                                             }
                                             break;
-                                        }
-
-                                                                    
+                                        }                                                                    
                                 }
                                 index++;
                             }
                         }
                     }
+
                     formm.skinLabel1.Text = LResource.ParseKeys;
                     formm.skinLabel1.Text = LResource.InsertKeystoDB;
                     if (formm.typeNow == 0)
                     {
                         MessageBox.Show("合成的Key类型有:" + keyinfo);
-                     }
+                    }
                     if (InsertKeys(dbPath, keyDatas))
                     {
                         SQLiteHelper.UpdateStatus(dbPath, "1");
@@ -347,8 +364,7 @@ namespace MOKA_Factory_Tools
                     GC.Collect();
                     return;
                 }                
-            }
-                
+            }                
             else
             {
                 SQLiteHelper.UpdateStatus(dbPath, "0");
@@ -356,6 +372,7 @@ namespace MOKA_Factory_Tools
                 CommonMethod.ReportErrormsg("Key package MD5 checking fail", "MD5 checking error targetMD5:" + formm.packet_md5 + "\r\ndownload file MD5:" + downloadMD5, formm.errorDBNow);
                 Log.WriteErrorLog("\r\nMD5 checking error targetMD5:" + formm.packet_md5 + "\r\ndownload file MD5:" + downloadMD5);
             }
+
             while (true)
             {
                 /*

+ 24 - 7
FactoryTool_CShare/Views/Main.cs

@@ -302,24 +302,40 @@ namespace MOKA_Factory_Tools
                                                 SQLiteHelper.NewTable(dbPath, "keys", "(sn varchar,keys varvhar,copy_date DATETIME,report_date DATETIME)");
                                                 SQLiteHelper.NewTable(dbPath, "mid", "(bid varchar,number varchar, pid varchar,ctype varvhar,version varvhar,host varchar,purl varvhar,psize varvhar,pmd5 varvhar,status varvhar,start_date DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')),finish_date DATETIME,desc varvhar)");
                                                 SQLiteHelper.NewTable(dbPath, "report", "(url varchar,content varchar,gener_date DATETIME,report_date DATETIME)");
-                                                SQLiteHelper.NewTable(dbPath, "rokuCustomer", "(ordernum varchar,region varchar,brand varchar,oemmodel varchar,supporturl varchar,supportphone varchar,productiondate varchar,remotetype varchar)");
+                                                SQLiteHelper.NewTable(dbPath, "rokuCustomer", "(ordernum varchar, data varchar)");
                                                 SQLiteHelper.NewTable(dbPath, "whitebalance", "(ordernum varchar,hdmirgain varchar,hdmiggain varchar,hdmibgain varchar,nrgain varchar,nggain varchar,nbgain varchar,lrgain varchar,lggain varchar,lbgain varchar,updatetime DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))");
                                                 SQLiteHelper.NewTable(dbPath, "dsn", "(ordernum varchar,dsn varchar,updatetime DATETIME DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))");
                                                 SQLiteHelper.AddOneLine(dbPath, new object[] { midAddress1.order, midAddress1.number, midAddress1.pid, midAddress1.ctype, midAddress1.version, midList1.host, midAddress1.purl, midAddress1.psize, midAddress1.pmd5, "1" });
                                                 if (midList1.rokuCustomer != null)
-                                                    SQLiteHelper.AddRokuOneLine(dbPath, new object[] { midList1.rokuCustomer.ordernum, midList1.rokuCustomer.region, midList1.rokuCustomer.brand, midList1.rokuCustomer.oemmodel, midList1.rokuCustomer.supporturl, midList1.rokuCustomer.supportphone, midList1.rokuCustomer.productiondate, midList1.rokuCustomer.remotetype });
+                                                {
+                                                    SQLiteHelper.AddRokuOneLine(dbPath, new object[]{
+                                                            midList1.rokuCustomer.ordernum,
+                                                            JsonConvert.SerializeObject(midList1.rokuCustomer).ToString()
+                                                    });
+                                                }
+
                                                 if (WhiteBalanceListNow != null)
                                                     if (WhiteBalanceListNow.whiteBalanceInfo != null)
-                                                        SQLiteHelper.AddwbOneLine(dbPath, new object[] { WhiteBalanceListNow.whiteBalanceInfo.ordernum,
-                                                        WhiteBalanceListNow.whiteBalanceInfo.hdmirgain, WhiteBalanceListNow.whiteBalanceInfo.hdmiggain, WhiteBalanceListNow.whiteBalanceInfo.hdmibgain,
-                                                        WhiteBalanceListNow.whiteBalanceInfo.nrgain, WhiteBalanceListNow.whiteBalanceInfo.nggain, WhiteBalanceListNow.whiteBalanceInfo.nbgain,
-                                                        WhiteBalanceListNow.whiteBalanceInfo.lrgain, WhiteBalanceListNow.whiteBalanceInfo.lggain, WhiteBalanceListNow.whiteBalanceInfo.lbgain });
+                                                        SQLiteHelper.AddwbOneLine(dbPath, new object[] { 
+                                                            WhiteBalanceListNow.whiteBalanceInfo.ordernum,
+                                                            WhiteBalanceListNow.whiteBalanceInfo.hdmirgain,
+                                                            WhiteBalanceListNow.whiteBalanceInfo.hdmiggain, 
+                                                            WhiteBalanceListNow.whiteBalanceInfo.hdmibgain,
+                                                            WhiteBalanceListNow.whiteBalanceInfo.nrgain, 
+                                                            WhiteBalanceListNow.whiteBalanceInfo.nggain,
+                                                            WhiteBalanceListNow.whiteBalanceInfo.nbgain,
+                                                            WhiteBalanceListNow.whiteBalanceInfo.lrgain, 
+                                                            WhiteBalanceListNow.whiteBalanceInfo.lggain, 
+                                                            WhiteBalanceListNow.whiteBalanceInfo.lbgain 
+                                                        });
+
                                                 if (midList1.keytype.ContainsKey("DSN"))
                                                 {
                                                     SQLiteHelper.AdddsnOneLine(dbPath, new object[] { midAddress1.order, midList1.keytype["DSN"] });
                                                 }
                                                 SQLiteHelper.UpdateTime(dbPath, midAddress1.order);
                                             }
+
                                             if (File.Exists(dbPath))
                                             {
                                                 List<object[]> keyDatas = new List<object[]>();
@@ -338,6 +354,7 @@ namespace MOKA_Factory_Tools
                                                 }
                                                 SQLiteHelper.InsertKeys(dbPath, keyDatas);
                                             }
+
                                             try
                                             {
                                                 if (LocalDB == null)
@@ -371,7 +388,6 @@ namespace MOKA_Factory_Tools
                                                 part1.Add(intPtr, (Point)new Size(operationPanel1.Right, operationPanel1.Top));
                                                 formlocationmsg.Add(part1);
                                                 operationPanel1.Show();
-
                                             }
                                             catch (Exception ex)
                                             {
@@ -396,6 +412,7 @@ namespace MOKA_Factory_Tools
                                         GC.Collect(gid);
                                     }
                                 }
+
                                 if (File.Exists(dbPath))
                                 {
                                     if (LocalDB == null)

+ 67 - 52
FactoryTool_CShare/Views/OperationPanel.cs

@@ -18,6 +18,7 @@ using System.Linq;
 using System.Text.RegularExpressions;
 using System.Diagnostics;
 using MOKA_Factory_Tools.BLL;
+using Newtonsoft.Json;
 
 namespace MOKA_Factory_Tools
 {
@@ -4406,90 +4407,98 @@ namespace MOKA_Factory_Tools
                     goto end;
                 }
 
-                string phone = midListNow.rokuCustomer.supportphone;
-                Log.WriteInfoLog("Write Roku phone...");
-                if (SerialCMD.SetROKUSupportPhone(TVPort, Encoding.ASCII.GetBytes(phone), out result, out data, out error, SerailDelay))
+                if ( midListNow.rokuCustomer.rokuData != null && midListNow.rokuCustomer.rokuData.Count != 0 )
                 {
-                    Log.WriteInfoLog("Check Roku phone...");
-                    if (SerialCMD.CheckROKUSupportPhone(TVPort, out result, out data, out error, SerailDelay))
+                    foreach (var item in midListNow.rokuCustomer.rokuData )
                     {
-                        Log.WriteInfoLog("Read Roku phone...");
-                        if (SerialCMD.GetROKUSupportPhone(TVPort, out result, out data, out error, SerailDelay))
+                        Log.WriteInfoLog(string.Format("{0} to be write", item.name));
+
+                        string phone = item.supportphone;
+                        Log.WriteInfoLog("Write Roku phone...");
+                        if (SerialCMD.SetROKUSupportPhone(TVPort, Encoding.ASCII.GetBytes(phone), out result, out data, out error, SerailDelay))
                         {
-                            if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(phone)))
+                            Log.WriteInfoLog("Check Roku phone...");
+                            if (SerialCMD.CheckROKUSupportPhone(TVPort, out result, out data, out error, SerailDelay))
                             {
-                                Log.WriteInfoLog("ROKU phone 写入成功:" + Encoding.ASCII.GetString(data));
+                                Log.WriteInfoLog("Read Roku phone...");
+                                if (SerialCMD.GetROKUSupportPhone(TVPort, out result, out data, out error, SerailDelay))
+                                {
+                                    if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(phone)))
+                                    {
+                                        Log.WriteInfoLog("ROKU phone 写入成功:" + Encoding.ASCII.GetString(data));
+                                    }
+                                    else
+                                    {
+                                        ErrMsg = string.Format("{0}  Contrast ROKU phone fail!", SN);
+                                        Log.WriteErrorLog(ErrMsg);
+                                        goto end;
+                                    }
+                                }
+                                else
+                                {
+                                    ErrMsg = string.Format("{0}  Read ROKU phone fail!", SN);
+                                    Log.WriteErrorLog(ErrMsg);
+                                    goto end;
+                                }
                             }
                             else
                             {
-                                ErrMsg = string.Format("{0}  Contrast ROKU phone fail!", SN);
+                                ErrMsg = string.Format("{0}  Check ROKU phone fail!", SN);
                                 Log.WriteErrorLog(ErrMsg);
                                 goto end;
                             }
                         }
                         else
                         {
-                            ErrMsg = string.Format("{0}  Read ROKU phone fail!", SN);
+                            ErrMsg = string.Format("{0}  Write ROKU phone fail!", SN);
                             Log.WriteErrorLog(ErrMsg);
                             goto end;
                         }
-                    }
-                    else
-                    {
-                        ErrMsg = string.Format("{0}  Check ROKU phone fail!", SN);
-                        Log.WriteErrorLog(ErrMsg);
-                        goto end;
-                    }
-                }
-                else
-                {
-                    ErrMsg = string.Format("{0}  Write ROKU phone fail!", SN);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
 
-                string url = midListNow.rokuCustomer.supporturl;
-                Log.WriteInfoLog("Write Roku url...");
-                if (SerialCMD.SetROKUSupportURL(TVPort, Encoding.ASCII.GetBytes(url), out result, out data, out error, SerailDelay))
-                {
-                    Log.WriteInfoLog("Check Roku url...");
-                    if (SerialCMD.CheckROKUSupportURL(TVPort, out result, out data, out error, SerailDelay))
-                    {
-                        Log.WriteInfoLog("Read Roku url...");
-                        if (SerialCMD.GetROKUSupportURL(TVPort, out result, out data, out error, SerailDelay))
+                        string url = item.supporturl;
+                        Log.WriteInfoLog("Write Roku url...");
+                        if (SerialCMD.SetROKUSupportURL(TVPort, Encoding.ASCII.GetBytes(url), out result, out data, out error, SerailDelay))
                         {
-                            if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(url)))
+                            Log.WriteInfoLog("Check Roku url...");
+                            if (SerialCMD.CheckROKUSupportURL(TVPort, out result, out data, out error, SerailDelay))
                             {
-                                Log.WriteInfoLog("ROKU url 写入成功:" + Encoding.ASCII.GetString(data));
+                                Log.WriteInfoLog("Read Roku url...");
+                                if (SerialCMD.GetROKUSupportURL(TVPort, out result, out data, out error, SerailDelay))
+                                {
+                                    if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(url)))
+                                    {
+                                        Log.WriteInfoLog("ROKU url 写入成功:" + Encoding.ASCII.GetString(data));
+                                    }
+                                    else
+                                    {
+                                        ErrMsg = string.Format("{0}  Contrast ROKU url fail!", SN);
+                                        Log.WriteErrorLog(ErrMsg);
+                                        goto end;
+                                    }
+                                }
+                                else
+                                {
+                                    ErrMsg = string.Format("{0}  Read ROKU url fail!", SN);
+                                    Log.WriteErrorLog(ErrMsg);
+                                    goto end;
+                                }
                             }
                             else
                             {
-                                ErrMsg = string.Format("{0}  Contrast ROKU url fail!", SN);
+                                ErrMsg = string.Format("{0}  Check ROKU url fail!", SN);
                                 Log.WriteErrorLog(ErrMsg);
                                 goto end;
                             }
                         }
                         else
                         {
-                            ErrMsg = string.Format("{0}  Read ROKU url fail!", SN);
+                            ErrMsg = string.Format("{0}  Write ROKU url fail!", SN);
                             Log.WriteErrorLog(ErrMsg);
                             goto end;
                         }
                     }
-                    else
-                    {
-                        ErrMsg = string.Format("{0}  Check ROKU url fail!", SN);
-                        Log.WriteErrorLog(ErrMsg);
-                        goto end;
-                    }
                 }
-                else
-                {
-                    ErrMsg = string.Format("{0}  Write ROKU url fail!", SN);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-
+                
                 if (midListNow.rokuCustomer.remotetype.Length > 0 && midListNow.rokuCustomer.remotetype != "null")
                 {
                     byte[] remotetype = new byte[1] { Convert.ToByte(midListNow.rokuCustomer.remotetype) };
@@ -5333,7 +5342,13 @@ namespace MOKA_Factory_Tools
         private void OnBtnOtherView(object sender, EventArgs e)
         {
             if (midListNow.rokuCustomer != null)
-                MessageBox.Show("Roku TV\r\n" + "Brand:" + midListNow.rokuCustomer.brand + "\r\nOEM Model:" + midListNow.rokuCustomer.oemmodel + "\r\nDate:" + midListNow.rokuCustomer.productiondate + "\r\nRegion:" + midListNow.rokuCustomer.region + "\r\nPhone:" + midListNow.rokuCustomer.supportphone + "\r\nUrl:" + midListNow.rokuCustomer.supporturl + "\r\nRemote Type:" + midListNow.rokuCustomer.remotetype, LResource.ProductMsg);
+                MessageBox.Show("Roku TV\r\n" + "Brand:" +
+                    midListNow.rokuCustomer.brand + "\r\nOEM Model:" +
+                    midListNow.rokuCustomer.oemmodel + "\r\nDate:" + 
+                    midListNow.rokuCustomer.productiondate + "\r\nRegion:" +
+                    midListNow.rokuCustomer.region + "\r\nPhone:" +
+                    JsonConvert.SerializeObject(midListNow.rokuCustomer.rokuData).ToString() + "\r\nData:" +
+                    midListNow.rokuCustomer.remotetype, LResource.ProductMsg);
             else
                 MessageBox.Show("null");
         }