using AX.DevelopEngine; using SmartX1Demo; using System; using System.Collections; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.Xml; using System.Text; using System.Xml; using UnityEngine; using AX.MessageSystem; using AX.Timer; public class SmartController : MonoSingleton { int[] keyHandles = new int[8]; int[] keyNumber = new int[8]; private int Rtn = 0; SmartApp smart = new SmartApp(); private Timer timer1_quit, timer2_checkExist; string appid = ""; private uint uP1 = 0x987F6BCD, uP2 = 0xE193C5B2, uP3 = 0xD507CC28, uP4 = 0x4B125AF6; public void Init() { StartInit(); } // Use this for initialization void StartInit () { timer1_quit = new Timer(5.0f); timer1_quit.AddTimeOutEvent(() => { //Debug.Log("程序退出!"); QuitApplicationManager.Instance.SureQuit(); }); string original_filepath = Application.dataPath + @"/xml/SmartXProject.xml"; //string encode_filepath = Application.dataPath + @"/xml/enSmartXProject.xml"; //string decode_filepath = Application.dataPath + @"/xml/deSmartXProject.xml"; XmlProcess xmlProcess = new XmlProcess(original_filepath); xmlProcess.SmartControlXML(ref appid); if (string.IsNullOrEmpty(appid)) { QuitApplication(); return; } //检测加密狗是否存在 FindSmartX1(); timer2_checkExist = new Timer(10.0f); timer2_checkExist.AddTimeOutEvent(CheckExist); timer2_checkExist.StartTimerRepeat(); } bool FindSmartX1() { try { Rtn = smart.SmartX1Find(appid, keyHandles, keyNumber); if (Rtn != 0) { Debug.Log("SmartX1Find Error,ErrorCode =" + Rtn.ToString()); QuitApplication(); return false; } Debug.Log("SmartX1Find Successfully"); return true; } catch (Exception ex) { Debug.Log(keyHandles[0]); Debug.Log("异常" + ex.Message); QuitApplication(); return false; } } private void QuitApplication() { timer1_quit.StartTimer(); } private void ReadStorage() { int read_rtn = 0; byte[] pbuffer = new byte[4096]; int open_rtn = smart.SmartX1Open(keyHandles[0], (int)uP1, (int)uP2, (int)uP3, (int)uP4); if (open_rtn == 0)//打开成功 { read_rtn = smart.SmartX1ReadStorage(keyHandles[0], 0, 4096, pbuffer); string data= Encoding.GetEncoding("gb2312").GetString(pbuffer); Debug.Log(data); } } void CheckExist() { try { Rtn = smart.SmartX1CheckExist(keyHandles[0]); if (Rtn != 0) { Debug.Log("SmartX1 not exist!" + Rtn.ToString()); QuitApplication(); return; } Debug.Log("SmartX1Exist!"); return; } catch (Exception ex) { Debug.Log(keyHandles[0]); Debug.Log("异常" + ex.Message); QuitApplication(); return; } } void OnGUI() { if (timer1_quit.IsTimering) { QuitApplicationManager.Instance.SetGuiTip("加密狗验证失败,程序将在 " + timer1_quit.GetRemainingTime() + " 秒后退出!"); } } // Update is called once per frame void Update () { timer1_quit.UpdateTimer(); timer2_checkExist.UpdateTimer(); } }