public Builder AddTestDevice(string deviceId) { TestDevices.Add(deviceId); return(this); }
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(); } }