Exemple #1
0
 public Builder AddTestDevice(string deviceId)
 {
     TestDevices.Add(deviceId);
     return(this);
 }
Exemple #2
0
        internal static void Main(string[] args)
        {
            ZG_CTR_INFO rCtrInfo = new ZG_CTR_INFO();
            int         hr;
            IntPtr      hCvt;
            string      msg;

            //if (TestDeviceAccess(out hCvt, ref rCtrInfo)) return;

            if (TestDevices.TestDeviceAccess(out hCvt, ref rCtrInfo))
            {
                return;                                                       // Тестирование Доступа К Устройству
            }
            try
            {
                m_nCtrMaxEvents = rCtrInfo.nMaxEvents;
                m_fProximity    = ((rCtrInfo.nFlags & ZGIntf.ZG_CTR_F_PROXIMITY) != 0);
                m_nCtrFlags     = rCtrInfo.nFlags;

                msg = string.Format("{0} адрес: {1}, с/н: {2}, v{3}.{4}, Количество событий: {5}, Тип ключей: {6}.",
                                    CtrTypeStrs[(int)rCtrInfo.nType],
                                    rCtrInfo.nAddr,
                                    rCtrInfo.nSn,
                                    rCtrInfo.nVersion & 0xff, (rCtrInfo.nVersion >> 8) & 0xff,
                                    rCtrInfo.nMaxEvents,
                                    KeyModeStrs[m_fProximity ? 1 : 0]);
                Console.WriteLine(msg);
                OnReportHandler(msg);
                m_fCtrNotifyEnabled = false;
                int nWrIdx = 0;
                int nRdIdx = 0;
                hr = ZGIntf.ZG_Ctr_ReadEventIdxs(m_hCtr, ref nWrIdx, ref nRdIdx);
                if (hr < 0)
                {
                    Console.WriteLine("Ошибка ZG_Ctr_ReadEventIdxs ({0}).", hr);
                    Console.ReadLine();
                    return;
                }
                m_nAppReadEventIdx = nWrIdx;
                //Console.WriteLine("-----");
                msg = "-----";
                Console.WriteLine(msg);
                OnReportHandler(msg);
            }
            catch (Exception ex)
            {
                OnReportHandler(ex.Message);
                throw;     // бросаемся дальше
            }



            try
            {
                string s;
                while (true)
                {
                    Console.WriteLine("Введите номер команды:");
                    Console.WriteLine("1 - показать новые события");
                    Console.WriteLine("2 - показать все события ({0})", m_nCtrMaxEvents);
                    Console.WriteLine("3 - {0} уведомления о новых событиях.",
                                      m_fCtrNotifyEnabled ? "Выключить" : "Включить");
                    Console.WriteLine("9 - Восстановить заводские настройки (сброс индексов)");
                    Console.WriteLine("0 - выход");


                    s = Console.ReadLine();
                    bool returnAfterExecute = false;
                    if (args != null && args.Length > 0)
                    {
                        s = args[0];
                        // для примера чисто тебе напишу вариант с одним параметром, ты уже сам сможешь придумать обработку нескольких или вызов методов отдельно от этого шлака
                        returnAfterExecute = true;
                    }
                    //Console.WriteLine();
                    if (s != "")
                    {
                        Console.WriteLine();
                        switch (Convert.ToInt32(s))
                        {
                        case 1:
                            DoShowNewEvents();
                            if (returnAfterExecute)
                            {
                                return;
                            }
                            break;

                        case 2:
                            DoShowAllEvents();
                            if (returnAfterExecute)
                            {
                                return;
                            }
                            break;

                        case 3:
                            // Активация контроля за новыми событиями через отдельный поток
                            ToggleEventNotifyer();
                            if (returnAfterExecute)
                            {
                                return;
                            }
                            break;

                        case 9:
                            DoRestoreFactorySettings();
                            break;

                        case 0:
                            return;

                        default:
                            Console.WriteLine("Неверная команда.");
                            break;
                        }
                    }
                    Console.WriteLine("-----");
                }
            }
            finally
            {
                StopNotifyThread();
                if (m_hCtr != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(m_hCtr);
                }
                if (hCvt != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(hCvt);
                }
                ZGIntf.ZG_Finalyze();
            }
        }