private void OnSynerject()
        {
            List<string> arrays = new List<string>();
            arrays.Add(StaticString.beforeBlank + Database.GetText("Read Trouble Code", "System"));
            arrays.Add(StaticString.beforeBlank + Database.GetText("Clear Trouble Code", "System"));
            arrays.Add(StaticString.beforeBlank + Database.GetText("Read Data Stream", "System"));
            //arrays.Add(StaticString.beforeBlank + Database.GetText("Static Data Stream", "System"));
            if (model != Database.GetText("QM125T-8H", "QingQi"))
                arrays.Add(StaticString.beforeBlank + Database.GetText("Activity Test", "System"));
            arrays.Add(StaticString.beforeBlank + Database.GetText("ECU Version", "System"));

            funcs = new Dictionary<string, ProtocolFunc>();
            funcs.Add(Database.GetText("Read Trouble Code", "System"), () =>
            {
                Intent intent = new Intent(this, typeof(TroubleCodeActivity));
                intent.PutExtra("Model", model);
                StartActivity(intent);
            }
            );

            funcs.Add(Database.GetText("Clear Trouble Code", "System"), () =>
            {
                ProgressDialog status = DialogManager.ShowStatus(this, Database.GetText("Clearing Trouble Code, Please Wait", "System"));
                AlertDialog fatal;

                Task task = Task.Factory.StartNew(() =>
                {
                    if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                    {
                        throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                    }
                    Synerject protocol = new Synerject(Diag.BoxFactory.Instance.Commbox);
                    protocol.ClearTroubleCode();
                });

                task.ContinueWith((t) =>
                {
                    RunOnUiThread(() =>
                    {
                        status.Dismiss();
                        if (t.IsFaulted)
                        {
                            fatal = DialogManager.ShowFatal(this, t.Exception.InnerException.Message, null);
                        }
                        else
                        {
                            fatal = DialogManager.ShowFatal(this, Database.GetText("Clear Trouble Code Finish", "System"), null);
                        }
                    });
                });
            });

            funcs.Add(Database.GetText("Read Data Stream", "System"), () =>
            {
                Intent intent = new Intent(this, typeof(DataStreamSelectedActivity));
                intent.PutExtra("Model", model);
                StartActivity(intent);
            }
            ); // Read Data Stream

            //funcs.Add(StaticString.beforeBlank + Database.GetText("Static Data Stream", "System"), () =>
            //{
            //    Manager.LiveDataVector = Database.GetLiveData("Synerject");
            //    Intent intent = new Intent(this, typeof(StaticDataStreamActivity));
            //    intent.PutExtra("Model", model);
            //    StartActivity(intent);
            //});

            funcs.Add(Database.GetText("Activity Test", "System"), () =>
            {
                Intent intent = new Intent(this, typeof(ActiveTestActivity));
                intent.PutExtra("Model", model);
                StartActivity(intent);
            }
            ); // Activity Test

            funcs.Add(Database.GetText("ECU Version", "System"), () =>
            {
                ProgressDialog status = DialogManager.ShowStatus(this, Database.GetText("Reading ECU Version, Please Wait", "System"));
                AlertDialog fatal;
                string version = "";

                Task task = Task.Factory.StartNew(() =>
                {
                    if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                    {
                        throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                    }
                    Synerject protocol = new Synerject(Diag.BoxFactory.Instance.Commbox);
                    version = protocol.ReadECUVersion();
                });

                task.ContinueWith((t) =>
                {
                    RunOnUiThread(() =>
                    {
                        status.Dismiss();
                        if (t.IsFaulted)
                        {
                            fatal = DialogManager.ShowFatal(this, t.Exception.InnerException.Message, null);
                        }
                        else
                        {
                            fatal = DialogManager.ShowFatal(this, StaticString.beforeBlank + version, null);
                        }
                    });
                });
            }
            ); // ECU Version

            ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, arrays);
            ListView.ItemClick += OnItemClick;
        }
        private void OnSynerjectProtocol()
        {
            status = DialogManager.ShowStatus(this, Database.GetText("Communicating", "System"));
            //Manager.LiveDataVector = Database.GetLiveData("Synerject");
            Manager.LiveDataVector = Database.GetLiveData(model);
            Core.LiveDataVector vec = Manager.LiveDataVector;

            for (int i = 0; i < vec.Count; i++)
            {
                if ((vec[i].ShortName == "N") ||
                    (vec[i].ShortName == "VBK_MMV") ||
                    (vec[i].ShortName == "STATE_EFP") ||
                    (vec[i].ShortName == "TI_LAM_COR") ||
                    (vec[i].ShortName == "IGA_1") ||
                    (vec[i].ShortName == "VLS_UP_1") ||
                    (vec[i].ShortName == "AMP") ||
                    (vec[i].ShortName == "TCO") ||
                    (vec[i].ShortName == "TPS_MTC_1"))
                {
                    vec[i].Enabled = true;
                    vec[i].Showed = true;
                }
                else
                {
                    vec[i].Enabled = false;
                }
            }
            vec.DeployEnabledIndex();
            vec.DeployShowedIndex();
            task = Task.Factory.StartNew(() =>
            {
                if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                {
                    throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                }
                Synerject protocol = new Synerject(Manager.Commbox);
                protocol.StaticDataStream(vec);
            });

            task.ContinueWith((t) =>
            {
                ShowResult(t);
            });
        }
        private void OnSynerjectProtocol()
        {
        //    status = DialogManager.ShowStatus(this, Database.GetText("Communicating"));
        //    Task task = Task.Factory.StartNew(() =>
        //    {
        //        Synerject protocol = new Synerject(Database, ResourceManager.Instance.Commbox);
        //        codes = protocol.ReadTroubleCode();
        //    });

        //    task.ContinueWith(ShowResult);
            string[] arrays = new string[2];
            arrays[0] = StaticString.beforeBlank + Database.GetText("Read Current Trouble Code", "System");
            arrays[1] = StaticString.beforeBlank + Database.GetText("Read History Trouble Code", "System");
            ListView.Adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, arrays);
            ListView.SetSelection(currentIndex);
            funcs = new Dictionary<string, ProtocolFunc>();
            funcs[arrays[0].TrimStart(' ')] = () =>
            {
                status = DialogManager.ShowStatus(this, Database.GetText("Communicating", "System"));
                Task task = Task.Factory.StartNew(() =>
                {
                    if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                    {
                        throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                    }
                    Synerject protocol = new Synerject(Diag.BoxFactory.Instance.Commbox);
                    codes = protocol.ReadTroubleCode(false);
                });

				task.ContinueWith((t) => {ShowResult(t, null);});
            };

            funcs[arrays[1].TrimStart(' ')] = () =>
            {
                status = DialogManager.ShowStatus(this, Database.GetText("Communicating", "System"));

                Task task = Task.Factory.StartNew(() =>
                {
                    if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                    {
                        throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                    }
                    Synerject protocol = new Synerject(Diag.BoxFactory.Instance.Commbox);
                    codes = protocol.ReadTroubleCode(true);
                });

				task.ContinueWith((t) => {ShowResult(t, null);});
            };

            ListView.ItemClick += OnItemClickSynerject;
        }
        private void OnSynerjectProtocol()
        {
            status = DialogManager.ShowStatus(this, Database.GetText("Communicating", "System"));

            task = Task.Factory.StartNew(() =>
            {
                //Manager.LiveDataVector = Database.GetLiveData("Synerject");
                Manager.LiveDataVector = Database.GetLiveData(model);
                Core.LiveDataVector vec = Manager.LiveDataVector;
                for (int i = 0; i < vec.Count; i++)
                {
                    if (model == Database.GetText("QM125T-8H", "QingQi"))
                    {
                        if ((vec[i].ShortName == "CRASH") ||
                            (vec[i].ShortName == "DIST_ACT_MIL") ||
                            (vec[i].ShortName == "ISA_AD_T_DLY") ||
                            (vec[i].ShortName == "ISA_ANG_DUR_MEC") ||
                            (vec[i].ShortName == "ISA_CTL_IS") ||
                            (vec[i].ShortName == "ISC_ISA_AD_MV") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM_ACT") ||
                            (vec[i].ShortName == "LV_IMMO_PROG") ||
                            (vec[i].ShortName == "LV_IMMO_ECU_PROG") ||
                            (vec[i].ShortName == "LV_LOCK_IMOB") ||
                            (vec[i].ShortName == "LV_VIP") ||
                            (vec[i].ShortName == "LV_EOP") ||
                            (vec[i].ShortName == "TCOPWM") ||
                            (vec[i].ShortName == "VS_8") ||
                            (vec[i].ShortName == "V_TPS_1_BAS") ||
                            (vec[i].ShortName == "LV_SAV") ||
                            (vec[i].ShortName == "LV_CUT_OUT"))
                        {
                            vec[i].Enabled = false;
                        }
                    }
                    else if (model == Database.GetText("QM250GY", "QingQi"))
                    {
                        if ((vec[i].ShortName == "CRASH") ||
                            (vec[i].ShortName == "DIST_ACT_MIL") ||
                            (vec[i].ShortName == "ISA_AD_T_DLY") ||
                            (vec[i].ShortName == "ISA_ANG_DUR_MEC") ||
                            (vec[i].ShortName == "ISA_CTL_IS") ||
                            (vec[i].ShortName == "ISC_ISA_AD_MV") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM_ACT") ||
                            (vec[i].ShortName == "LV_IMMO_PROG") ||
                            (vec[i].ShortName == "LV_IMMO_ECU_PROG") ||
                            (vec[i].ShortName == "LV_LOCK_IMOB") ||
                            (vec[i].ShortName == "LV_LSH_UP_1") ||
                            (vec[i].ShortName == "LV_VIP") ||
                            (vec[i].ShortName == "LV_EOP") ||
                            (vec[i].ShortName == "TCOPWM") ||
                            (vec[i].ShortName == "VS_8") ||
                            (vec[i].ShortName == "LV_SAV") ||
                            (vec[i].ShortName == "LV_CUT_OUT"))
                        {
                            vec[i].Enabled = false;
                        }
                    }
                    else if (model == Database.GetText("QM250T", "QingQi"))
                    {
                        if ((vec[i].ShortName == "CRASH") ||
                            (vec[i].ShortName == "DIST_ACT_MIL") ||
                            (vec[i].ShortName == "ISA_AD_T_DLY") ||
                            (vec[i].ShortName == "ISA_ANG_DUR_MEC") ||
                            (vec[i].ShortName == "ISA_CTL_IS") ||
                            (vec[i].ShortName == "ISC_ISA_AD_MV") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM") ||
                            (vec[i].ShortName == "LV_EOL_EFP_PRIM_ACT") ||
                            (vec[i].ShortName == "LV_IMMO_PROG") ||
                            (vec[i].ShortName == "LV_IMMO_ECU_PROG") ||
                            (vec[i].ShortName == "LV_LOCK_IMOB") ||
                            (vec[i].ShortName == "LV_LSH_UP_1") ||
                            (vec[i].ShortName == "LV_VIP") ||
                            (vec[i].ShortName == "LV_EOP") ||
                            (vec[i].ShortName == "VS_8") ||
                            (vec[i].ShortName == "V_TPS_1_BAS") ||
                            (vec[i].ShortName == "LV_SAV") ||
                            (vec[i].ShortName == "LV_CUT_OUT"))
                        {
                            vec[i].Enabled = false;
                        }
                    }
                }
                PreparePage();
                if (!Manager.Commbox.Close() || !Manager.Commbox.Open())
                {
                    throw new IOException(Database.GetText("Open Commbox Fail", "System"));
                }
                synerject = new Synerject(Diag.BoxFactory.Instance.Commbox);
                synerject.ReadDataStream(Manager.LiveDataVector);
            });

            task.ContinueWith(ShowFault);
        }