using CCWin; using Newtonsoft.Json.Linq; using SufeiUtil; using SXLibrary; using System; using System.Collections; using System.Collections.Generic; using System.Data.SQLite; using System.Drawing; using System.IO; using System.IO.Ports; using System.Text; using System.Threading; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Linq; using System.Text.RegularExpressions; namespace MOKA_Factory_Tools { public partial class OperationPanel : Skin_Color { //白平衡URL MidList midListNow = new MidList(); MidList localmidList = new MidList(); MidAddress MidAddressNow = new MidAddress(); FunctionSetting FunctionSettingNow = new FunctionSetting(); WhiteBalanceList WhiteBalanceListNow = new WhiteBalanceList(); WriteCheck writeCheckNow = new WriteCheck(); ReadCheck readCheckNow = new ReadCheck(); WriteDone writeDoneNow = new WriteDone(); SerialPort TVPort = new SerialPort(); SQLiteConnection localDBNow; SQLiteConnection errorDBNow; KeyInfo keyInfo = new KeyInfo(); FireTVKey fireTVKey = new FireTVKey(); bool preloadNow; string SN; string orderNow; Main mainform; int usingTime = 0; Thread SNTextFocus; bool FocusMark = false; Thread WritekeyThread; string availableCount = "unknow"; //删除界面指针委托 public delegate void DisplayUpdateDelegate(IntPtr intPtr);         //删除界面指针事件         public event DisplayUpdateDelegate DeleteIntptr; //扫描回车触发委托 public delegate void SNKeyDown(IntPtr intPtr);         //扫描回车触发事件         public event SNKeyDown SNKeyDownEven; //自动key提取委托 public delegate void AutoKeyRequireDelegate(IntPtr intPtr, string key, string keytype);         //自动key提取事件         public event AutoKeyRequireDelegate AutoKeyRequire; public OperationPanel(Main form1, SQLiteConnection localDB, SQLiteConnection errorDB, MidAddress midAddress1, FunctionSetting functionSetting, WriteCheck writeCheck1, ReadCheck readCheck1, WriteDone writeDone1, bool preload, MidList midList1,string order) { InitializeComponent(); MidAddressNow = midAddress1; FunctionSettingNow = functionSetting; writeCheckNow = writeCheck1; readCheckNow = readCheck1; writeDoneNow = writeDone1; localDBNow = localDB; errorDBNow = errorDB; preloadNow = preload; midListNow = midList1; orderNow = order; InitPanel(); mainform = form1; this.mainform.MoveEvent += new MoveHandler(SetFormLocation); this.mainform.KeyDownEvent += new KeyDownHandler(SetFocus); if (midListNow.rokuCustomer != null) ProductMsg_Text.Text = "Roku:"; } /// /// 控制界面跟随主界面移动 /// /// /// /// void SetFormLocation(Point XY, ArrayList formlocationmsg,int num) { foreach (Dictionary pairs in formlocationmsg) { if (!this.IsDisposed) { if (pairs.ContainsKey(this.Handle)) { if (formlocationmsg.IndexOf(pairs) >= num && num > 0) { this.Left = XY.X + this.Size.Width * (formlocationmsg.IndexOf(pairs) - num); this.Top = XY.Y+this.Size.Height; } else { this.Left = XY.X + this.Size.Width * formlocationmsg.IndexOf(pairs); this.Top = XY.Y; } break; } } } } /// /// 按指针设置是否聚焦 /// /// /// void SetFocus(ArrayList formlocationmsg, IntPtr intPtr) { bool mark = false; bool mark2 = false; foreach (Dictionary pairs in formlocationmsg) { if (!this.IsDisposed) { if (pairs.ContainsKey(this.Handle) && formlocationmsg.IndexOf(pairs) == 0) { mark2 = true; } if (mark) { if (pairs.ContainsKey(this.Handle)) FocusMark = true; else mark = false; } if (pairs.ContainsKey(intPtr)) { if (formlocationmsg.IndexOf(pairs) == (formlocationmsg.Count - 1)) { if (mark2) FocusMark = true; } mark = true; } } } } /// /// 界面控件初始化 /// public void InitPanel() { COMText.Text = FunctionSettingNow.TVCOM; COMText.BackColor = Color.FromArgb(128, 255, 128); BaudText.Text = FunctionSettingNow.TVBaud; BaudText.BackColor = Color.FromArgb(128, 255, 128); WritePSN.Checked = FunctionSettingNow.BarcodeWrite; if (!writeCheckNow.DIDCheckcheck) SetspecificText(m_checkdid, LResource.Skip, Color.Yellow); if (!writeCheckNow.MacCheckcheck) SetspecificText(m_checkmac, LResource.Skip, Color.Yellow); if (!writeCheckNow.HDCPCheckcheck) SetspecificText(m_checkhdcp, LResource.Skip, Color.Yellow); if (!writeCheckNow.HDCP22Checkcheck) SetspecificText(m_checkhdcp22, LResource.Skip, Color.Yellow); if (!writeCheckNow.WiDiCheckcheck) SetspecificText(m_checkwidi, LResource.Skip, Color.Yellow); if (!writeCheckNow.WidevineCheckcheck) SetspecificText(m_checkwidevine, LResource.Skip, Color.Yellow); if (!writeCheckNow.ESNCheckcheck) SetspecificText(m_checkesn, LResource.Skip, Color.Yellow); if (!writeCheckNow.CI_plusCheckcheck) SetspecificText(m_checkci, LResource.Skip, Color.Yellow); if (!writeCheckNow.AttestationCheckcheck) SetspecificText(m_checkattestation, LResource.Skip, Color.Yellow); if (!writeCheckNow.MGKCheckcheck) SetspecificText(m_checkMGK, LResource.Skip, Color.Yellow); if (!writeCheckNow.FairplayCheckcheck) SetspecificText(m_checkFairplay, LResource.Skip, Color.Yellow); if (!writeCheckNow.ECPCheckcheck) SetspecificText(m_checkECP, LResource.Skip, Color.Yellow); if (!writeCheckNow.WifiMacCheckcheck) SetspecificText(m_checkWifiMac, LResource.Skip, Color.Yellow); if (!writeCheckNow.BTMacCheckcheck) SetspecificText(m_checkBTMac, LResource.Skip, Color.Yellow); if (!writeCheckNow.LEKCheckcheck) SetspecificText(m_checkLEK, LResource.Skip, Color.Yellow); if (!writeCheckNow.PEKCheckcheck) SetspecificText(m_checkPEK, LResource.Skip, Color.Yellow); if (!writeCheckNow.PlayreadyCheckcheck) SetspecificText(m_checkPlayready, LResource.Skip, Color.Yellow); if (!writeCheckNow.HashCheckcheck) SetspecificText(m_checkHash, LResource.Skip, Color.Yellow); if (!writeCheckNow.DSNCheckcheck) SetspecificText(m_checkDSN, LResource.Skip, Color.Yellow); if (!writeCheckNow.YouTubeCheckcheck) SetspecificText(m_checkYouTube, LResource.Skip, Color.Yellow); ///////////////////////////////////////////////////////////////// if (!readCheckNow.PIDReadcheck) SetspecificText(ProjectIDNote, LResource.SkipReadCheck, Color.Yellow); if (!readCheckNow.DIDReadcheck) SetspecificText(m_readdid, LResource.Skip, Color.Yellow); if (!readCheckNow.MacReadcheck) SetspecificText(m_readmac, LResource.Skip, Color.Yellow); if (!readCheckNow.HDCPReadcheck) SetspecificText(m_readhdcp, LResource.Skip, Color.Yellow); if (!readCheckNow.HDCP22Readcheck) SetspecificText(m_readhdcp22, LResource.Skip, Color.Yellow); if (!readCheckNow.WiDiReadcheck) SetspecificText(m_readwidi, LResource.Skip, Color.Yellow); if (!readCheckNow.WidevineReadcheck) SetspecificText(m_readwidevine, LResource.Skip, Color.Yellow); if (!readCheckNow.ESNReadcheck) SetspecificText(m_readesn, LResource.Skip, Color.Yellow); if (!readCheckNow.CI_plusReadcheck) SetspecificText(m_readci, LResource.Skip, Color.Yellow); if (!readCheckNow.AttestationReadcheck) SetspecificText(m_readattestation, LResource.Skip, Color.Yellow); if (!readCheckNow.MGKReadcheck) SetspecificText(m_readMGK, LResource.Skip, Color.Yellow); if (!readCheckNow.FairplayReadcheck) SetspecificText(m_readFairplay, LResource.Skip, Color.Yellow); if (!readCheckNow.ECPReadcheck) SetspecificText(m_readECP, LResource.Skip, Color.Yellow); if (!readCheckNow.WifiMacReadcheck) SetspecificText(m_readWifiMac, LResource.Skip, Color.Yellow); if (!readCheckNow.BTMacReadcheck) SetspecificText(m_readBTMac, LResource.Skip, Color.Yellow); if (!readCheckNow.LEKReadcheck) SetspecificText(m_readLEK, LResource.Skip, Color.Yellow); if (!readCheckNow.PEKReadcheck) SetspecificText(m_readPEK, LResource.Skip, Color.Yellow); if (!readCheckNow.PlayreadyReadcheck) SetspecificText(m_readPlayready, LResource.Skip, Color.Yellow); if (!readCheckNow.HashReadcheck) SetspecificText(m_readHash, LResource.Skip, Color.Yellow); if (!readCheckNow.DSNReadcheck) SetspecificText(m_readDSN, LResource.Skip, Color.Yellow); if (!readCheckNow.SHOPReadcheck) SetspecificText(SHOPNote, LResource.SkipChecking, Color.Yellow); if (!readCheckNow.OSDReadcheck) SetspecificText(OSDNote, LResource.SkipChecking, Color.Yellow); if (!readCheckNow.YouTubeReadcheck) SetspecificText(m_readYouTube, LResource.SkipChecking, Color.Yellow); if (!readCheckNow.EDIDPIDReadcheck) SetspecificText(m_readEDIDPID, LResource.SkipChecking, Color.Yellow); if (!readCheckNow.EDIDModeNameReadcheck) SetspecificText(m_readEDIDName, LResource.SkipChecking, Color.Yellow); ///////////////////////////////////////////////////////////////// if (!writeDoneNow.PIDWrite_YesNo) SetspecificText(ProjectIDNote, LResource.SkipCovering, Color.Yellow); if (!writeDoneNow.ClientTypeCheck_YesNo) SetspecificText(ClientTypeNote, LResource.SkipChecking, Color.Yellow); if (!writeDoneNow.SoftwareVersionCheck_YesNo) SetspecificText(SoftwareVersionNote, LResource.SkipChecking, Color.Yellow); if (!writeDoneNow.DIDWrite_YesNo) SetspecificText(m_writedid, LResource.Skip, Color.Yellow); if (!writeDoneNow.MacWrite_YesNo) SetspecificText(m_writemac, LResource.Skip, Color.Yellow); if (!writeDoneNow.HDCPWrite_YesNo) SetspecificText(m_writehdcp, LResource.Skip, Color.Yellow); if (!writeDoneNow.HDCP22Write_YesNo) SetspecificText(m_writehdcp22, LResource.Skip, Color.Yellow); if (!writeDoneNow.WiDiWrite_YesNo) SetspecificText(m_writewidi, LResource.Skip, Color.Yellow); if (!writeDoneNow.WidevineWrite_YesNo) SetspecificText(m_writewidevine, LResource.Skip, Color.Yellow); if (!writeDoneNow.ESNWrite_YesNo) SetspecificText(m_writeesn, LResource.Skip, Color.Yellow); if (!writeDoneNow.CI_plusWrite_YesNo) SetspecificText(m_writeci, LResource.Skip, Color.Yellow); if (!writeDoneNow.AttestationWrite_YesNo) SetspecificText(m_writeattestation, LResource.Skip, Color.Yellow); if (!writeDoneNow.MGKWrite_YesNo) SetspecificText(m_writeMGK, LResource.Skip, Color.Yellow); if (!writeDoneNow.FairplayWrite_YesNo) SetspecificText(m_writeFairplay, LResource.Skip, Color.Yellow); if (!writeDoneNow.ECPWrite_YesNo) SetspecificText(m_writeECP, LResource.Skip, Color.Yellow); if (!writeDoneNow.WifiMacWrite_YesNo) SetspecificText(m_writeWifiMac, LResource.Skip, Color.Yellow); if (!writeDoneNow.BTMacWrite_YesNo) SetspecificText(m_writeBTMac, LResource.Skip, Color.Yellow); if (!writeDoneNow.LEKWrite_YesNo) SetspecificText(m_writeLEK, LResource.Skip, Color.Yellow); if (!writeDoneNow.PEKWrite_YesNo) SetspecificText(m_writePEK, LResource.Skip, Color.Yellow); if (!writeDoneNow.PlayreadyWrite_YesNo) SetspecificText(m_writePlayready, LResource.Skip, Color.Yellow); if (!writeDoneNow.HashWrite_YesNo) SetspecificText(m_writeHash, LResource.Skip, Color.Yellow); if (!writeDoneNow.DSNWrite_YesNo) SetspecificText(m_writeDSN, LResource.Skip, Color.Yellow); if (!writeDoneNow.YouTubeWrite_YesNo) SetspecificText(m_writeYouTube, LResource.Skip, Color.Yellow); if (!writeDoneNow.EDIDPIDWrite_YesNo) SetspecificText(m_writeEDIDPID, LResource.Skip, Color.Yellow); if (!writeDoneNow.EDIDModeNameWrite_YesNo) SetspecificText(m_writeEDIDName, LResource.Skip, Color.Yellow); if (FunctionSettingNow.WriteChannel) ChannelText.Text = FunctionSettingNow.ChannelList; else { ChannelText.Text = LResource.Default; ChannelText.BackColor = Color.Yellow; } if (FunctionSettingNow.WriteOSD) OSDText.Text = FunctionSettingNow.OSDList; else { OSDText.Text = LResource.Default; OSDText.BackColor = Color.Yellow; } if (FunctionSettingNow.WriteSHOP) SHOPText.Text = FunctionSettingNow.SHOPList; else { SHOPText.Text = LResource.Default; SHOPText.BackColor = Color.Yellow; } if(midListNow.host!= "LocalPC") { if((!FunctionSettingNow.WriteWB)&&(!writeDoneNow.AutoWhiteBalance)) { WBPathText.Text = LResource.SkipAutoWB; WBPathText.BackColor = Color.Yellow; } else { switch (midListNow.whiteType)//订单白平衡预置状态 { case "0"://旧订单,默认值 { if (CommonMethod.GetWhiteBalanceInfo(TestMode.getWhiteBalanceInfoUrl, orderNow, TestMode.MAC, errorDBNow, out WhiteBalanceListNow)) { if (WhiteBalanceListNow.whiteBalanceInfo != null) { if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "0") { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveWBfromServer, LResource.Error, messButton); if (dr == DialogResult.Yes) { FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } else { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { MessageBox.Show(LResource.FindWBfromServer, "", MessageBoxButtons.OK, MessageBoxIcon.Warning); FunctionSettingNow.WriteWB = true; FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } } else if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "1") { WBPathText.Text = LResource.WBExemptOrder; WBPathText.BackColor = Color.Yellow; } } else { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveNoWBfromServer, LResource.Error, messButton); if (dr == DialogResult.OK) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; FunctionSettingNow.WriteWB = false; } } } else { MessageBox.Show(LResource.GetWBInfoFail); if (FunctionSettingNow.WriteWB) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; } } break; } case "1"://未预置或预置LR数据 { if (CommonMethod.GetWhiteBalanceInfo(TestMode.getWhiteBalanceInfoUrl, orderNow, TestMode.MAC, errorDBNow, out WhiteBalanceListNow)) { if (WhiteBalanceListNow.whiteBalanceInfo != null) { if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "0")//0是正常白平衡绑定订单,1是白平衡豁免订单 { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveWBfromServer, LResource.Error, messButton); if (dr == DialogResult.Yes) { FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } else { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { MessageBox.Show(LResource.FindWBfromServer, "", MessageBoxButtons.OK, MessageBoxIcon.Warning); FunctionSettingNow.WriteWB = true; FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } } else if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "1") { WBPathText.Text = LResource.WBExemptOrder; WBPathText.BackColor = Color.Yellow; } } else { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveNoWBfromServer, LResource.Error, messButton); if (dr == DialogResult.OK) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; FunctionSettingNow.WriteWB = false; } } } else { if (FunctionSettingNow.WriteWB) { MessageBox.Show(LResource.GetWBInfoFail); WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } else { MessageBox.Show(LResource.GetWBInfoFail2); this.Close(); return; } } break; } case "2"://已预置PR数据 { if (CommonMethod.GetWhiteBalanceInfo(TestMode.getWhiteBalanceInfoUrl, orderNow, TestMode.MAC, errorDBNow, out WhiteBalanceListNow)) { if (WhiteBalanceListNow.whiteBalanceInfo != null) { if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "0") { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveWBfromServer, LResource.Error, messButton); if (dr == DialogResult.Yes) { FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } else { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { MessageBox.Show(LResource.FindWBfromServer, "", MessageBoxButtons.OK, MessageBoxIcon.Warning); FunctionSettingNow.WriteWB = true; FunctionSettingNow.NormalRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmirgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmiggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.hdmibgain) + 256) }; FunctionSettingNow.CoolRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.lbgain) + 256) }; FunctionSettingNow.WarmRGB = new byte[3] { (byte)Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nrgain), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nggain) + 256), (byte)(Convert.ToDouble(WhiteBalanceListNow.whiteBalanceInfo.nbgain) + 256) }; WBPathText.Text = LResource.LoadFromServer; } } else if (WhiteBalanceListNow.whiteBalanceInfo.isExemption == "1") { WBPathText.Text = LResource.WBExemptOrder; WBPathText.BackColor = Color.Yellow; } } else { if (FunctionSettingNow.WriteWB) { MessageBoxButtons messButton = MessageBoxButtons.YesNo; DialogResult dr = MessageBox.Show(LResource.HaveNoWBfromServer, LResource.Error, messButton); if (dr == DialogResult.OK) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; FunctionSettingNow.WriteWB = false; } } } else { MessageBox.Show(LResource.GetWBInfoFail); if (FunctionSettingNow.WriteWB) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; } } break; } case "3"://已预置客户指定数据 { if (FunctionSettingNow.WriteWB) { MessageBox.Show(LResource.PreloadCustomerWB); this.Close(); return; } break; } } } } else { if (FunctionSettingNow.WriteWB) { WBPathText.Text = Path.GetFileName(FunctionSettingNow.WBPath); } else { WBPathText.Text = LResource.WBNull; WBPathText.BackColor = Color.Yellow; } } try { TVPort.PortName= FunctionSettingNow.TVCOM; TVPort.BaudRate = Convert.ToInt32(FunctionSettingNow.TVBaud); TVPort.WriteBufferSize = 20480; TVPort.ReadBufferSize = 20480; TVPort.Open(); } catch(Exception ex) { MessageBox.Show(ex.Message); this.Close(); } this.Text = FunctionSettingNow.TVCOM; } private void OperationPanel_Load(object sender, EventArgs e) { if (midListNow.host == "LocalPC") { OrderText.Text = orderNow; ClientTypeText.Text = midListNow.clienttype; SVText.Text = midListNow.version; ProjectIDText.Text = midListNow.projectid; GetLocalKeysCount(); } else if (!preloadNow) { OrderText.Text = orderNow; ClientTypeText.Text = midListNow.clienttype; SVText.Text = midListNow.version; ProjectIDText.Text = midListNow.projectid; UpdateKeys(midListNow.keytype,false); } else { OrderText.Text = MidAddressNow.order; ClientTypeText.Text = MidAddressNow.ctype; SVText.Text = MidAddressNow.version; ProjectIDText.Text = MidAddressNow.pid; } SNText.Text = ""; SNTextFocus = new Thread(TextBoxFocus); SNTextFocus.Start(); SNText.Focus(); } /// /// 强制聚焦扫描框 /// public void TextBoxFocus() { while(true) { if(FocusMark) { if (this.CaptionBackColorTop != Color.Yellow || this.CaptionBackColorBottom != Color.Orange) { if(this.InvokeRequired) { this.BeginInvoke(new Action(() => { this.CaptionBackColorTop = Color.Yellow; this.CaptionBackColorBottom = Color.Orange; this.Refresh(); })); } } if (SNText.InvokeRequired) { SNText.BeginInvoke(new Action(() => { if (!SNText.Focus()) { SNText.Focus(); } })); } } Thread.Sleep(500); } } private void OperationPanel_FormClosing(object sender, FormClosingEventArgs e) { if(TVPort.IsOpen) TVPort.Close(); DeleteIntptr(this.Handle); GC.Collect(); } /// /// 扫描触发抄写,以回车终结触发 /// /// /// private void SNText_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode== Keys.Enter) { keyInfo = new KeyInfo(); FocusMark = false; SNKeyDownEven(this.Handle); SetInitialStatus(); SN = SNText.Text; SNText.Enabled = false; if (FunctionSettingNow.BarcodeLimit) { if (SN.Length != FunctionSettingNow.BarcodeLength || !SN.StartsWith(FunctionSettingNow.BarcodeKeyword)) { MessageBox.Show(LResource.WrongBarcode+"\r\n"+SN); SNText.Enabled = true; SNText.Text = ""; return; } if (!FunctionSettingNow.BarcodeWrite && (midListNow.keytype != null && midListNow.keytype.ContainsKey("DSN")) ) { // 如果不是全大写字母+数字,返回; Regex r = new Regex(@"^[A-Z0-9]+$"); if (!r.Match(SN).Success) { MessageBox.Show(LResource.WrongBarcode + "\r\n" + SN); SNText.Enabled = true; SNText.Text = ""; return; } } } // 是否启用G客户防呆措施; if (FunctionSettingNow.UsingGFoolProofing) { StringBuilder strValue = new StringBuilder(256); // 获取上一次的SN号; CommonMethod.GetProfileString("MOKAFactoryTools", "LastGSN", "", strValue, 256); if (strValue.ToString().Equals(SN, StringComparison.OrdinalIgnoreCase)) { // 上次失败次数; int lastCount = 0; CommonMethod.GetProfileString("MOKAFactoryTools", "GFailCount", "0", strValue, 256); int.TryParse(strValue.ToString(), out lastCount); if (lastCount >= FunctionSettingNow.GFoolProofingCount) { MessageBox.Show(LResource.DefectiveProducts + "\r\n" + SN); SNText.Enabled = true; SNText.Text = ""; return; } } else { CommonMethod.WriteProfileString("MOKAFactoryTools", "LastGSN", SN); // 重置失败次数为0; CommonMethod.WriteProfileString("MOKAFactoryTools", "GFailCount", "0"); } } if (preloadNow) { bool copydone = false; string keyjson = SQLiteHelper.Getkeys(localDBNow, SNText.Text.Trim(), out copydone); if (FunctionSettingNow.NoDoublewrite && copydone) { MessageBox.Show(LResource.FindcopiedSN + SN); SNText.Enabled = true; SNText.Focus(); } else if (keyjson.Length > 0) { JObject jObject = JObject.Parse(keyjson); keyInfo.DID = jObject["did"].Value(); keyInfo.Mac = jObject["mac"].Value(); keyInfo.HDCP = jObject["hdcp"].Value(); keyInfo.HDCP22 = jObject["hdcp22"].Value(); keyInfo.WiDi = jObject["widi"].Value(); keyInfo.Widevine = jObject["widevine"].Value(); keyInfo.ESN = jObject["esn"].Value(); keyInfo.CI_plus = jObject["cikey"].Value(); keyInfo.MGK = jObject["mgk"].Value(); keyInfo.Attestation = jObject["attestation"].Value(); keyInfo.Fairplay = jObject["fairplay"].Value(); keyInfo.ECP = jObject["ecp"].Value(); keyInfo.WiFi_MAC = jObject["wifimac"].Value(); keyInfo.BT_MAC = jObject["btmac"].Value(); keyInfo.LEK = jObject["lek"].Value(); keyInfo.PEK = jObject["pek"].Value(); keyInfo.Playready = jObject["playready"].Value(); keyInfo.Hashkey = jObject["hash"].Value(); keyInfo.YouTube_KEY = jObject["youtubekey"].Value(); WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip); if (WriteDID.Checked) Log.WriteGetKeyLog("\r\nLocal DB DeviceID=" + keyInfo.DID); WriteMac.Checked = (keyInfo.Mac.Length > 0 && m_writemac.Text != LResource.Skip); if (WriteMac.Checked) Log.WriteGetKeyLog("\r\nLocal DB Mac=" + keyInfo.Mac); WriteHDCP.Checked = (keyInfo.HDCP.Length > 0 && m_writehdcp.Text != LResource.Skip); if (WriteHDCP.Checked) Log.WriteGetKeyLog("\r\nLocal DB HDCP=" + keyInfo.HDCP); WriteHDCP22.Checked = (keyInfo.HDCP22.Length > 0 && m_writehdcp22.Text != LResource.Skip); if (WriteHDCP22.Checked) Log.WriteGetKeyLog("\r\nLocal DB HDCP22=" + keyInfo.HDCP22); WriteWiDi.Checked = (keyInfo.WiDi.Length > 0 && m_writewidi.Text != LResource.Skip); if (WriteWiDi.Checked) Log.WriteGetKeyLog("\r\nLocal DB WiDi=" + keyInfo.WiDi); WriteWidevine.Checked = (keyInfo.Widevine.Length > 0 && m_writewidevine.Text != LResource.Skip); if (WriteWidevine.Checked) Log.WriteGetKeyLog("\r\nLocal DB Widevine=" + keyInfo.Widevine); WriteESN.Checked = (keyInfo.ESN.Length > 0 && m_writeesn.Text != LResource.Skip); if (WriteESN.Checked) Log.WriteGetKeyLog("\r\nLocal DB ESN=" + keyInfo.ESN); WriteCiplus.Checked = (keyInfo.CI_plus.Length > 0 && m_writeci.Text != LResource.Skip); if (WriteCiplus.Checked) Log.WriteGetKeyLog("\r\nLocal DB Ci=" + keyInfo.CI_plus); WriteMGK.Checked = (keyInfo.MGK.Length > 0 && m_writeMGK.Text != LResource.Skip); if (WriteMGK.Checked) Log.WriteGetKeyLog("\r\nLocal DB MGK=" + keyInfo.MGK); WriteAttestation.Checked = (keyInfo.Attestation.Length > 0 && m_writeattestation.Text != LResource.Skip); if (WriteAttestation.Checked) Log.WriteGetKeyLog("\r\nLocal DB Attestation=" + keyInfo.Attestation); WriteFairplay.Checked = (keyInfo.Fairplay.Length > 0 && m_writeFairplay.Text != LResource.Skip); if (WriteFairplay.Checked) Log.WriteGetKeyLog("\r\nLocal DB Fairplay=" + keyInfo.Fairplay); WriteECP.Checked = (keyInfo.ECP.Length > 0 && m_writeECP.Text != LResource.Skip); if (WriteECP.Checked) Log.WriteGetKeyLog("\r\nLocal DB ECP=" + keyInfo.ECP); WriteWifiMac.Checked = (keyInfo.WiFi_MAC.Length > 0 && m_writeWifiMac.Text != LResource.Skip); if (WriteWifiMac.Checked) Log.WriteGetKeyLog("\r\nLocal DB WifiMac=" + keyInfo.WiFi_MAC); WriteBTMac.Checked = (keyInfo.BT_MAC.Length > 0 && m_writeBTMac.Text != LResource.Skip); if (WriteBTMac.Checked) Log.WriteGetKeyLog("\r\nLocal DB BTMac=" + keyInfo.BT_MAC); WriteLEK.Checked = (keyInfo.LEK.Length > 0 && m_writeLEK.Text != LResource.Skip); if (WriteLEK.Checked) Log.WriteGetKeyLog("\r\nLocal DB LEK=" + keyInfo.LEK); WritePEK.Checked = (keyInfo.PEK.Length > 0 && m_writePEK.Text != LResource.Skip); if (WritePEK.Checked) Log.WriteGetKeyLog("\r\nLocal DB PEK=" + keyInfo.PEK); WritePlayready.Checked = (keyInfo.Playready.Length > 0 && m_writePlayready.Text != LResource.Skip); if (WritePlayready.Checked) Log.WriteGetKeyLog("\r\nLocal DB Playready=" + keyInfo.Playready); WriteHash.Checked = (keyInfo.Hashkey.Length > 0 && m_writeHash.Text != LResource.Skip); if (WriteHash.Checked) Log.WriteGetKeyLog("\r\nLocal DB Hashkey=" + keyInfo.Hashkey); WriteYouTube.Checked = (keyInfo.YouTube_KEY.Length > 0 && m_writeYouTube.Text != LResource.Skip); if (WriteYouTube.Checked) Log.WriteGetKeyLog("\r\nLocal DB YouTube_KEY=" + keyInfo.YouTube_KEY); WriteDSN.Checked = midListNow.keytype == null ? false : midListNow.keytype.ContainsKey("DSN") && m_writeDSN.Text != LResource.Skip; WritePSN.Checked = FunctionSettingNow.BarcodeWrite; timer1.Start(); Thread t = new Thread(Writekey); t.Start(); } else { MessageBox.Show(LResource.FindNullSnInDB + SN); SNText.Enabled = true; SNText.Focus(); } } else { Onlinemode(); } SNText.Text = ""; } } /// /// 设置成功状态显示 /// /// public void SetsuccessStatus(Label label) { if (label.InvokeRequired && label.Text != LResource.Skip) { //BeginInvoke(new Action(x => { label.Text = x.ToString(); }), 参数); label.BeginInvoke(new Action(() => { label.Text = "OK"; label.BackColor = Color.FromArgb(128, 255, 128); })); } } /// /// 设置失败状态显示 /// /// public void SetfailStatus(Label label) { if (label.InvokeRequired) { label.BeginInvoke(new Action(() => { label.Text = "NG"; label.BackColor = Color.Red; })); } } /// /// 设置扫描框为输入状态 /// /// public void EnableText(TextBox textBox) { if (textBox.InvokeRequired) { textBox.BeginInvoke(new Action(() => { textBox.Enabled = true; textBox.Focus(); })); } else { textBox.Enabled = true; textBox.Focus(); } } /// /// 设置按钮为可点击状态 /// /// public void EnableButton(Button button) { if (button.InvokeRequired) { button.BeginInvoke(new Action(() => { button.Enabled = true; })); } else button.Enabled = true; } /// /// 设置特殊的文本和颜色 /// /// 标签控件 /// 需要显示的文本 /// 需要设置的控件背景颜色 public void SetspecificText(Label label,string str, Color color) { if (label.InvokeRequired) { BeginInvoke(new Action(x => { label.Text = x.ToString(); }), str); label.BeginInvoke(new Action(() => { label.BackColor = color; })); } else { label.Text = str; label.BackColor = color; } } /// /// 设置标签控件颜色 /// /// 标签控件对象 /// 需要设置的标签背景颜色 public void SetcolorStatus(Label label, Color color) { if (label.InvokeRequired) { label.BeginInvoke(new Action(() => { label.BackColor = color; })); } } /// /// 跨线程关闭窗口 /// /// /// public void Closeform() { if (this.InvokeRequired) { this.BeginInvoke(new Action(() => { this.Close(); })); } } /// /// 设置标签控件文本 /// /// 标签控件对象 /// 需要设置的标签文本 public void SetTextStatus(Label label, string txt) { if (label.InvokeRequired) { label.BeginInvoke(new Action(() => { label.Text = txt; })); } else label.Text = txt; } /// /// 线程内&跨线程设置key数量显示控件 /// /// 数量提示控件 /// 数量值 /// 状态,0为正常,1为获取失败,2为数量不足 public void SetKeyCountStatus(Label label, string str, int status) { if (label.InvokeRequired) { BeginInvoke(new Action(x => { label.Text = x.ToString(); }), str); switch (status) { case 0: label.BeginInvoke(new Action(() => { label.ForeColor = Color.Green; })); break; case 1: label.BeginInvoke(new Action(() => { label.BackColor = Color.Red; })); break; case 2: label.BeginInvoke(new Action(() => { label.ForeColor = Color.Red; })); break; } } else { label.Text = str; switch (status) { case 0: label.ForeColor = Color.Green;; break; case 1: label.BackColor = Color.Red; break; case 2: label.ForeColor = Color.Red; break; } } } /// /// 线程内&跨线程设置checkbox控件的checked值 /// /// checkbox控件 /// 需要设置的布尔状态 public void SetCheckboxStatus(CheckBox checkBox,bool status) { if (checkBox.InvokeRequired) { BeginInvoke(new Action(x => { checkBox.Checked = x; }), status); } else { checkBox.Checked = status; } } /// /// 重置控件状态,skip除外 /// public void SetInitialStatus() { this.CaptionBackColorTop = Color.RoyalBlue; this.CaptionBackColorBottom = Color.Cyan; this.Refresh(); if (m_writeci.Text!=LResource.Skip) { m_writeci.Text = "Null"; m_writeci.BackColor = Color.Transparent; } if (m_writemac.Text != LResource.Skip) { m_writemac.Text = "Null"; m_writemac.BackColor = Color.Transparent; } if (m_writedid.Text != LResource.Skip) { m_writedid.Text = "Null"; m_writedid.BackColor = Color.Transparent; } if (m_writeesn.Text != LResource.Skip) { m_writeesn.Text = "Null"; m_writeesn.BackColor = Color.Transparent; } if (m_writewidi.Text != LResource.Skip) { m_writewidi.Text = "Null"; m_writewidi.BackColor = Color.Transparent; } if (m_writewidevine.Text != LResource.Skip) { m_writewidevine.Text = "Null"; m_writewidevine.BackColor = Color.Transparent; } if (m_writehdcp.Text != LResource.Skip) { m_writehdcp.Text = "Null"; m_writehdcp.BackColor = Color.Transparent; } if (m_writehdcp22.Text != LResource.Skip) { m_writehdcp22.Text = "Null"; m_writehdcp22.BackColor = Color.Transparent; } if (m_writeattestation.Text != LResource.Skip) { m_writeattestation.Text = "Null"; m_writeattestation.BackColor = Color.Transparent; } if (m_writeMGK.Text != LResource.Skip) { m_writeMGK.Text = "Null"; m_writeMGK.BackColor = Color.Transparent; } if (m_writeFairplay.Text != LResource.Skip) { m_writeFairplay.Text = "Null"; m_writeFairplay.BackColor = Color.Transparent; } if (m_writeECP.Text != LResource.Skip) { m_writeECP.Text = "Null"; m_writeECP.BackColor = Color.Transparent; } if (m_writeLEK.Text != LResource.Skip) { m_writeLEK.Text = "Null"; m_writeLEK.BackColor = Color.Transparent; } if (m_writePEK.Text != LResource.Skip) { m_writePEK.Text = "Null"; m_writePEK.BackColor = Color.Transparent; } if (m_writeHash.Text != LResource.Skip) { m_writeHash.Text = "Null"; m_writeHash.BackColor = Color.Transparent; } if (m_writeDSN.Text != LResource.Skip) { m_writeDSN.Text = "Null"; m_writeDSN.BackColor = Color.Transparent; } if (m_writeWifiMac.Text != LResource.Skip) { m_writeWifiMac.Text = "Null"; m_writeWifiMac.BackColor = Color.Transparent; } if (m_writeBTMac.Text != LResource.Skip) { m_writeBTMac.Text = "Null"; m_writeBTMac.BackColor = Color.Transparent; } if (m_writeDSN.Text != LResource.Skip) { m_writeDSN.Text = "Null"; m_writeDSN.BackColor = Color.Transparent; } if (m_writePlayready.Text != LResource.Skip) { m_writePlayready.Text = "Null"; m_writePlayready.BackColor = Color.Transparent; } if (m_writeYouTube.Text != LResource.Skip) { m_writeYouTube.Text = "Null"; m_writeYouTube.BackColor = Color.Transparent; } if (m_writePSN.Text != LResource.Skip) { m_writePSN.Text = "Null"; m_writePSN.BackColor = Color.Transparent; } if (m_checkci.Text != LResource.Skip) { m_checkci.Text = "Null"; m_checkci.BackColor = Color.Transparent; } if (m_checkmac.Text != LResource.Skip) { m_checkmac.Text = "Null"; m_checkmac.BackColor = Color.Transparent; } if (m_checkdid.Text != LResource.Skip) { m_checkdid.Text = "Null"; m_checkdid.BackColor = Color.Transparent; } if (m_checkesn.Text != LResource.Skip) { m_checkesn.Text = "Null"; m_checkesn.BackColor = Color.Transparent; } if (m_checkwidi.Text != LResource.Skip) { m_checkwidi.Text = "Null"; m_checkwidi.BackColor = Color.Transparent; } if (m_checkwidevine.Text != LResource.Skip) { m_checkwidevine.Text = "Null"; m_checkwidevine.BackColor = Color.Transparent; } if (m_checkhdcp.Text != LResource.Skip) { m_checkhdcp.Text = "Null"; m_checkhdcp.BackColor = Color.Transparent; } if (m_checkhdcp22.Text != LResource.Skip) { m_checkhdcp22.Text = "Null"; m_checkhdcp22.BackColor = Color.Transparent; } if (m_checkattestation.Text != LResource.Skip) { m_checkattestation.Text = "Null"; m_checkattestation.BackColor = Color.Transparent; } if (m_checkMGK.Text != LResource.Skip) { m_checkMGK.Text = "Null"; m_checkMGK.BackColor = Color.Transparent; } if (m_checkFairplay.Text != LResource.Skip) { m_checkFairplay.Text = "Null"; m_checkFairplay.BackColor = Color.Transparent; } if (m_checkECP.Text != LResource.Skip) { m_checkECP.Text = "Null"; m_checkECP.BackColor = Color.Transparent; } if (m_checkLEK.Text != LResource.Skip) { m_checkLEK.Text = "Null"; m_checkLEK.BackColor = Color.Transparent; } if (m_checkPEK.Text != LResource.Skip) { m_checkPEK.Text = "Null"; m_checkPEK.BackColor = Color.Transparent; } if (m_checkHash.Text != LResource.Skip) { m_checkHash.Text = "Null"; m_checkHash.BackColor = Color.Transparent; } if (m_checkDSN.Text != LResource.Skip) { m_checkDSN.Text = "Null"; m_checkDSN.BackColor = Color.Transparent; } if (m_checkWifiMac.Text != LResource.Skip) { m_checkWifiMac.Text = "Null"; m_checkWifiMac.BackColor = Color.Transparent; } if (m_checkBTMac.Text != LResource.Skip) { m_checkBTMac.Text = "Null"; m_checkBTMac.BackColor = Color.Transparent; } if (m_checkDSN.Text != LResource.Skip) { m_checkDSN.Text = "Null"; m_checkDSN.BackColor = Color.Transparent; } if (m_checkPlayready.Text != LResource.Skip) { m_checkPlayready.Text = "Null"; m_checkPlayready.BackColor = Color.Transparent; } if (m_checkYouTube.Text != LResource.Skip) { m_checkYouTube.Text = "Null"; m_checkYouTube.BackColor = Color.Transparent; } if (m_readci.Text != LResource.Skip) { m_readci.Text = "Null"; m_readci.BackColor = Color.Transparent; } if (m_readmac.Text != LResource.Skip) { m_readmac.Text = "Null"; m_readmac.BackColor = Color.Transparent; } if (m_readdid.Text != LResource.Skip) { m_readdid.Text = "Null"; m_readdid.BackColor = Color.Transparent; } if (m_readesn.Text != LResource.Skip) { m_readesn.Text = "Null"; m_readesn.BackColor = Color.Transparent; } if (m_readwidi.Text != LResource.Skip) { m_readwidi.Text = "Null"; m_readwidi.BackColor = Color.Transparent; } if (m_readwidevine.Text != LResource.Skip) { m_readwidevine.Text = "Null"; m_readwidevine.BackColor = Color.Transparent; } if (m_readhdcp.Text != LResource.Skip) { m_readhdcp.Text = "Null"; m_readhdcp.BackColor = Color.Transparent; } if (m_readhdcp22.Text != LResource.Skip) { m_readhdcp22.Text = "Null"; m_readhdcp22.BackColor = Color.Transparent; } if (m_readattestation.Text != LResource.Skip) { m_readattestation.Text = "Null"; m_readattestation.BackColor = Color.Transparent; } if (m_readMGK.Text != LResource.Skip) { m_readMGK.Text = "Null"; m_readMGK.BackColor = Color.Transparent; } if (m_readFairplay.Text != LResource.Skip) { m_readFairplay.Text = "Null"; m_readFairplay.BackColor = Color.Transparent; } if (m_readECP.Text != LResource.Skip) { m_readECP.Text = "Null"; m_readECP.BackColor = Color.Transparent; } if (m_readLEK.Text != LResource.Skip) { m_readLEK.Text = "Null"; m_readLEK.BackColor = Color.Transparent; } if (m_readPEK.Text != LResource.Skip) { m_readPEK.Text = "Null"; m_readPEK.BackColor = Color.Transparent; } if (m_readHash.Text != LResource.Skip) { m_readHash.Text = "Null"; m_readHash.BackColor = Color.Transparent; } if (m_readDSN.Text != LResource.Skip) { m_readDSN.Text = "Null"; m_readDSN.BackColor = Color.Transparent; } if (m_readWifiMac.Text != LResource.Skip) { m_readWifiMac.Text = "Null"; m_readWifiMac.BackColor = Color.Transparent; } if (m_readBTMac.Text != LResource.Skip) { m_readBTMac.Text = "Null"; m_readBTMac.BackColor = Color.Transparent; } if (m_readDSN.Text != LResource.Skip) { m_readDSN.Text = "Null"; m_readDSN.BackColor = Color.Transparent; } if (m_readPlayready.Text != LResource.Skip) { m_readPlayready.Text = "Null"; m_readPlayready.BackColor = Color.Transparent; } if (m_readYouTube.Text != LResource.Skip) { m_readYouTube.Text = "Null"; m_readYouTube.BackColor = Color.Transparent; } if (m_readPSN.Text != LResource.Skip) { m_readPSN.Text = "Null"; m_readPSN.BackColor = Color.Transparent; } ResultStatus.Text = "Wait"; ResultStatus.BackColor = Color.Transparent; SHOPText.BackColor = Color.Transparent; OSDText.BackColor = Color.Transparent; WBPathText.BackColor = Color.Transparent; ProductMsg_Text.BackColor= Color.Transparent; } /// /// 执行抄key等动作 /// public void Writekey() { ArrayList keypath = new ArrayList(); ArrayList keyStream = new ArrayList(); ArrayList keyReader = new ArrayList(); int SerailDelay = FunctionSettingNow.SerailDelay; Log.WriteInfoLog(SN + " start testing"); bool TestResult = false; string keycontent = ""; if (SN != null) if (SN.Trim().Length > 0) keycontent += "sn=" + SN + "&"; bool EnterFactoryResult = false; byte[] result; byte[] data; string error; //进工厂 if(!TVPort.IsOpen) { try { TVPort.Open(); } catch(Exception ex) { MessageBox.Show(ex.Message); return; } } for (int i=0;i<=FunctionSettingNow.EnterFactoryRetry;i++) { if(i==0) Log.WriteInfoLog("Enter factory..."); else Log.WriteInfoLog("Retry enter factory "+i.ToString()+" ..."); if (SerialCMD.EnterFactory(TVPort, out result, out data, out error, SerailDelay)) { EnterFactoryResult = true; break; } } if(!EnterFactoryResult) { Log.WriteErrorLog(SN+" Enter factory fail"); MessageBox.Show(LResource.EnterFactoryError); goto end; } //烧录SN if (WritePSN.Checked) { Log.WriteInfoLog("Write PSN"); if (SerialCMD.SetFireTVPSN(TVPort, Encoding.ASCII.GetBytes(SN), out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writePSN); Log.WriteInfoLog("Read PSN"); if (SerialCMD.ReadFireTVPSN(TVPort, out result, out data, out error, SerailDelay)) { if (!Encoding.ASCII.GetString(data).Equals(SN)) { Log.WriteErrorLog("Compare PSN error!\r\n" + SN); MessageBox.Show("Compare PSN error!\r\n" + SN); goto end; } SetsuccessStatus(m_readPSN); } else { SetfailStatus(m_readPSN); Log.WriteErrorLog("Read S/N error!\r\n" + SN); MessageBox.Show("Read S/N error!\r\n" + SN); goto end; } } else { SetfailStatus(m_writePSN); Log.WriteErrorLog("Write S/N error!\r\n" + SN); MessageBox.Show("Write S/N error!\r\n" + SN); goto end; } } // 如果是G客户,要在抄写其他key前时行fsn+psn查重处理; if (WriteDSN.Checked) { if (SN == null) { MessageBox.Show("Please scan to trigger testing"); goto end; } if (SN.Trim().Length == 0) { MessageBox.Show("Please scan to trigger testing"); goto end; } Log.WriteInfoLog("Read FireTV Device Code...\r\n"); if (SerialCMD.GetFireTVDevcieCode(TVPort, out result, out data, out error, SerailDelay)) { string devicecode = Encoding.ASCII.GetString(data); if (devicecode == "N/A") { Log.WriteErrorLog("Device code format error!\r\n" + devicecode); MessageBox.Show(LResource.DeviceCodeFormatError + "\r\n" + devicecode); goto end; } // 先读取psn的值; byte[] result_psn; byte[] data_psn; string error_psn; if (SerialCMD.ReadFireTVPSN(TVPort, out result_psn, out data_psn, out error_psn, SerailDelay)) { string psn = Encoding.ASCII.GetString(data_psn); if (CommonMethod.GetFireTVDsn(midListNow.host, orderNow, Encoding.ASCII.GetString(data), SN, psn, out string dsn, out error_psn, errorDBNow)) { keyInfo.DSN = dsn; if (!CommonMethod.IsNumberAndWord(keyInfo.DSN)) { Log.WriteErrorLog("DSN format error!\r\n" + keyInfo.DSN); MessageBox.Show(LResource.DSNFormatError + "\r\n" + keyInfo.DSN); goto end; } byte[] DSNData = System.Text.Encoding.ASCII.GetBytes(keyInfo.DSN); Log.WriteInfoLog("Write DSN..."); if (SerialCMD.SetFireTVDSN(TVPort, DSNData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeDSN); Log.WriteInfoLog("Check DSN..."); if (writeCheckNow.DSNCheckcheck ? SerialCMD.CheckFireTVDSN(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkDSN); Log.WriteInfoLog("Read DSN..."); if (readCheckNow.DSNReadcheck ? SerialCMD.GetFireTVDSN(TVPort, out result, out data, out error, SerailDelay) : true) { if (SerialInit.BytesCompare_Base64(data, DSNData)) { SetsuccessStatus(m_readDSN); //DSN读取别对成功 } else { Log.WriteErrorLog(SN + " contrast DSN fail"); MessageBox.Show(LResource.ContrastDSNError); goto end; } } else { SetfailStatus(m_readDSN); Log.WriteErrorLog(SN + " read DSN fail"); MessageBox.Show(LResource.ReadDSNError); goto end; } } else { SetfailStatus(m_checkDSN); Log.WriteErrorLog(SN + " check DSN fail"); MessageBox.Show(LResource.CheckDSNError); goto end; } } else { SetfailStatus(m_writeDSN); Log.WriteErrorLog(SN + " Write DSN fail"); MessageBox.Show(LResource.SetDSNError); goto end; } } else { MessageBox.Show(error_psn); goto end; } } else { Log.WriteErrorLog("Failed to read PSN when requesting DSN !\r\n" + devicecode); MessageBox.Show(LResource.ReadPSNError); goto end; } } else { MessageBox.Show(LResource.GetDeviceCodeError); goto end; } } // 如果是要导出ACASID+SN,先判断ACASID是否等于20位长度; if (FunctionSettingNow.ExportSNACASID) { if ( SerialCMD.ReadJapaneseACASID(TVPort, out result, out data, out error, SerailDelay) ) { if (data.Length != 20) { SetfailStatus(m_readACASID); Log.WriteErrorLog("The ACAS ID length doesn't equal 20!\r\n" + data.ToString()); MessageBox.Show(LResource.ACASIDLengthError + "\r\n" + data.ToString()); goto end; } SetsuccessStatus(m_readACASID); } else { SetfailStatus(m_readACASID); Log.WriteErrorLog("Read ACAS ID error!\r\n"); MessageBox.Show(LResource.ReadACASIDError + "\r\n"); goto end; } } //获取key if (midListNow.host == "LocalPC" && !preloadNow) { string Didpath = ""; string Macpath = ""; string Hdcppath = ""; string Hdcp22path = ""; string Esnpath = ""; string MGKpath = ""; string Widipath = ""; string Widevinepath = ""; string Cipath = ""; string Attestationpath = ""; string Fairplaypath = ""; string LEKpath = ""; string PEKpath = ""; string Playreadypath = ""; string Hashkeypath = ""; if (WriteDID.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal DeviceID=" + keyInfo.DID); if(Stream!=null&& Reader!=null) { keypath.Add(Didpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetDIDError + "\r\n" + error); goto end; } } if (WriteMac.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal Mac=" + keyInfo.Mac); if (Stream != null && Reader != null) { keypath.Add(Macpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetMacError + "\r\n" + error); goto end; } } if (WriteHDCP.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal HDCP=" + keyInfo.HDCP); if (Stream != null && Reader != null) { keypath.Add(Hdcppath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetHDCPError + error); goto end; } } if (WriteHDCP22.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal HDCP22=" + keyInfo.HDCP22); if (Stream != null && Reader != null) { keypath.Add(Hdcp22path); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetHDCP22Error + error); goto end; } } if (WriteESN.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal ESN=" + keyInfo.ESN); if (Stream != null && Reader != null) { keypath.Add(Esnpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetESNError + error); goto end; } } if (WriteMGK.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal MGK=" + keyInfo.MGK); if (Stream != null && Reader != null) { keypath.Add(MGKpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetMGKError + error); goto end; } } if (WriteFairplay.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal Fairplay=" + keyInfo.Fairplay); if (Stream != null && Reader != null) { keypath.Add(Fairplaypath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetFairplayError + error); goto end; } } if (WriteWiDi.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal WiDi=" + keyInfo.WiDi); if (Stream != null && Reader != null) { keypath.Add(Widipath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetWiDiError + error); goto end; } } if (WriteWidevine.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal Widevine=" + keyInfo.Widevine); if (Stream != null && Reader != null) { keypath.Add(Widevinepath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetWidevineError + error); goto end; } } if (WriteCiplus.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal CI_plus=" + keyInfo.CI_plus); if (Stream != null && Reader != null) { keypath.Add(Cipath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetCiError + error); goto end; } } if (WriteAttestation.Checked) { 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; Log.WriteGetKeyLog("\r\nLocal attestation=" + keyInfo.Attestation); if (Stream != null && Reader != null) { keypath.Add(Attestationpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show(LResource.GetAttestationError + error); goto end; } } if (fireTVKey.LEK) { 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; Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.LEK); if (Stream != null && Reader != null) { keypath.Add(LEKpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show("获取LEK失败" + error); goto end; } } if (fireTVKey.PEK) { 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; Log.WriteGetKeyLog("\r\nLocal LEK=" + keyInfo.PEK); if (Stream != null && Reader != null) { keypath.Add(PEKpath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show("获取PEK失败" + error); goto end; } } if (fireTVKey.Playready) { 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; Log.WriteGetKeyLog("\r\nLocal Playready=" + keyInfo.Playready); if (Stream != null && Reader != null) { keypath.Add(Playreadypath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show("获取Playready失败" + error); goto end; } } if (fireTVKey.Hashkey) { 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; Log.WriteGetKeyLog("\r\nLocal Hashkey=" + keyInfo.Hashkey); if (Stream != null && Reader != null) { keypath.Add(Fairplaypath); keyStream.Add(Stream); keyReader.Add(Reader); } } else { Log.WriteErrorLog(error); MessageBox.Show("获取hashkey失败" + error); goto end; } } if (localmidList.host!=null) { if(ClientTypeText.Text.Length==0) { SetTextStatus(ClientTypeText, localmidList.clienttype); } if (SVText.Text.Length == 0) { SetTextStatus(SVText, localmidList.version); } if (ProjectIDText.Text.Length == 0) { SetTextStatus(ProjectIDText, localmidList.projectid); } } } else if (!preloadNow) { if (WriteDID.Checked) { if (CommonMethod.GetKeys(midListNow.host, "DeviceID", SN,"devicetype=tcl_unknown_model", errorDBNow, out string did, out error, orderNow, out string md5)) { keyInfo.DID = did; Log.WriteGetKeyLog("\r\nDeviceID=" + keyInfo.DID); } else { MessageBox.Show(LResource.GetDIDError + "\r\n" + error); goto end; } } if (WriteMac.Checked) { if (CommonMethod.GetKeys(midListNow.host, "MAC", SN, midListNow.keytype["MAC"], errorDBNow, out string mac, out error, orderNow, out string md5)) { keyInfo.Mac = mac; Log.WriteGetKeyLog("\r\nMac=" + keyInfo.Mac); } else { MessageBox.Show(LResource.GetMacError + "\r\n" + error); goto end; } } if (WriteHDCP.Checked) { 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; Log.WriteGetKeyLog("\r\nHDCP=" + keyInfo.HDCP); } else { MessageBox.Show(LResource.GetHDCPError + error); goto end; } } if (WriteHDCP22.Checked) { 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; Log.WriteGetKeyLog("\r\nHDCP22=" + keyInfo.HDCP22); } else { MessageBox.Show(LResource.GetHDCP22Error + error); goto end; } } if (WriteESN.Checked) { 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; Log.WriteGetKeyLog("\r\nESN=" + keyInfo.ESN); } else { MessageBox.Show(LResource.GetESNError + error); goto end; } } if (WriteWiDi.Checked) { if (CommonMethod.GetKeys(midListNow.host, "WiDi", SN, midListNow.keytype["WiDi"], errorDBNow, out string widi, out error, orderNow, out string md5)) { keyInfo.WiDi = widi; Log.WriteGetKeyLog("\r\nWiDi=" + keyInfo.WiDi); } else { MessageBox.Show(LResource.GetWiDiError + error); goto end; } } if (WriteCiplus.Checked) { 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; Log.WriteGetKeyLog("\r\nCI_plus=" + keyInfo.CI_plus); } else { MessageBox.Show(LResource.GetCiError + error); goto end; } } if (WriteWidevine.Checked) { if (CommonMethod.GetWidevineAnAttestationKey( midListNow.host, SN, midListNow.keytype["Widevine_KEY"], errorDBNow, out bool isAndroidTV, out string widevine, out string attestation, out error, orderNow, out string md5)) { keyInfo.Widevine = widevine; Log.WriteGetKeyLog("\r\nWidevine=" + keyInfo.Widevine); if ( isAndroidTV ) { keyInfo.Attestation = attestation; keyInfo.AttestationMD5 = md5; Log.WriteGetKeyLog("\r\nAttestationMD5=" + keyInfo.AttestationMD5); } } else { MessageBox.Show(LResource.GetWidevineError+ error); goto end; } } if (WriteMGK.Checked) { 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; Log.WriteGetKeyLog("\r\nMGK=" + keyInfo.MGK); } else { MessageBox.Show(LResource.GetMGKError + error); goto end; } } if (WriteFairplay.Checked) { 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; Log.WriteGetKeyLog("\r\nFairplay=" + keyInfo.Fairplay); } else { MessageBox.Show(LResource.GetFairplayError + error); goto end; } } if (WriteWifiMac.Checked) { 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; Log.WriteGetKeyLog("\r\nWiFi_MAC=" + keyInfo.WiFi_MAC); } else { MessageBox.Show(LResource.GetMacError + "\r\n" + error); goto end; } } if (WriteBTMac.Checked) { 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; Log.WriteGetKeyLog("\r\nBT_MAC=" + keyInfo.BT_MAC); } else { MessageBox.Show(LResource.GetMacError + "\r\n" + error); goto end; } } if (WriteECP.Checked) { 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; Log.WriteGetKeyLog("\r\nECP_KEY=" + keyInfo.ECP); } else { MessageBox.Show(LResource.GetECPError + "\r\n" + error); goto end; } } if (WriteLEK.Checked) { if (CommonMethod.GetKeys(midListNow.host, "LEK", SN, midListNow.keytype["LEK"], errorDBNow, out string lek, out error, orderNow, out string md5)) { keyInfo.LEK = lek; Log.WriteGetKeyLog("\r\nLEK=" + keyInfo.LEK); } else { MessageBox.Show(LResource.GetLEKError + "\r\n" + error); goto end; } } if (WritePEK.Checked) { if (CommonMethod.GetKeys(midListNow.host, "PEK", SN, midListNow.keytype["PEK"], errorDBNow, out string pek, out error, orderNow, out string md5)) { keyInfo.PEK = pek; Log.WriteGetKeyLog("\r\nPEK=" + keyInfo.PEK); } else { MessageBox.Show(LResource.GetPEKError + "\r\n" + error); goto end; } } if (WritePlayready.Checked) { 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; Log.WriteGetKeyLog("\r\nPlayReady_key=" + keyInfo.Playready); } else { MessageBox.Show(LResource.GetPlayreadyError + "\r\n" + error); goto end; } } if (WriteHash.Checked) { if (CommonMethod.GetKeys(midListNow.host, "Hashkey", SN, midListNow.keytype["Hashkey"], errorDBNow, out string hash, out error, orderNow, out string md5)) { keyInfo.Hashkey = hash; Log.WriteGetKeyLog("\r\nHashkey=" + keyInfo.Hashkey); } else { MessageBox.Show(LResource.GetHashkeyError + "\r\n" + error); goto end; } } if (WriteYouTube.Checked) { 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; Log.WriteGetKeyLog("\r\nYouTube_KEY=" + keyInfo.YouTube_KEY); } else { MessageBox.Show(LResource.GetYouTubekeyError + "\r\n" + error); goto end; } } } //检查Software version if(SoftwareVersionNote.Text!= LResource.SkipChecking) { Log.WriteInfoLog("Check software version...\r\n"); if (SerialCMD.GetSoftVersion(TVPort, out result, out data, out error, SerailDelay)) { string sfv = Encoding.ASCII.GetString(data); if (sfv != SVText.Text) { MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show(LResource.MainboardFV + sfv + LResource.differentfromserver + SVText.Text + "\r\n" + LResource.SkipFVChecking, LResource.Error, messButton); if (dr == DialogResult.OK) { SetspecificText(SoftwareVersionNote, LResource.SkipChecking, Color.Yellow); SetcolorStatus(SVText, Color.Yellow); } else { SetspecificText(SoftwareVersionNote, sfv, Color.Red); SetcolorStatus(SVText, Color.Red); goto end; } } else { SetcolorStatus(SVText, Color.FromArgb(128, 255, 128)); } } else { Log.WriteErrorLog(SN + " Read software version fail"); MessageBox.Show(LResource.ReadSVError); goto end; } } //DID抄写 if (WriteDID.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.DID)) { Log.WriteErrorLog("DID format error!\r\n"+ keyInfo.DID); MessageBox.Show(LResource.DIDFormatError + "\r\n" + keyInfo.DID); goto end; } byte[] DIDData = Encoding.ASCII.GetBytes(keyInfo.DID); Log.WriteInfoLog("Write DID..."); if (SerialCMD.SetDeviceID(TVPort, DIDData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writedid); keycontent += "deviceid=" + keyInfo.DID + "&"; Log.WriteInfoLog("Check DID..."); if (writeCheckNow.DIDCheckcheck ? SerialCMD.CheckDeviceId(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkdid); Log.WriteInfoLog("Read DID..."); if (readCheckNow.DIDReadcheck ? SerialCMD.GetDeviceId(TVPort, out result, out data, out error, SerailDelay) : true) { if(readCheckNow.DIDReadcheck) { if (SerialInit.BytesCompare_Base64(data, DIDData)) { SetsuccessStatus(m_readdid); } else { SetfailStatus(m_readdid); Log.WriteErrorLog(SN + " contrast DID fail"); MessageBox.Show(LResource.ContrastDIDError); goto end; ; } } } else { SetfailStatus(m_readdid); Log.WriteErrorLog(SN + " read DID fail"); MessageBox.Show(LResource.ReadDIDError); goto end; } } else { SetfailStatus(m_checkdid); Log.WriteErrorLog(SN + " check DID fail"); MessageBox.Show(LResource.CheckDIDError); goto end; } } else { SetfailStatus(m_writedid); Log.WriteErrorLog(SN + " Write DID fail"); MessageBox.Show(LResource.SetDIDError); goto end; } } //Eth_Mac抄写 if (WriteMac.Checked) { string mac = keyInfo.Mac.Replace("-", ""); if (!CommonMethod.IsNumberAndWord(mac)) { Log.WriteErrorLog("Mac format error!\r\n" + mac); MessageBox.Show(LResource.MacFormatError + "\r\n" + mac); goto end; } byte[] MacData = SerialInit.HexToByte(mac); Log.WriteInfoLog("Write Mac..."); if (SerialCMD.SetMAC(TVPort, MacData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writemac); keycontent += "mac=" + keyInfo.Mac + "&"; Log.WriteInfoLog("Check Mac..."); if (writeCheckNow.MacCheckcheck ? SerialCMD.CheckMAC(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkmac); Log.WriteInfoLog("Read Mac..."); if (readCheckNow.MacReadcheck ? SerialCMD.GetMAC(TVPort, out result, out data, out error, SerailDelay) : true) { if(readCheckNow.MacReadcheck) { if (SerialInit.BytesCompare_Base64(data, MacData)) { SetsuccessStatus(m_readmac); } else { SetfailStatus(m_readmac); Log.WriteErrorLog(SN + " contrast Mac fail"); MessageBox.Show(LResource.ContrastMacError); goto end; } } } else { SetfailStatus(m_readmac); Log.WriteErrorLog(SN + " read Mac fail"); MessageBox.Show(LResource.ReadMacError); goto end; } } else { SetfailStatus(m_checkmac); Log.WriteErrorLog(SN + " check Mac fail"); MessageBox.Show(LResource.CheckMacError); goto end; } } else { SetfailStatus(m_writemac); Log.WriteErrorLog(SN + " Write Mac fail"); MessageBox.Show(LResource.WriteMacError); goto end; } } //WiFi_MAC抄写 if (WriteWifiMac.Checked) { string wifimac = keyInfo.WiFi_MAC.Replace("-", ""); if (!CommonMethod.IsNumberAndWord(wifimac)) { Log.WriteErrorLog("Wifi Mac format error!\r\n" + wifimac); MessageBox.Show(LResource.MacFormatError + "\r\n" + wifimac); goto end; } byte[] WifiMacData = Encoding.ASCII.GetBytes(wifimac); Log.WriteInfoLog("Write WifiMac..."); if (SerialCMD.SetFireTVWifiMac(TVPort, WifiMacData, out result, out data, out error, SerailDelay)) { keycontent += "wifimac=" + keyInfo.WiFi_MAC + "&"; SetsuccessStatus(m_writeWifiMac); Log.WriteInfoLog("Check WifiMac..."); if (writeCheckNow.WifiMacCheckcheck ? SerialCMD.CheckFireTVWifiMac(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkWifiMac); Log.WriteInfoLog("Read WifiMac..."); if (readCheckNow.WifiMacReadcheck ? SerialCMD.GetFireTVWiFi_Mac(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.WifiMacReadcheck) { if (SerialInit.BytesCompare_Base64(data, WifiMacData)) { SetsuccessStatus(m_readWifiMac); } else { SetfailStatus(m_readWifiMac); Log.WriteErrorLog(SN + " contrast Wifi Mac fail"); MessageBox.Show(LResource.ContrastMacError); goto end; } } } else { SetfailStatus(m_readWifiMac); Log.WriteErrorLog(SN + " read Wifi Mac fail"); MessageBox.Show(LResource.ReadMacError); goto end; } } else { SetfailStatus(m_checkWifiMac); Log.WriteErrorLog(SN + " check Wifi Mac fail"); MessageBox.Show(LResource.CheckMacError); goto end; } } else { SetfailStatus(m_writeWifiMac); Log.WriteErrorLog(SN + " Write Wifi Mac fail"); MessageBox.Show(LResource.WriteMacError); goto end; } } //BT_MAC抄写 if (WriteBTMac.Checked) { string btmac = keyInfo.BT_MAC.Replace("-", ""); if (!CommonMethod.IsNumberAndWord(btmac)) { Log.WriteErrorLog("BTMac format error!\r\n" + btmac); MessageBox.Show(LResource.MacFormatError + "\r\n" + btmac); goto end; } byte[] BTMacData = Encoding.ASCII.GetBytes(btmac); Log.WriteInfoLog("Write BTMac..."); if (SerialCMD.SetFireTVBTMac(TVPort, BTMacData, out result, out data, out error, SerailDelay)) { keycontent += "btmac=" + keyInfo.BT_MAC + "&"; SetsuccessStatus(m_writeBTMac); Log.WriteInfoLog("Check BTMac..."); if (writeCheckNow.BTMacCheckcheck ? SerialCMD.CheckFireTVBTMac(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkBTMac); Log.WriteInfoLog("Read BTMac..."); if (readCheckNow.BTMacReadcheck ? SerialCMD.GetFireTVBT_Mac(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.BTMacReadcheck) { if (SerialInit.BytesCompare_Base64(data, BTMacData)) { SetsuccessStatus(m_readBTMac); } else { SetfailStatus(m_readBTMac); Log.WriteErrorLog(SN + " contrast BT Mac fail"); MessageBox.Show(LResource.ContrastMacError); goto end; } } } else { SetfailStatus(m_readBTMac); Log.WriteErrorLog(SN + " read BT Mac fail"); MessageBox.Show(LResource.ReadMacError); goto end; } } else { SetfailStatus(m_checkBTMac); Log.WriteErrorLog(SN + " check BT Mac fail"); MessageBox.Show(LResource.CheckMacError); goto end; } } else { SetfailStatus(m_writeBTMac); Log.WriteErrorLog(SN + " Write BT Mac fail"); MessageBox.Show(LResource.WriteMacError); goto end; } } //HDCP KEY抄写 if (WriteHDCP.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.HDCP)) { Log.WriteErrorLog("HDCP format error!\r\n" + keyInfo.HDCP); MessageBox.Show(LResource.HDCPFormatError + "\r\n" + keyInfo.HDCP); goto end; } byte[] HDCPData = SerialInit.HexToByte(keyInfo.HDCP); Log.WriteInfoLog("Write HDCP..."); if (SerialCMD.SetHDCPKey(TVPort, HDCPData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writehdcp); keycontent += "hdcpkey=" + keyInfo.HDCP + "&"; Log.WriteInfoLog("Check HDCP..."); if (writeCheckNow.HDCPCheckcheck ? SerialCMD.CheckHDCP(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkhdcp); Log.WriteInfoLog("Read HDCP..."); if (readCheckNow.HDCPReadcheck? SerialCMD.GetHDCPKey(TVPort, out result, out data, out error, SerailDelay) :true) { if(readCheckNow.HDCPReadcheck) { if (SerialInit.BytesCompare_Base64(data, HDCPData)) { SetsuccessStatus(m_readhdcp); } else { SetfailStatus(m_readhdcp); Log.WriteErrorLog(SN + " contrast HDCP fail"); MessageBox.Show(LResource.ContrastHDCPError); goto end; } } } else { SetfailStatus(m_readhdcp); Log.WriteErrorLog(SN + " read HDCP fail"); MessageBox.Show(LResource.ReadHDCPError); goto end; } } else { SetfailStatus(m_checkhdcp); Log.WriteErrorLog(SN + " check HDCP fail"); MessageBox.Show(LResource.CheckHDCPError); goto end; } } else { SetfailStatus(m_writehdcp); Log.WriteErrorLog(SN + " Write HDCP fail"); MessageBox.Show(LResource.WriteHDCPError); goto end; } } //HDCP22 KEY抄写 if (WriteHDCP22.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.HDCP22)) { Log.WriteErrorLog("HDCP22 format error!\r\n" + keyInfo.HDCP22); MessageBox.Show(LResource.HDCP22FormatError + "\r\n" + keyInfo.HDCP22); goto end; } byte[] HDCP22Data = SerialInit.HexToByte(keyInfo.HDCP22); Log.WriteInfoLog("Write HDCP22..."); if (SerialCMD.SetHDCPKey22(TVPort, HDCP22Data, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writehdcp22); keycontent += "hdcpkey2=" + keyInfo.HDCP22 + "&"; Log.WriteInfoLog("Check HDCP22..."); if (writeCheckNow.HDCP22Checkcheck ? SerialCMD.CheckHDCP22(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkhdcp22); Log.WriteInfoLog("Read HDCP22..."); if (readCheckNow.HDCP22Readcheck ? SerialCMD.GetHDCPKey22(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.HDCP22Readcheck) { if (SerialInit.BytesCompare_Base64(data, HDCP22Data)) { SetsuccessStatus(m_readhdcp22); } else { SetfailStatus(m_readhdcp22); Log.WriteErrorLog(SN + " contrast HDCP22 fail"); MessageBox.Show(LResource.ContrastHDCP22Error); goto end; } } } else { SetfailStatus(m_readhdcp22); Log.WriteErrorLog(SN + " read HDCP22 fail"); MessageBox.Show(LResource.ReadHDCP22Error); goto end; } } else { SetfailStatus(m_checkhdcp22); Log.WriteErrorLog(SN + " check HDCP22 fail"); MessageBox.Show(LResource.CheckHDCP22Error); goto end; } } else { SetfailStatus(m_writehdcp22); Log.WriteErrorLog(SN + " Write HDCP22 fail"); MessageBox.Show(LResource.WriteHDCP22Error); goto end; } } //ESN KEY抄写 if (WriteESN.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.ESN)) { Log.WriteErrorLog("ESN format error!\r\n" + keyInfo.ESN); MessageBox.Show(LResource.ESNFormatError + "\r\n" + keyInfo.ESN); goto end; } byte[] ESNData = SerialInit.HexToByte(keyInfo.ESN); Log.WriteInfoLog("Write ESN..."); if (SerialCMD.SetNetflixESN(TVPort, ESNData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeesn); keycontent += "netfilxesn=" + keyInfo.ESN + "&"; Log.WriteInfoLog("Check ESN..."); if (writeCheckNow.ESNCheckcheck ? SerialCMD.CheckNetflixESN(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkesn); Log.WriteInfoLog("Read ESN..."); if (readCheckNow.ESNReadcheck ? SerialCMD.GetNetflixESN(TVPort, out result, out data, out error, SerailDelay) : true) { if(readCheckNow.ESNReadcheck) { if (SerialInit.BytesCompare_Base64(data, ESNData)) { SetsuccessStatus(m_readesn); } else { SetfailStatus(m_readesn); Log.WriteErrorLog(SN + " contrast ESN fail"); MessageBox.Show(LResource.ContrastESNError); goto end; } } } else { SetfailStatus(m_readesn); Log.WriteErrorLog(SN + " read ESN fail"); MessageBox.Show(LResource.ReadESNError); goto end; } } else { SetfailStatus(m_checkesn); Log.WriteErrorLog(SN + " check ESN fail"); MessageBox.Show(LResource.CheckESNError); goto end; } } else { SetfailStatus(m_writeesn); Log.WriteErrorLog(SN + " Write ESN fail"); MessageBox.Show(LResource.WriteESNError); goto end; } } //WiDi KEY抄写 if (WriteWiDi.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.WiDi)) { Log.WriteErrorLog("WiDi format error!\r\n" + keyInfo.WiDi); MessageBox.Show(LResource.WiDiFormatError + "\r\n" + keyInfo.WiDi); goto end; } byte[] WiDiData = SerialInit.HexToByte(keyInfo.WiDi); Log.WriteInfoLog("Write WiDi..."); if (SerialCMD.SetWidi(TVPort, WiDiData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writewidi); keycontent += "widi=" + keyInfo.WiDi + "&"; Log.WriteInfoLog("Check WiDi..."); if (writeCheckNow.WiDiCheckcheck ? SerialCMD.CheckWidi(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkwidi); Log.WriteInfoLog("Read WiDi..."); if (readCheckNow.WiDiReadcheck ? SerialCMD.GetWidi(TVPort, out result, out data, out error, SerailDelay) : true) { if(readCheckNow.WiDiReadcheck) { if (SerialInit.BytesCompare_Base64(data, WiDiData)) { SetsuccessStatus(m_readwidi); } else { SetfailStatus(m_readwidi); Log.WriteErrorLog(SN + " contrast WiDi fail"); MessageBox.Show(LResource.ContrastWiDiError); goto end; } } } else { SetfailStatus(m_readwidi); Log.WriteErrorLog(SN + " read WiDi fail"); MessageBox.Show(LResource.ReadWiDiError); goto end; } } else { SetfailStatus(m_checkwidi); Log.WriteErrorLog(SN + " check WiDi fail"); MessageBox.Show(LResource.CheckWiDiError); goto end; } } else { SetfailStatus(m_writewidi); Log.WriteErrorLog(SN + " Write WiDi fail"); MessageBox.Show(LResource.WriteWiDiError); goto end; } } //PEK抄写 if (WritePEK.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.PEK)) { Log.WriteErrorLog("PEK format error!\r\n" + keyInfo.PEK); MessageBox.Show(LResource.PEKFormatError + "\r\n" + keyInfo.PEK); goto end; } byte[] PEKData = SerialInit.HexToByte(keyInfo.PEK); Log.WriteInfoLog("Write PEK..."); if (SerialCMD.SetFireTVPEK(TVPort, PEKData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writePEK); keycontent += "pek=" + keyInfo.PEK + "&"; Log.WriteInfoLog("Check PEK..."); if (writeCheckNow.PEKCheckcheck ? SerialCMD.CheckFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkPEK); Log.WriteInfoLog("Read PEK..."); if (readCheckNow.PEKReadcheck ? SerialCMD.ReadFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.PEKReadcheck) { if (SerialInit.BytesCompare_Base64(data, PEKData)) { SetsuccessStatus(m_readPEK); } else { SetfailStatus(m_readPEK); Log.WriteErrorLog(SN + " contrast PEK fail"); MessageBox.Show(LResource.ContrastPEKError); goto end; } } } else { SetfailStatus(m_readPEK); Log.WriteErrorLog(SN + " read PEK fail"); MessageBox.Show(LResource.ReadPEKError); goto end; } } else { SetfailStatus(m_checkPEK); Log.WriteErrorLog(SN + " check PEK fail"); MessageBox.Show(LResource.CheckPEKError); goto end; } } else { SetfailStatus(m_writePEK); Log.WriteErrorLog(SN + " Write PEK fail"); MessageBox.Show(LResource.WritePEKError); goto end; } } //Youtube key抄写 if (WriteYouTube.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.YouTube_KEY)) { Log.WriteErrorLog("YouTube format error!\r\n" + keyInfo.YouTube_KEY); MessageBox.Show(LResource.YouTubeFormatError + "\r\n" + keyInfo.YouTube_KEY); goto end; } byte[] YouTubeData = SerialInit.HexToByte(keyInfo.YouTube_KEY); Log.WriteInfoLog("Write YouTube key..."); if (SerialCMD.SetFireTVYoutube(TVPort, YouTubeData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeYouTube); keycontent += "youtubekey=" + keyInfo.YouTube_KEY + "&"; Log.WriteInfoLog("Check YouTube_KEY..."); if (writeCheckNow.YouTubeCheckcheck ? SerialCMD.CheckFireTVYoutube(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkYouTube); Log.WriteInfoLog("Read YouTube_KEY..."); if (readCheckNow.YouTubeReadcheck ? SerialCMD.ReadFireTVYoutube(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.YouTubeReadcheck) { if (SerialInit.BytesCompare_Base64(data, YouTubeData)) { SetsuccessStatus(m_readYouTube); } else { SetfailStatus(m_readYouTube); Log.WriteErrorLog(SN + " contrast YouTube_KEY fail"); MessageBox.Show(LResource.ContrastYouTubeError); goto end; } } } else { SetfailStatus(m_readYouTube); Log.WriteErrorLog(SN + " read YouTube_KEY fail"); MessageBox.Show(LResource.ReadYouTubeError); goto end; } } else { SetfailStatus(m_checkYouTube); Log.WriteErrorLog(SN + " check YouTube_KEY fail"); MessageBox.Show(LResource.CheckYouTubeError); goto end; } } else { SetfailStatus(m_writeYouTube); Log.WriteErrorLog(SN + " Write YouTube_KEY fail"); MessageBox.Show(LResource.WriteYouTubeError); goto end; } } //Widevine KEY抄写 if (WriteWidevine.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.Widevine)) { Log.WriteErrorLog("Widevine format error!\r\n" + keyInfo.Widevine); MessageBox.Show(LResource.WidevineFormatError + "\r\n" + keyInfo.Widevine); goto end; } byte[] WidevineData = SerialInit.HexToByte(keyInfo.Widevine); Log.WriteInfoLog("Write Widevine..."); if (SerialCMD.SetWidevine(TVPort, WidevineData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writewidevine); keycontent += "widevine=" + keyInfo.Widevine + "&"; Log.WriteInfoLog("Check Widevine..."); if (writeCheckNow.WidevineCheckcheck ? SerialCMD.CheckWidevine(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkwidevine); Log.WriteInfoLog("Read Widevine..."); if (readCheckNow.WidevineReadcheck ? SerialCMD.GetWidevine(TVPort, out result, out data, out error, SerailDelay) : true) { if(readCheckNow.WidevineReadcheck) { if(CommonMethod.CompareMD5(WidevineData,data)) { SetsuccessStatus(m_readwidevine); } else { if (SerialInit.BytesCompare_Base64(data, WidevineData)) { SetsuccessStatus(m_readwidevine); } else { SetfailStatus(m_readwidevine); Log.WriteErrorLog(SN + " contrast Widevine fail"); MessageBox.Show(LResource.ContrastWidevineError); goto end; } } } } else { SetfailStatus(m_readwidevine); Log.WriteErrorLog(SN + " read Widevine fail"); MessageBox.Show(LResource.ReadWidevineError); goto end; } } else { SetfailStatus(m_checkwidevine); Log.WriteErrorLog(SN + " check Widevine fail"); MessageBox.Show(LResource.CheckWidevineError); goto end; } } else { SetfailStatus(m_writewidevine); Log.WriteErrorLog(SN + " Write Widevine fail"); MessageBox.Show(LResource.WriteWidevineError); goto end; } } //CI plus KEY抄写 if (WriteCiplus.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.CI_plus)) { Log.WriteErrorLog("CI_plus format error!\r\n" + keyInfo.CI_plus); MessageBox.Show(LResource.CI_plusFormatError + "\r\n" + keyInfo.CI_plus); goto end; } byte[] CiplusData = SerialInit.HexToByte(keyInfo.CI_plus); Log.WriteInfoLog("Write CI plus..."); if (SerialCMD.SetCiKey(TVPort, CiplusData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeci); keycontent += "cikey=" + keyInfo.CI_plus + "&"; Log.WriteInfoLog("Check CI plus..."); if (writeCheckNow.CI_plusCheckcheck? SerialCMD.CheckCikey(TVPort, out result, out data, out error, SerailDelay) :true) { SetsuccessStatus(m_checkci); Log.WriteInfoLog("Read CI plus..."); if (readCheckNow.CI_plusReadcheck? SerialCMD.GetCiKey(TVPort, out result, out data, out error, SerailDelay) :true) { if(readCheckNow.CI_plusReadcheck) { if(CommonMethod.CompareMD5(CiplusData, data)) { SetsuccessStatus(m_readci); } else { if (SerialInit.BytesCompare_Base64(data, CiplusData)) { SetsuccessStatus(m_readci); } else { SetfailStatus(m_readci); Log.WriteErrorLog(SN + " contrast CI plus fail"); MessageBox.Show(LResource.ContrastCIError); goto end; } } } } else { SetfailStatus(m_readci); Log.WriteErrorLog(SN + " read CI plus fail"); MessageBox.Show(LResource.ReadCIError); goto end; } } else { SetfailStatus(m_checkci); Log.WriteErrorLog(SN + " check CI plus fail"); MessageBox.Show(LResource.CheckCIError); goto end; } } else { SetfailStatus(m_writeci); Log.WriteErrorLog(SN + " Write CI plus fail"); MessageBox.Show(LResource.WriteCIError); goto end; } } //Attestation KEY抄写 if (WriteAttestation.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.Attestation)) { Log.WriteErrorLog("Attestation key format error!\r\n" + keyInfo.Attestation); MessageBox.Show(LResource.AttestationFormatError + "\r\n" + keyInfo.Attestation); goto end; } byte[] AttestationData = SerialInit.HexToByte(keyInfo.Attestation); Log.WriteInfoLog("Write Attestation key..."); if (SerialCMD.SetAttestationKey(TVPort, AttestationData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeattestation); keycontent += "attestationmd5=" + keyInfo.AttestationMD5 + "&"; Log.WriteInfoLog("Check Attestation key..."); if (writeCheckNow.AttestationCheckcheck ? SerialCMD.CheckAttestationKey(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkattestation); Log.WriteInfoLog("Read Attestation key..."); if (readCheckNow.AttestationReadcheck ? SerialCMD.GetAttestationKey(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.AttestationReadcheck) { if (CommonMethod.CompareMD5(AttestationData, data)) { SetsuccessStatus(m_readattestation); } else { if (SerialInit.BytesCompare_Base64(data, AttestationData)) { SetsuccessStatus(m_readattestation); } else { SetfailStatus(m_readattestation); Log.WriteErrorLog(SN + " contrast Attestation key fail"); MessageBox.Show(LResource.ContrastAttestationError); goto end; } } } } else { SetfailStatus(m_readattestation); Log.WriteErrorLog(SN + " read Attestation key fail"); MessageBox.Show(LResource.ReadAttestationError); goto end; } } else { SetfailStatus(m_checkattestation); Log.WriteErrorLog(SN + " check Attestation key fail"); MessageBox.Show(LResource.CheckAttestationError); goto end; } } else { SetfailStatus(m_writeattestation); Log.WriteErrorLog(SN + " Write Attestation key fail"); MessageBox.Show(LResource.WriteAttestationError); goto end; } } //MGK KEY抄写 if (WriteMGK.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.MGK)) { Log.WriteErrorLog("MGK format error!\r\n" + keyInfo.MGK); MessageBox.Show(LResource.MGKFormatError + "\r\n" + keyInfo.MGK); goto end; } byte[] MGKData = SerialInit.HexToByte(keyInfo.MGK); Log.WriteInfoLog("Write MGK..."); if (SerialCMD.SetMGKKey(TVPort, MGKData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeMGK); keycontent += "mgk=" + keyInfo.MGK + "&"; Log.WriteInfoLog("Check MGK..."); if (writeCheckNow.MGKCheckcheck ? SerialCMD.CheckMGKkey(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkMGK); Log.WriteInfoLog("Read MGK..."); if (readCheckNow.MGKReadcheck ? SerialCMD.GetMGKKey(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.MGKReadcheck) { if (CommonMethod.CompareMD5(MGKData, data)) { SetsuccessStatus(m_readMGK); } else { if (SerialInit.BytesCompare_Base64(data, MGKData)) { SetsuccessStatus(m_readMGK); } else { SetfailStatus(m_readMGK); Log.WriteErrorLog(SN + " contrast MGK fail"); MessageBox.Show(LResource.ContrastMGKError); goto end; } } } } else { SetfailStatus(m_readMGK); Log.WriteErrorLog(SN + " read MGK fail"); MessageBox.Show(LResource.ReadMGKError); goto end; } } else { SetfailStatus(m_checkMGK); Log.WriteErrorLog(SN + " check MGK fail"); MessageBox.Show(LResource.CheckMGKError); goto end; } } else { SetfailStatus(m_writeMGK); Log.WriteErrorLog(SN + " Write MGK fail"); MessageBox.Show(LResource.WriteMGKError); goto end; } } //Fairplay KEY抄写 if (WriteFairplay.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.Fairplay)) { Log.WriteErrorLog("Fairplay format error!\r\n" + keyInfo.Fairplay); MessageBox.Show(LResource.FairplayFormatError + "\r\n" + keyInfo.Fairplay); goto end; } byte[] FairplayData = SerialInit.HexToByte(keyInfo.Fairplay); Log.WriteInfoLog("Write Fairplay..."); if (SerialCMD.SetFireTVFairplay(TVPort, FairplayData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeFairplay); keycontent += "fairplay=" + keyInfo.Fairplay + "&"; Log.WriteInfoLog("Check Fairplay..."); if (writeCheckNow.FairplayCheckcheck ? SerialCMD.CheckFireTVFairplay(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkFairplay); Log.WriteInfoLog("Read Fairplay..."); if (readCheckNow.FairplayReadcheck ? SerialCMD.ReadFireTVFairplay(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.FairplayReadcheck) { if (SerialInit.BytesCompare_Base64(data, FairplayData)) { SetsuccessStatus(m_readFairplay); } else { SetfailStatus(m_readFairplay); Log.WriteErrorLog(SN + " contrast Fairplay fail"); MessageBox.Show(LResource.ContrastFairplayError); goto end; } } } else { SetfailStatus(m_readFairplay); Log.WriteErrorLog(SN + " read Fairplay fail"); MessageBox.Show(LResource.ReadFairplayError); goto end; } } else { SetfailStatus(m_checkFairplay); Log.WriteErrorLog(SN + " check Fairplay fail"); MessageBox.Show(LResource.CheckFairplayError); goto end; } } else { SetfailStatus(m_writeFairplay); Log.WriteErrorLog(SN + " Write Fairplay fail"); MessageBox.Show(LResource.WriteFairplayError); goto end; } } //ECP KEY抄写 if (WriteECP.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.ECP)) { Log.WriteErrorLog("ECP format error!\r\n" + keyInfo.ECP); MessageBox.Show(LResource.ECPFormatError + "\r\n" + keyInfo.ECP); goto end; } byte[] ECPData = SerialInit.HexToByte(keyInfo.ECP); Log.WriteInfoLog("Write ECP..."); if (SerialCMD.SetECP(TVPort, ECPData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeECP); keycontent += "ecp=" + keyInfo.ECP + "&"; Log.WriteInfoLog("Check ECP..."); if (writeCheckNow.ECPCheckcheck ? SerialCMD.CheckECP(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkECP); Log.WriteInfoLog("Read ECP..."); if (readCheckNow.ECPReadcheck ? SerialCMD.GetECP(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.ECPReadcheck) { if (SerialInit.BytesCompare_Base64(data, ECPData)) { SetsuccessStatus(m_readECP); } else { SetfailStatus(m_readECP); Log.WriteErrorLog(SN + " contrast ECP fail"); MessageBox.Show(LResource.ContrastECPError); goto end; } } } else { SetfailStatus(m_readECP); Log.WriteErrorLog(SN + " read ECP fail"); MessageBox.Show(LResource.ReadECPError); goto end; } } else { SetfailStatus(m_checkECP); Log.WriteErrorLog(SN + " check ECP fail"); MessageBox.Show(LResource.CheckECPError); goto end; } } else { SetfailStatus(m_writeECP); Log.WriteErrorLog(SN + " Write ECP fail"); MessageBox.Show(LResource.WriteECPError); goto end; } } //LEK抄写 if (WriteLEK.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.LEK)) { Log.WriteErrorLog("LEK format error!\r\n" + keyInfo.LEK); MessageBox.Show(LResource.LEKFormatError + "\r\n" + keyInfo.LEK); goto end; } byte[] LEKData = SerialInit.HexToByte(keyInfo.LEK); Log.WriteInfoLog("Write LEK..."); if (SerialCMD.SetFireTVLEK(TVPort, LEKData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeLEK); keycontent += "lek=" + keyInfo.LEK + "&"; Log.WriteInfoLog("Check LEK..."); if (writeCheckNow.LEKCheckcheck ? SerialCMD.CheckFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkLEK); Log.WriteInfoLog("Read LEK..."); if (readCheckNow.LEKReadcheck ? SerialCMD.ReadFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.LEKReadcheck) { if (SerialInit.BytesCompare_Base64(data, LEKData)) { SetsuccessStatus(m_readLEK); } else { SetfailStatus(m_readLEK); Log.WriteErrorLog(SN + " contrast LEK fail"); MessageBox.Show(LResource.ContrastLEKError); goto end; } } } else { SetfailStatus(m_readLEK); Log.WriteErrorLog(SN + " read LEK fail"); MessageBox.Show(LResource.ReadLEKError); goto end; } } else { SetfailStatus(m_checkLEK); Log.WriteErrorLog(SN + " check LEK fail"); MessageBox.Show(LResource.CheckLEKError); goto end; } } else { SetfailStatus(m_writeLEK); Log.WriteErrorLog(SN + " Write LEK fail"); MessageBox.Show(LResource.WriteLEKError); goto end; } } //Playready抄写 if (WritePlayready.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.Playready)) { Log.WriteErrorLog("Playready format error!\r\n" + keyInfo.Playready); MessageBox.Show(LResource.PlayreadyFormatError + "\r\n" + keyInfo.Playready); goto end; } byte[] PlayreadyData = SerialInit.HexToByte(keyInfo.Playready); Log.WriteInfoLog("Write Playready..."); if (SerialCMD.SetFireTVPlayready(TVPort, PlayreadyData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writePlayready); keycontent += "playready=" + keyInfo.Playready + "&"; Log.WriteInfoLog("Check Playready..."); if (writeCheckNow.PlayreadyCheckcheck ? SerialCMD.CheckFireTVPlayready(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkPlayready); Log.WriteInfoLog("Read Playready..."); if (readCheckNow.PlayreadyReadcheck ? SerialCMD.ReadFireTVPlayready(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.PlayreadyReadcheck) { if (CommonMethod.CompareMD5(PlayreadyData, data)) { SetsuccessStatus(m_readPlayready); } else { if (SerialInit.BytesCompare_Base64(data, PlayreadyData)) { SetsuccessStatus(m_readPlayready); } else { SetfailStatus(m_readPlayready); Log.WriteErrorLog(SN + " contrast Playready fail"); MessageBox.Show(LResource.ContrastPlayreadyError); goto end; } } } } else { SetfailStatus(m_readPlayready); Log.WriteErrorLog(SN + " read Playready fail"); MessageBox.Show(LResource.ReadPlayreadyError); goto end; } } else { SetfailStatus(m_checkPlayready); Log.WriteErrorLog(SN + " check Playready fail"); MessageBox.Show(LResource.CheckPlayreadyError); goto end; } } else { SetfailStatus(m_writePlayready); Log.WriteErrorLog(SN + " Write Playready fail"); MessageBox.Show(LResource.WritePlayreadyError); goto end; } } //Hash抄写 if (WriteHash.Checked) { if (!CommonMethod.IsNumberAndWord(keyInfo.Hashkey)) { Log.WriteErrorLog("Hash format error!\r\n" + keyInfo.Hashkey); MessageBox.Show(LResource.HashFormatError + "\r\n" + keyInfo.Hashkey); goto end; } byte[] HashData = SerialInit.HexToByte(keyInfo.Hashkey); Log.WriteInfoLog("Write Hash..."); if (SerialCMD.SetFireTVHashkey(TVPort, HashData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeHash); keycontent += "hash=" + keyInfo.Hashkey + "&"; Log.WriteInfoLog("Check Hash..."); if (writeCheckNow.HashCheckcheck ? SerialCMD.CheckFireTVHashkey(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkHash); Log.WriteInfoLog("Read Hash..."); if (readCheckNow.HashReadcheck ? SerialCMD.ReadFireTVHashkey(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.HashReadcheck) { if (SerialInit.BytesCompare_Base64(data, HashData)) { SetsuccessStatus(m_readHash); } else { SetfailStatus(m_readHash); Log.WriteErrorLog(SN + " contrast Hash fail"); MessageBox.Show(LResource.ContrastHashError); goto end; } } } else { SetfailStatus(m_readHash); Log.WriteErrorLog(SN + " read Hash fail"); MessageBox.Show(LResource.ReadHashError); goto end; } } else { SetfailStatus(m_checkHash); Log.WriteErrorLog(SN + " check Hash fail"); MessageBox.Show(LResource.CheckHashError); goto end; } } else { SetfailStatus(m_writeHash); Log.WriteErrorLog(SN + " Write Hash fail"); MessageBox.Show(LResource.WriteHashError); goto end; } } //频道预置 if (FunctionSettingNow.WriteChannel) { Log.WriteInfoLog("setting channel..."); if (SerialCMD.SetChannel(TVPort, FunctionSettingNow.ChannelCode, out result, out data, out error, SerailDelay)) { /* Log.WriteInfoLog("getting channel..."); if (SerialCMD.GetChannel(TVPort, out result, out data, out error)) { if(SerialInit.BytesCompare_Base64(data, FunctionSettingNow.ChannelCode)) { } else { Log.WriteErrorLog(SN + " get different channel"); goto end; } } else { Log.WriteErrorLog(SN + " fail to get channel"); goto end; }*/ Log.WriteInfoLog(SN + " set channel success"); SetcolorStatus(ChannelText, Color.FromArgb(128, 255, 128)); } else { Log.WriteErrorLog(SN + " fail to set channel"); MessageBox.Show(LResource.SetChannelError); goto end; } } //OSD语言设置 if (FunctionSettingNow.WriteOSD) { Log.WriteInfoLog("setting OSD language..."); if (SerialCMD.SetOSDLanguage(TVPort, FunctionSettingNow.OSDLCode, out result, out data, out error, SerailDelay)) { if(readCheckNow.OSDReadcheck) { Log.WriteInfoLog("getting OSD language..."); if (SerialCMD.GetOSDLanguage(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, FunctionSettingNow.OSDLCode)) { SetcolorStatus(OSDText, Color.FromArgb(128, 255, 128)); } else { Log.WriteErrorLog(SN + " get different OSD language"); MessageBox.Show(LResource.ContrastOSDLError); goto end; } } else { Log.WriteErrorLog(SN + " fail to get OSD language"); MessageBox.Show(LResource.GetOSDLError); goto end; } } else Log.WriteInfoLog("skip read OSD language..."); } else { Log.WriteErrorLog(SN + " fail to set OSD language"); MessageBox.Show(LResource.SetOSDLError); goto end; } } //Shop语言设置 if (FunctionSettingNow.WriteSHOP) { Log.WriteInfoLog("setting SHOP language..."); if (SerialCMD.SetShopLanguage(TVPort, FunctionSettingNow.ShopLCode, out result, out data, out error, SerailDelay)) { if(readCheckNow.SHOPReadcheck) { Log.WriteInfoLog("getting SHOP language..."); if (SerialCMD.GetShopLanguage(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, FunctionSettingNow.ShopLCode)) { SetcolorStatus(SHOPText, Color.FromArgb(128, 255, 128)); } else { Log.WriteErrorLog(SN + " get different SHOP language"); MessageBox.Show(LResource.ContrastSHOPLError); goto end; } } else { Log.WriteErrorLog(SN + " fail to get SHOP language"); MessageBox.Show(LResource.GetSHOPLError); goto end; } } else Log.WriteInfoLog("skip read SHOP language..."); } else { Log.WriteErrorLog(SN + " fail to set SHOP language"); MessageBox.Show(LResource.SetSHOPLError); goto end; } } // EDID Pid抄写; if (WriteEDIDPID.Checked) { // 4字节转成整数:0~65535,0x0000~0xffff; //byte[] EDIDPidData = Encoding.ASCII.GetBytes(keyInfo.EDIDPid); byte[] EDIDPidData = SerialInit.strToToHexByte(keyInfo.EDIDPid); Log.WriteInfoLog("Write EDID Pid..."); if (SerialCMD.SetEDIDPid(TVPort, EDIDPidData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeEDIDPID); keycontent += "EDIDPid=" + keyInfo.EDIDPid + "&"; Log.WriteInfoLog("Read EDID Pid..."); if (readCheckNow.EDIDPIDReadcheck ? SerialCMD.ReadEDIDPid(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.EDIDPIDReadcheck) { if (SerialInit.BytesCompare_Base64(data, EDIDPidData)) { SetsuccessStatus(m_readEDIDPID); } else { SetfailStatus(m_readEDIDPID); Log.WriteErrorLog(SN + " contrast EDID PID fail"); MessageBox.Show(LResource.ContrastEDIDPIDError); goto end; } } } else { SetfailStatus(m_readEDIDPID); Log.WriteErrorLog(SN + " read EDID PID fail"); MessageBox.Show(LResource.ReadEDIDPIDError); goto end; } } else { SetfailStatus(m_writeEDIDPID); Log.WriteErrorLog(SN + " Write EDID PID fail"); MessageBox.Show(LResource.WriteEDIDPidError); goto end; } } // EDID Mode Name抄写; if (WriteEDIDName.Checked) { // 长度为13字节; byte[] EDIDNameData = Encoding.ASCII.GetBytes(keyInfo.EDIDModeName); Log.WriteInfoLog("Write EDID Mode Name..."); if (SerialCMD.SetEDIDModelName(TVPort, EDIDNameData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeEDIDName); keycontent += "EDIDModeName=" + keyInfo.EDIDModeName + "&"; Log.WriteInfoLog("Read EDID Mode Name..."); if (readCheckNow.EDIDModeNameReadcheck? SerialCMD.ReadEDIDModelName(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.EDIDModeNameReadcheck) { if (SerialInit.BytesCompare_Base64(data, EDIDNameData)) { SetsuccessStatus(m_readEDIDName); } else { SetfailStatus(m_readEDIDName); Log.WriteErrorLog(SN + " contrast EDID Mode Name fail"); MessageBox.Show(LResource.ContrastEDIDModelNameError); goto end; } } } else { SetfailStatus(m_readEDIDPID); Log.WriteErrorLog(SN + " read EDID Mode Name fail"); MessageBox.Show(LResource.ReadEDIDModelNameError); goto end; } } else { SetfailStatus(m_writeEDIDPID); Log.WriteErrorLog(SN + " Write EDID Mode Name fail"); MessageBox.Show(LResource.WriteEDIDModelNameError); goto end; } } // ACAS Key抄写; if (WriteACASKey.Checked) { // 长度为13字节; byte[] ACASKeyData = Encoding.ASCII.GetBytes(keyInfo.ACASKey); Log.WriteInfoLog("Write ACAC Key..."); if (SerialCMD.SetACASKey(TVPort, ACASKeyData, out result, out data, out error, SerailDelay)) { SetsuccessStatus(m_writeACASKey); keycontent += "ACACKey=" + keyInfo.ACASKey + "&"; Log.WriteInfoLog("Check ACAS Key..."); if (writeCheckNow.ACASKeyCheckcheck ? SerialCMD.CheckACASKey(TVPort, out result, out data, out error, SerailDelay) : true) { SetsuccessStatus(m_checkACASKey); Log.WriteInfoLog("Read ACAS Key..."); if (readCheckNow.ACASIDReadcheck ? SerialCMD.ReadACASKey(TVPort, out result, out data, out error, SerailDelay) : true) { if (readCheckNow.ACASIDReadcheck) { if (SerialInit.BytesCompare_Base64(data, ACASKeyData)) { SetsuccessStatus(m_readACASKey); } else { SetfailStatus(m_readACASKey); Log.WriteErrorLog(SN + " contrast ACAS Key fail"); MessageBox.Show(LResource.ContrastEDIDModelNameError); goto end; } } } else { SetfailStatus(m_readACASKey); Log.WriteErrorLog(SN + " read ACAS Key fail"); MessageBox.Show(LResource.ReadEDIDModelNameError); goto end; } } else { SetfailStatus(m_checkACASKey); Log.WriteErrorLog(SN + " Check ACAS Key fail"); MessageBox.Show(LResource.WriteEDIDModelNameError); goto end; } } else { SetfailStatus(m_writeACASKey); Log.WriteErrorLog(SN + " Write ACAS Key fail"); MessageBox.Show(LResource.WriteEDIDModelNameError); goto end; } } //Project ID 抄写检查 if (ProjectIDNote.Text != LResource.SkipCovering) { Log.WriteInfoLog("Write projectID..."); keycontent += "projectid=" + ProjectIDText.Text + "&"; if (ProjectIDNote.Text== LResource.Covering|| ProjectIDNote.Text == LResource.SkipReadCheck) { SetspecificText(ProjectIDNote, ProjectIDNote.Text, Color.FromArgb(128, 255, 128)); byte[] param = CommonMethod.InttoBytelist(Convert.ToInt32(ProjectIDText.Text)); Log.WriteInfoLog("Set projectID..."); if (SerialCMD.SetProjectId(TVPort, param, out result, out data, out error, SerailDelay)) { if (ProjectIDNote.Text != LResource.SkipReadCheck) { Log.WriteInfoLog("Check projectID..."); if(writeDoneNow.PIDWriteDelay>0) { Thread.Sleep(writeDoneNow.PIDWriteDelay);//MS6586切完PID需要强制等待3s } if (SerialCMD.GetProjectID(TVPort, out result, out data, out error, SerailDelay)) { int readpid2 = CommonMethod.BytelisttoInt(data); if (readpid2.ToString() != ProjectIDText.Text) { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " read project id:" + readpid2.ToString() + "different from written: " + ProjectIDText.Text + " error"); MessageBox.Show(LResource.ContrastPIDError); goto end; } else { SetcolorStatus(ProjectIDText, Color.Green); } } else { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " get project id error"); MessageBox.Show(LResource.GetPIDError); goto end; } } else { Log.WriteInfoLog("Skip check projectID..."); } } else { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " set project id error"); MessageBox.Show(LResource.SetPIDError); goto end; } } else { if (SerialCMD.GetProjectID(TVPort, out result, out data, out error, SerailDelay)) { int readpid = CommonMethod.BytelisttoInt(data); if (readpid.ToString() != ProjectIDText.Text) { MessageBoxButtons messButton = MessageBoxButtons.YesNoCancel; DialogResult dr = MessageBox.Show(LResource.MainboardPID + readpid.ToString() + LResource.DifferentFromSetting + "\r\n" + LResource.CoveringPID, LResource.Error, messButton); if (dr == DialogResult.Yes) { SetspecificText(ProjectIDNote, LResource.Covering, Color.FromArgb(128, 255, 128)); byte[] param = CommonMethod.InttoBytelist(Convert.ToInt32(ProjectIDText.Text)); if (SerialCMD.SetProjectId(TVPort, param, out result, out data, out error, SerailDelay)) { if (writeDoneNow.PIDWriteDelay > 0) { Thread.Sleep(writeDoneNow.PIDWriteDelay);//MS6586切完PID需要强制等待3s } Log.WriteInfoLog("Check projectID..."); if (SerialCMD.GetProjectID(TVPort, out result, out data, out error, SerailDelay)) { int readpid2 = CommonMethod.BytelisttoInt(data); if (readpid2.ToString() != ProjectIDText.Text) { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " read project id:" + readpid2.ToString() + "different from written: " + ProjectIDText.Text + " error"); MessageBox.Show(LResource.ContrastPIDError); goto end; } else { SetcolorStatus(ProjectIDText, Color.Green); } } else { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " get project id error"); MessageBox.Show(LResource.GetPIDError); goto end; } } else { SetcolorStatus(ProjectIDText, Color.Red); Log.WriteErrorLog(SN + " set project id error"); MessageBox.Show(LResource.SetPIDError); goto end; } } else if (dr == DialogResult.No) { SetspecificText(ProjectIDNote, LResource.SkipCovering, Color.Yellow); SetcolorStatus(ProjectIDText, Color.Yellow); } else { SetspecificText(ProjectIDNote, readpid.ToString(), Color.Red); SetcolorStatus(ProjectIDText, Color.Red); goto end; } } else { SetcolorStatus(ProjectIDText, Color.FromArgb(128, 255, 128)); } } else { Log.WriteErrorLog(SN + " Read ProjectID fail"); MessageBox.Show(LResource.GetPIDError); goto end; } } } //检查ClientType if (ClientTypeNote.Text != LResource.SkipChecking) { Log.WriteInfoLog("Read ClientType..."); if (SerialCMD.GetClientType(TVPort, out result, out data, out error, SerailDelay)) { string ctype = Encoding.ASCII.GetString(data); if (ctype != ClientTypeText.Text) { MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show(LResource.MainboardCType + ctype + LResource.differentfromserver + ClientTypeText.Text + "\r\n" + LResource.SkipCTypeChecking, LResource.Error, messButton); if (dr == DialogResult.OK) { SetspecificText(ClientTypeNote, LResource.SkipChecking, Color.Yellow); SetcolorStatus(ClientTypeText, Color.Yellow); } else { SetspecificText(ClientTypeNote, ctype, Color.Red); SetcolorStatus(ClientTypeText, Color.Red); goto end; } } else { SetcolorStatus(ClientTypeText, Color.FromArgb(128, 255, 128)); } } else { Log.WriteErrorLog(SN + " Read ClientType fail"); MessageBox.Show(LResource.ReadCTypeError); goto end; } } //白平衡初始化 if (FunctionSettingNow.WBInit) { Log.WriteInfoLog("WhiteBalance init..."); if (SerialCMD.WBInit(TVPort, out result, out data, out error, SerailDelay)) { } else { Log.WriteErrorLog(SN + " WhiteBalance ini fail"); MessageBox.Show(LResource.WBInitError); goto end; } } //白平衡赋值 if (FunctionSettingNow.WriteWB) { Log.WriteInfoLog("Set normal RGB..."); if (SerialCMD.SetWBNormal(TVPort, FunctionSettingNow.NormalRGB, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Set cool RGB..."); if (SerialCMD.SetWBCool(TVPort, FunctionSettingNow.CoolRGB, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Set warm RGB..."); if (SerialCMD.SetWBWarm(TVPort, FunctionSettingNow.WarmRGB, out result, out data, out error, SerailDelay)) { SetcolorStatus(WBPathText, Color.FromArgb(128, 255, 128)); } else { Log.WriteErrorLog(SN + " Set warm RGB fail"); MessageBox.Show(LResource.SetWarmError); goto end; } keycontent += "wbNormal=" + FunctionSettingNow.NormalRGB[0].ToString() + ":" + FunctionSettingNow.NormalRGB[1].ToString() + ":" + FunctionSettingNow.NormalRGB[2].ToString() + "&" + "wbCool=" + FunctionSettingNow.CoolRGB[0].ToString() + ":" + FunctionSettingNow.CoolRGB[1].ToString() + ":" + FunctionSettingNow.CoolRGB[2].ToString() + "&" + "wbWarm=" + FunctionSettingNow.WarmRGB[0].ToString() + ":" + FunctionSettingNow.WarmRGB[1].ToString() + ":" + FunctionSettingNow.WarmRGB[2].ToString() + "&"; } else { Log.WriteErrorLog(SN + " Set cool RGB fail"); MessageBox.Show(LResource.SetCoolError); goto end; } } else { Log.WriteErrorLog(SN + " Set normal RGB fail"); MessageBox.Show(LResource.SetNormalError); goto end; } } //Roku客户服务信息抄写 if (midListNow.rokuCustomer!=null) { string brand = midListNow.rokuCustomer.brand; Log.WriteInfoLog("Write Roku brand..."); if (SerialCMD.SetROKUBrand(TVPort, Encoding.ASCII.GetBytes(brand), out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Check Roku brand..."); if (SerialCMD.CheckROKUBrand(TVPort, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Read Roku brand..."); if (SerialCMD.GetROKUBrand(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(brand))) { Log.WriteInfoLog("ROKU brand 写入成功:"+ Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuBrandFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuBrandFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuBrandFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuBrandFail); goto end; } string model = midListNow.rokuCustomer.oemmodel; Log.WriteInfoLog("Write Roku model..."); if (SerialCMD.SetModelName(TVPort, Encoding.ASCII.GetBytes(model), out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Check Roku model..."); if (SerialCMD.CheckModelName(TVPort, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Read Roku model..."); if (SerialCMD.GetModelName(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(model))) { Log.WriteInfoLog("ROKU model 写入成功:" + Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuModelFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuModelFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuModelFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuModelFail); goto end; } string[] dateInit = midListNow.rokuCustomer.productiondate.Split('-'); byte[] productdate = new byte[3] { Convert.ToByte(dateInit[0]), Convert.ToByte(dateInit[1]), Convert.ToByte(dateInit[2]) }; Log.WriteInfoLog("Write Roku production date..."); if (SerialCMD.SetROKUProductionDate(TVPort, productdate, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Check Roku production date..."); if (SerialCMD.CheckROKUProductionDate(TVPort, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Read Roku production date..."); if (SerialCMD.GetROKUProductionDate(TVPort, out result, out data, out error, SerailDelay)) { string date = "20" + productdate[0].ToString() + "." + productdate[1].ToString() + ".WW" + productdate[2].ToString(); if (Encoding.ASCII.GetString(data)== date) { Log.WriteInfoLog("ROKU production date 写入成功:" + Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuDateFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuDateFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuDateFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuDateFail); goto end; } string region = midListNow.rokuCustomer.region; Log.WriteInfoLog("Write Roku region..."); if (SerialCMD.SetROKURegion(TVPort, Encoding.ASCII.GetBytes(region), out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Check Roku region..."); if (SerialCMD.CheckROKURegion(TVPort, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Read Roku region..."); if (SerialCMD.GetROKURegion(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(region))) { Log.WriteInfoLog("ROKU region 写入成功:" + Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuRegionFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuRegionFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuRegionFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuRegionFail); 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)) { Log.WriteInfoLog("Check Roku phone..."); if (SerialCMD.CheckROKUSupportPhone(TVPort, out result, out data, out error, SerailDelay)) { 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 { MessageBox.Show(LResource.CompareRokuPhoneFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuPhoneFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuPhoneFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuPhoneFail); 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)) { if (SerialInit.BytesCompare_Base64(data, Encoding.ASCII.GetBytes(url))) { Log.WriteInfoLog("ROKU url 写入成功:" + Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuUrlFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuUrlFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuUrlFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuUrlFail); goto end; } if (midListNow.rokuCustomer.remotetype.Length > 0 && midListNow.rokuCustomer.remotetype != "null") { byte[] remotetype = new byte[1] { Convert.ToByte(midListNow.rokuCustomer.remotetype) }; Log.WriteInfoLog("Write Roku remotetype..."); if (SerialCMD.SetROKURemoteType(TVPort, remotetype, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Check Roku remotetype..."); if (SerialCMD.CheckROKURemoteType(TVPort, out result, out data, out error, SerailDelay)) { Log.WriteInfoLog("Read Roku remotetype..."); if (SerialCMD.GetROKURemoteType(TVPort, out result, out data, out error, SerailDelay)) { if (SerialInit.BytesCompare_Base64(data, remotetype)) { Log.WriteInfoLog("ROKU remotetype 写入成功:" + Encoding.ASCII.GetString(data)); } else { MessageBox.Show(LResource.CompareRokuRemoteTypeFail); goto end; } } else { MessageBox.Show(LResource.ReadRokuRemoteTypeFail); goto end; } } else { MessageBox.Show(LResource.CheckRokuRemoteTypeFail); goto end; } } else { MessageBox.Show(LResource.WriteRokuRemoteTypeFail); goto end; } } SetcolorStatus(ProductMsg_Text, Color.FromArgb(128, 255, 128)); } keycontent += "toolVersion=" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "&"; //自定义指令发送 if (FunctionSettingNow.CustomCMD != null) { if (FunctionSettingNow.CustomCMD.Count > 0) { foreach (string cmd in FunctionSettingNow.CustomCMD.Values) { byte[] Cmddata = SerialInit.HexToByte(cmd); TVPort.Write(Cmddata, 0, Cmddata.Count()); Thread.Sleep(500); } } } //数据上传 if (midListNow.host == "LocalPC"&&!preloadNow) { if (GetLocalKeyCount.DeleteLocalKeys(keypath, keyStream, keyReader)) { TestResult = true; UploadCopyCount(); LocalTxtRecord.LocalRecord(keycontent + "sversionid=" + localmidList.version + "&clienttype=" + localmidList.clienttype + "&ordernum=" + orderNow + "\r\n", orderNow); } else { MessageBox.Show("Fail to delete local keys!"); goto end; } } else if (preloadNow) { //更新DB抄写状态 if (SQLiteHelper.UpdateCopyStatus(localDBNow, SN, out string copydate)) { UploadCopyCount(); TestResult = true; } else { Log.WriteErrorLog(SN + " update copy record fail"); goto end; } //上传抄写状态 if (midListNow.host != "LocalPC") CommonMethod.UploadPreloadCopyResult(MidAddressNow.host, copydate, SN, localDBNow, errorDBNow, false, "", FunctionSettingNow.ReportTimeOut); } else if (!CommonMethod.HTTPChecker(midListNow.host)) { Log.WriteGetKeyLog("Order:" + orderNow + " host is null,scanning sn:" + SN); TestResult = true; UploadCopyCount(); UpdateKeys(midListNow.keytype, false); } else { if (WriteDID.Checked) { if (CommonMethod.UploadCopyResult(keycontent + "sversionid=" + midListNow.version + "&clienttype=" + midListNow.clienttype + "&ordernum=" + orderNow, midListNow.host + "/report.do?", errorDBNow, orderNow, false, "", FunctionSettingNow.ReportTimeOut)) TestResult = true; else { TestResult = false; UploadCopyCount(); UpdateKeys(midListNow.keytype, false); goto end; } } else { if(SN.Trim().Length>0) { keycontent += "nodid=true&"; if (CommonMethod.UploadCopyResult(keycontent + "sversionid=" + midListNow.version + "&clienttype=" + midListNow.clienttype + "&ordernum=" + orderNow, midListNow.host + "/report.do?", errorDBNow, orderNow, false, "", FunctionSettingNow.ReportTimeOut)) TestResult = true; else { TestResult = false; UploadCopyCount(); UpdateKeys(midListNow.keytype, false); goto end; } } else { LocalTxtRecord.LocalRecord(midListNow.host + "/report.do?\r\n" + keycontent + "sversionid=" + midListNow.version + "&clienttype=" + midListNow.clienttype + "&ordernum=" + orderNow + "\r\n\r\n", orderNow); if(FunctionSettingNow.AllowNoScanning) { TestResult = true; } else { MessageBox.Show("You must scan to start the burning!"); TestResult = false; } } } UploadCopyCount(); UpdateKeys(midListNow.keytype, false); } if ( FunctionSettingNow.ExportSNACASID ) { SerialCMD.ReadJapaneseACASID(TVPort, out result, out data, out error, SerailDelay); CommonMethod.ExportSNACASID(orderNow, SN, Encoding.ASCII.GetString(data)); } SetsuccessStatus(ResultStatus); Thread.Sleep(FunctionSettingNow.Wait_after_completion); end: if(!TestResult) { SetfailStatus(ResultStatus); if(midListNow.host == "LocalPC" && !preloadNow) { GetLocalKeyCount.UnlockLocalKeys(keypath, keyStream, keyReader); } // 是否启用G客户防呆措施; if ( FunctionSettingNow.UsingGFoolProofing ) { StringBuilder strValue = new StringBuilder(256); // 获取上一次的SN号; CommonMethod.GetProfileString("MOKAFactoryTools", "LastGSN", "", strValue, 256); if (strValue.ToString().Equals(SN, StringComparison.OrdinalIgnoreCase)) { int lastCount = 0; CommonMethod.GetProfileString("MOKAFactoryTools", "GFailCount", "0", strValue, 256); int.TryParse(strValue.ToString(), out lastCount); CommonMethod.WriteProfileString("MOKAFactoryTools", "GFailCount", (++lastCount).ToString()); } } } if (midListNow.host == "LocalPC" && !preloadNow) { GetLocalKeysCount(); } timer1.Stop(); usingTime = 0; EnableText(SNText); EnableButton(BtnClickstart); SN = ""; } /// /// 显示白平衡配置 /// /// /// private void OnBtnWBView(object sender, EventArgs e) { SNText.Focus(); if (FunctionSettingNow.WriteWB) { MessageBox.Show("NormalR:" + FunctionSettingNow.NormalRGB[0] + "\r\nNormalG:" + FunctionSettingNow.NormalRGB[1] + "\r\nNormalB:" + FunctionSettingNow.NormalRGB[2] + "\r\nCoolR:" + FunctionSettingNow.CoolRGB[0] + "\r\nCoolG:" + FunctionSettingNow.CoolRGB[1] + "\r\nCoolB:" + FunctionSettingNow.CoolRGB[2] + "\r\nWarmR:" + FunctionSettingNow.WarmRGB[0] + "\r\nWarmG:" + FunctionSettingNow.WarmRGB[1] + "\r\nWarmB:" + FunctionSettingNow.WarmRGB[2]); } else { MessageBox.Show(LResource.WBNoSet); } } /// /// 更新key的状态 /// /// GetMIDInfo的keytype字典 /// public bool UpdateKeys(Dictionary keys,bool autokey) { GetOrderRemainKeyCount(orderNow); if (keys.ContainsKey("DeviceID")) { if(writeDoneNow.DIDWrite_YesNo) SetCheckboxStatus(WriteDID, true); UpdateKeyCount("DeviceID", midListNow.clienttype, autokey); } if (keys.ContainsKey("MAC")) { if (writeDoneNow.MacWrite_YesNo) SetCheckboxStatus(WriteMac, true); UpdateKeyCount("MAC", keys["MAC"], autokey); } if (keys.ContainsKey("HDCP_KEY")) { if (writeDoneNow.HDCPWrite_YesNo) SetCheckboxStatus(WriteHDCP, true); UpdateKeyCount("HDCP_KEY", keys["HDCP_KEY"], autokey); } if (keys.ContainsKey("CI_PLUS_KEY")) { if (writeDoneNow.CI_plusWrite_YesNo) SetCheckboxStatus(WriteCiplus, true); UpdateKeyCount("CI_PLUS_KEY", keys["CI_PLUS_KEY"], autokey); } if (keys.ContainsKey("WiDi")) { if (writeDoneNow.WiDiWrite_YesNo) SetCheckboxStatus(WriteWiDi, true); UpdateKeyCount("WiDi", keys["WiDi"], autokey); } if (keys.ContainsKey("Widevine_KEY")) { if (writeDoneNow.WidevineWrite_YesNo) SetCheckboxStatus(WriteWidevine, true); UpdateKeyCount("Widevine_KEY", keys["Widevine_KEY"], autokey); } if (keys.ContainsKey("HDCP2.2_KEY")) { if (writeDoneNow.HDCP22Write_YesNo) SetCheckboxStatus(WriteHDCP22, true); UpdateKeyCount("HDCP2.2_KEY", keys["HDCP2.2_KEY"], autokey); } if (keys.ContainsKey("NETFILX_ESN")) { if (writeDoneNow.ESNWrite_YesNo) SetCheckboxStatus(WriteESN, true); UpdateKeyCount("NETFILX_ESN", keys["NETFILX_ESN"], autokey); } if (keys.ContainsKey("Attestation_key")) { if (writeDoneNow.AttestationWrite_YesNo) SetCheckboxStatus(WriteAttestation, true); UpdateKeyCount("Attestation_key", keys["Attestation_key"], autokey); } if (keys.ContainsKey("MGK_KEY")) { if (writeDoneNow.MGKWrite_YesNo) SetCheckboxStatus(WriteMGK, true); UpdateKeyCount("MGK_KEY", keys["MGK_KEY"], autokey); } if (keys.ContainsKey("Fairplay_KEY")) { if (writeDoneNow.FairplayWrite_YesNo) SetCheckboxStatus(WriteFairplay, true); UpdateKeyCount("Fairplay_KEY", keys["Fairplay_KEY"], autokey); } if (keys.ContainsKey("ECP_KEY")) { if (writeDoneNow.ECPWrite_YesNo) SetCheckboxStatus(WriteECP, true); UpdateKeyCount("ECP_KEY", keys["ECP_KEY"], autokey); } if (keys.ContainsKey("WiFi_MAC")) { if (writeDoneNow.WifiMacWrite_YesNo) SetCheckboxStatus(WriteWifiMac, true); UpdateKeyCount("WiFi_MAC", keys["WiFi_MAC"], autokey); } if (keys.ContainsKey("BT_MAC")) { if (writeDoneNow.BTMacWrite_YesNo) SetCheckboxStatus(WriteBTMac, true); UpdateKeyCount("BT_MAC", keys["BT_MAC"], autokey); } if (keys.ContainsKey("LEK")) { if (writeDoneNow.LEKWrite_YesNo) SetCheckboxStatus(WriteLEK, true); UpdateKeyCount("LEK", keys["LEK"], false); } if (keys.ContainsKey("PEK")) { if (writeDoneNow.PEKWrite_YesNo) SetCheckboxStatus(WritePEK, true); UpdateKeyCount("PEK", keys["PEK"], false); } if (keys.ContainsKey("PlayReady_key")) { if (writeDoneNow.PlayreadyWrite_YesNo) SetCheckboxStatus(WritePlayready, true); UpdateKeyCount("PlayReady_key", keys["PlayReady_key"], false); } if (keys.ContainsKey("Hashkey")) { if (writeDoneNow.HashWrite_YesNo) SetCheckboxStatus(WriteHash, true); UpdateKeyCount("Hashkey", keys["Hashkey"], false); } if (keys.ContainsKey("YouTube_KEY")) { if (writeDoneNow.YouTubeWrite_YesNo) SetCheckboxStatus(WriteYouTube, true); UpdateKeyCount("YouTube_KEY", keys["YouTube_KEY"], false); } if (keys.ContainsKey("DSN")) { if (writeDoneNow.DSNWrite_YesNo) SetCheckboxStatus(WriteDSN, true); } if(keys.ContainsKey("edid_pid")) { if (writeDoneNow.EDIDPIDWrite_YesNo) SetCheckboxStatus(WriteEDIDPID, true); } if (keys.ContainsKey("edid_model_name")) { if (writeDoneNow.EDIDModeNameWrite_YesNo) SetCheckboxStatus(WriteEDIDName, true); } if (keys.ContainsKey("MOKA_RT2851M_IR")) { if(writeDoneNow.ACASKeyWrite_YesNo) SetCheckboxStatus(WriteACASKey, true); UpdateKeyCount("MOKA_RT2851M_IR", keys["MOKA_RT2851M_IR"], false); } return true; } /// /// 获取key数量,更新Keycount /// /// key种类 /// key的具体类型 /// public bool UpdateKeyCount(string key, string keytype, bool autokey) { string url = midListNow.host; string url1; string count; string code; string desc; HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { Encoding = Encoding.Default, Method = "post", ContentType = "application/x-www-form-urlencoded" }; switch (key) { case "DeviceID": { url1 = url + "/statdeviceid.do?"; item.URL = url1; item.Postdata = "devicetype=tcl_unknown_model"; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetDeviceID count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(DIDCount, count, 2); else SetKeyCountStatus(DIDCount, count, 0); if (autokey && WriteDID.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, "tcl_unknown_model"); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, "tcl_unknown_model"); } } else { CommonMethod.ReportErrormsg("Fail to parse DID count", desc + "\r\n"+ result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(DIDCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get DID count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(DIDCount, result.StatusDescription, 1); return false; } break; } case "MAC": { url1 = url + "/statmac.do?"; item.URL = url1; item.Postdata = "typeString=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetMac count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(MacCount, count, 2); else SetKeyCountStatus(MacCount, count, 0); if (autokey && WriteMac.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse Mac count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(MacCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get Mac count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(MacCount, result.StatusDescription, 1); return false; } break; } case "HDCP_KEY": { url1 = url + "/stathdcpkey.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetHDCP_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(HDCPCount, count, 2); else SetKeyCountStatus(HDCPCount, count, 0); if (autokey && WriteHDCP.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse hdcp count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HDCPCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get hdcp count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HDCPCount, result.StatusDescription, 1); return false; } break; } case "CI_PLUS_KEY": { url1 = url + "/statcikey.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetCI_PLUS_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(CICount, count, 2); else SetKeyCountStatus(CICount, count, 0); if (autokey && WriteCiplus.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parses ciplus count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(CICount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get ciplus count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(CICount, result.StatusDescription, 1); return false; } break; } case "WiDi": { url1 = url + "/statwidi.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetWiDi count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(WidiCount, count, 2); else SetKeyCountStatus(WidiCount, count, 0); if (autokey && WriteWiDi.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse widi count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WidiCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get widi count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WidiCount, result.StatusDescription, 1); return false; } break; } case "Widevine_KEY": { url1 = url + "/statWidevineAndAttestation.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetWidevine_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(WideVineCount, count, 2); else SetKeyCountStatus(WideVineCount, count, 0); if (autokey && WriteWidevine.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse widevine count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WideVineCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get widevine count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WideVineCount, result.StatusDescription, 1); return false; } break; } case "HDCP2.2_KEY": { url1 = url + "/stathdcpkey2.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetHDCP2.2_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(HDCP22Count, count, 2); else SetKeyCountStatus(HDCP22Count, count, 0); if (autokey && WriteHDCP22.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse hdcp22 count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HDCP22Count, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get hdcp22 count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HDCP22Count, result.StatusDescription, 1); return false; } break; } case "NETFILX_ESN": { url1 = url + "/statnetfilxesn.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetNETFILX_ESN count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(ESNCount, count, 2); else SetKeyCountStatus(ESNCount, count, 0); if (autokey && WriteESN.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse esn count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ESNCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get esn count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ESNCount, result.StatusDescription, 1); return false; } break; } case "Attestation_key": { url1 = url + "/statWidevineAndAttestation.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetAttestation_key count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(AttestationCount, count, 2); else SetKeyCountStatus(AttestationCount, count, 0); if (autokey && WriteAttestation.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parses attestation count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(AttestationCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get ciplus count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(AttestationCount, result.StatusDescription, 1); return false; } break; } case "MGK_KEY": { url1 = url + "/statmgk.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetMGK count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(MGKCount, count, 2); else SetKeyCountStatus(MGKCount, count, 0); if (autokey && WriteMGK.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse MGK count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(MGKCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get MGK count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(MGKCount, result.StatusDescription, 1); return false; } break; } case "Fairplay_KEY": { url1 = url + "/statfairplay.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetFairplay_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(FairplayCount, count, 2); else SetKeyCountStatus(FairplayCount, count, 0); if (autokey && WriteFairplay.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse Fairplay count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(FairplayCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get Fairplay count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(FairplayCount, result.StatusDescription, 1); return false; } break; } case "ECP_KEY": { url1 = url + "/statecp.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetECP_KEY count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(ECPCount, count, 2); else SetKeyCountStatus(ECPCount, count, 0); if (autokey && WriteECP.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse ECP count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ECPCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get ECP count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ECPCount, result.StatusDescription, 1); return false; } break; } case "WiFi_MAC": { url1 = url + "/statmac.do?"; item.URL = url1; item.Postdata = "typeString=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetWifiMac count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(WifiMacCount, count, 2); else SetKeyCountStatus(WifiMacCount, count, 0); if (autokey && WriteWifiMac.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse WifiMac count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WifiMacCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get WifiMac count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(WifiMacCount, result.StatusDescription, 1); return false; } break; } case "BT_MAC": { url1 = url + "/statmac.do?"; item.URL = url1; item.Postdata = "typeString=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetBTMac count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(BTMacCount, count, 2); else SetKeyCountStatus(BTMacCount, count, 0); if (autokey && WriteBTMac.Checked) { int keycount = Convert.ToInt32(count.Replace(",", "")); if (availableCount != "unknow") { if (Convert.ToInt32(availableCount) > keycount) AutoKeyRequire(this.Handle, key, keytype); else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } else if (keycount < 500) AutoKeyRequire(this.Handle, key, keytype); } } else { CommonMethod.ReportErrormsg("Fail to parse BTMac count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(BTMacCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get BTMac count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(BTMacCount, result.StatusDescription, 1); return false; } break; } case "LEK": { url1 = url + "/statlek.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetLEK count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(LEKCount, count, 2); else SetKeyCountStatus(LEKCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse LEK count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(LEKCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get LEK count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(LEKCount, result.StatusDescription, 1); return false; } break; } case "PEK": { url1 = url + "/statpek.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetPEK count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(PEKCount, count, 2); else SetKeyCountStatus(PEKCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse PEK count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(PEKCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get PEK count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(PEKCount, result.StatusDescription, 1); return false; } break; } case "PlayReady_key": { url1 = url + "/statplayready.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetPlayReady_key count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(PlayreadyCount, count, 2); else SetKeyCountStatus(PlayreadyCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse PlayReady_key count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(PlayreadyCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get PlayReady_key count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(PlayreadyCount, result.StatusDescription, 1); return false; } break; } case "Hashkey": { url1 = url + "/stathash.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetHashkey count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(HashCount, count, 2); else SetKeyCountStatus(HashCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse Hashkey count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HashCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get Hashkey count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(HashCount, result.StatusDescription, 1); return false; } break; } case "YouTube_KEY": { url1 = url + "/statYoutubeKey.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetYoutubehkey count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(YouTubeCount, count, 2); else SetKeyCountStatus(YouTubeCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse Youtube key count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(YouTubeCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get Youtube key count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(YouTubeCount, result.StatusDescription, 1); return false; } break; } case "MOKA_RT2851M_IR": // 获取ACAS KEY数量; { url1 = url + "/statAcasKey.do?"; item.URL = url1; item.Postdata = "type=" + keytype; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetACASkey count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { if (count == "0") SetKeyCountStatus(ACASKeyCount, count, 2); else SetKeyCountStatus(ACASKeyCount, count, 0); } else { CommonMethod.ReportErrormsg("Fail to parse ACAS key count", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ACASKeyCount, code + "Error", 1); } } else { CommonMethod.ReportErrormsg("Fail to get ACAS key count", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); SetKeyCountStatus(ACASKeyCount, result.StatusDescription, 1); return false; } break; } default: { break; } } return true; } /// /// 获取订单可用key余量 /// /// 订单号 /// public bool GetOrderRemainKeyCount(string order) { string url = midListNow.host; string url1; string count; string code; string desc; if (!CommonMethod.HTTPChecker(url)) return false; HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { Encoding = Encoding.Default, Method = "post", ContentType = "application/x-www-form-urlencoded", Timeout = 3000 }; url1 = url + "/getAvailableKeyCount.do?"; item.URL = url1; item.Postdata = "ordernum="+ order; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { Log.WriteGetKeyLog("\r\nGetOrderRemainKeyCount count:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html); if (Xmlconfig.KeyCountXml(result.Html, "response", "count", out code, out desc, out count)) { availableCount = count.Replace(",",""); } else { availableCount = "unknow"; CommonMethod.ReportErrormsg("Fail to parse GetOrderRemainKeyCount", desc + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); } } else { availableCount = "unknow"; CommonMethod.ReportErrormsg("Fail to get GetOrderRemainKeyCount", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress: " + item.URL + "\r\nPostdata: " + item.Postdata, errorDBNow); return false; } return true; } /// /// 按键触发在线抄写 /// 注意:此按键的作用是给不需要输入SN号的工厂使用; /// /// /// private void OnBtnClickStart(object sender, EventArgs e) { SN = ""; // SN置为空,用于不需要扫码SN的某些工厂; keyInfo = new KeyInfo(); if (preloadNow) { MessageBox.Show(LResource.PreloadError,LResource.Error); return; } SetInitialStatus(); BtnClickstart.Enabled = false; SNText.Enabled = false; Onlinemode(); } /// /// 在线获取key的方式抄写 /// 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); bool preloadresult = false; preloadresult = true; timer1.Start(); UpdateKeys(midListNow.keytype,true); WritekeyThread = new Thread(Writekey); WritekeyThread.Start(); if (!preloadresult) { SNText.Enabled = true; } } /// /// 更新订单抄写数量 /// /// public bool UploadCopyCount() { return (SQLiteHelper.UpdateProductionNum(errorDBNow,orderNow)); } /// /// 获取定制化抄写信息 /// /// /// 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); else MessageBox.Show("null"); } /// /// 获取本地key数量 /// public void GetLocalKeysCount() { int didnum; if(GetLocalKeyCount.GetLocalDidCount(orderNow, out didnum,ref localmidList,errorDBNow)) { SetCheckboxStatus(WriteDID, true); if (didnum != -1) SetKeyCountStatus(DIDCount, didnum.ToString(), 0); else SetKeyCountStatus(DIDCount, "Read error", 1); } int macnum; if (GetLocalKeyCount.GetLocalMacCount(orderNow, out macnum, ref localmidList, errorDBNow)) { SetCheckboxStatus(WriteMac, true); if (macnum != -1) SetKeyCountStatus(MacCount, macnum.ToString(), 0); else SetKeyCountStatus(MacCount, "Read error", 1); } int hdcpnum; if (GetLocalKeyCount.GetLocalHDCPKEYCount(orderNow, out hdcpnum)) { SetCheckboxStatus(WriteHDCP, true); if (hdcpnum != -1) SetKeyCountStatus(HDCPCount, hdcpnum.ToString(), 0); else SetKeyCountStatus(HDCPCount, "Read error", 1); } int widinum; if (GetLocalKeyCount.GetLocalWiDiCount(orderNow, out widinum)) { SetCheckboxStatus(WriteWiDi, true); if (widinum != -1) SetKeyCountStatus(WidiCount, widinum.ToString(), 0); else SetKeyCountStatus(WidiCount, "Read error", 1); } int hdcp22num; if (GetLocalKeyCount.GetLocalHDCPKEY22Count(orderNow, out hdcp22num)) { SetCheckboxStatus(WriteHDCP22, true); if (hdcp22num != -1) SetKeyCountStatus(HDCP22Count, hdcp22num.ToString(), 0); else SetKeyCountStatus(HDCP22Count, "Read error", 1); } int esnnum; if (GetLocalKeyCount.GetLocalESNCount(orderNow, out esnnum)) { SetCheckboxStatus(WriteESN, true); if (esnnum != -1) SetKeyCountStatus(ESNCount, esnnum.ToString(), 0); else SetKeyCountStatus(ESNCount, "Read error", 1); } int widevinenum; if (GetLocalKeyCount.GetLocalWidevineCount(orderNow, out widevinenum)) { SetCheckboxStatus(WriteWidevine, true); if (widevinenum != -1) SetKeyCountStatus(WideVineCount, widevinenum.ToString(), 0); else SetKeyCountStatus(WideVineCount, "Read error", 1); } int cinum; if (GetLocalKeyCount.GetLocalCIKEYCount(orderNow, out cinum)) { SetCheckboxStatus(WriteCiplus, true); if (cinum != -1) SetKeyCountStatus(CICount, cinum.ToString(), 0); else SetKeyCountStatus(CICount, "Read error", 1); } int mgknum; if (GetLocalKeyCount.GetLocalMGKCount(orderNow, out mgknum)) { SetCheckboxStatus(WriteMGK, true); if (mgknum != -1) SetKeyCountStatus(MGKCount, mgknum.ToString(), 0); else SetKeyCountStatus(MGKCount, "Read error", 1); } int attestationnum; if (GetLocalKeyCount.GetLocalAttestationCount(orderNow, out attestationnum)) { SetCheckboxStatus(WriteAttestation, true); if (attestationnum != -1) SetKeyCountStatus(AttestationCount, attestationnum.ToString(), 0); else SetKeyCountStatus(AttestationCount, "Read error", 1); } int fairplaynum; if (GetLocalKeyCount.GetLocalFairplayCount(orderNow, out fairplaynum)) { SetCheckboxStatus(WriteFairplay, true); if (fairplaynum != -1) SetKeyCountStatus(FairplayCount, fairplaynum.ToString(), 0); else SetKeyCountStatus(FairplayCount, "Read error", 1); } int leknum; fireTVKey.LEK = GetLocalKeyCount.GetLocalFolderKeyCount(orderNow, "LEK", out leknum); int peknum; fireTVKey.PEK = GetLocalKeyCount.GetLocalFolderKeyCount(orderNow, "PEK", out peknum); int palyreadynum; fireTVKey.Playready = GetLocalKeyCount.GetLocalFolderKeyCount(orderNow, "Playready", out palyreadynum); int hashkeynum; fireTVKey.Hashkey = GetLocalKeyCount.GetLocalFolderKeyCount(orderNow, "Hashkey", out hashkeynum); } /// /// 抄写用时计数 /// /// /// private void timer1_Tick(object sender, EventArgs e) { usingTime += 1; UsingTime_Text.Text = usingTime.ToString(); } /// /// 取消SN扫描框聚焦 /// /// /// private void SNText_DoubleClick(object sender, EventArgs e) { FocusMark = false; this.CaptionBackColorTop = Color.RoyalBlue; this.CaptionBackColorBottom = Color.Cyan; this.Refresh(); } /// /// 强制刷新抄写线程 /// private void OnBtnRefresh(object sender, EventArgs e) { usingTime = 0; EnableText(SNText); EnableButton(BtnClickstart); SN = ""; keyInfo = new KeyInfo(); SetInitialStatus(); if (WritekeyThread != null) { if (WritekeyThread.IsAlive) { WritekeyThread.Abort(); if (timer1.Enabled) { timer1.Stop(); } while (WritekeyThread.ThreadState != ThreadState.Aborted) { Thread.Sleep(100); } } } UsingTime_Text.Text = "0"; GC.Collect(); MessageBox.Show(LResource.RefreshPanel); } /// /// 显示订单key可用余量 /// /// /// private void OrderText_MouseEnter(object sender, EventArgs e) { toolTip1.SetToolTip(OrderText, LResource.AvailableKey + availableCount); } } }