Пример #1
0
        static void ToggleEventNotifyer()
        {
            var msg = "";

            bool fEnable = !m_fCtrNotifyEnabled;
            int  hr;

            if (fEnable)
            {
                if (m_oEvent == null)
                {
                    m_oEvent = new ManualResetEvent(false);
                }
                ZG_CTR_NOTIFY_SETTINGS rNS = new ZG_CTR_NOTIFY_SETTINGS(
                    ZGIntf.ZG_NF_CTR_NEW_EVENT, m_oEvent.SafeWaitHandle, IntPtr.Zero, 0,
                    m_nAppReadEventIdx, 300, 0);
                hr = ZGIntf.ZG_Ctr_SetNotification(m_hCtr, rNS);
                if (hr < 0)
                {
                    //Console.WriteLine("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    msg = string.Format("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    Console.WriteLine(msg);
                    OnReportHandler(msg); // и т.д. по желанию
                    Console.ReadLine();
                    return;
                }
                StartNotifyThread();
            }
            else
            {
                StopNotifyThread();
                hr = ZGIntf.ZG_Ctr_SetNotification(m_hCtr, null);
                if (hr < 0)
                {
                    //Console.WriteLine("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    msg = string.Format("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    Console.WriteLine(msg);
                    OnReportHandler(msg); // и т.д. по желанию
                    Console.ReadLine();
                    return;
                }
            }
            m_fCtrNotifyEnabled = fEnable;
            //Console.WriteLine("Успешно.");
            msg = "Успешно.";
            Console.WriteLine(msg);
            OnReportHandler(msg); // и т.д. по желанию
        }
Пример #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            // Проверяем версию SDK
            UInt32 nVersion = ZGIntf.ZG_GetVersion();

            if ((((nVersion & 0xFF)) != ZGIntf.ZG_SDK_VER_MAJOR) || (((nVersion >> 8) & 0xFF) != ZGIntf.ZG_SDK_VER_MINOR))
            {
                Console.WriteLine("Неправильная версия SDK Guard.");
                Console.ReadLine();
                return;
            }

            IntPtr hCvt = new IntPtr(0);

            m_hCtr = new IntPtr(0);
            int hr;

            hr = ZGIntf.ZG_Initialize(ZPIntf.ZP_IF_NO_MSG_LOOP);
            if (hr < 0)
            {
                Console.WriteLine("Ошибка ZG_Initialize ({0}).", hr);
                Console.ReadLine();
                return;
            }
            try
            {
                ZG_CVT_INFO        rInfo = new ZG_CVT_INFO();
                ZG_CVT_OPEN_PARAMS rOp   = new ZG_CVT_OPEN_PARAMS();
                rOp.nPortType = CvtPortType;
                rOp.pszName   = CvtPortName;
                rOp.nSpeed    = ZG_CVT_SPEED.ZG_SPEED_57600;
                hr            = ZGIntf.ZG_Cvt_Open(ref hCvt, ref rOp, rInfo);
                if (hr < 0)
                {
                    Console.WriteLine("Ошибка ZG_Cvt_Open ({0}).", hr);
                    Console.ReadLine();
                    return;
                }
                ZG_CTR_INFO rCtrInfo = new ZG_CTR_INFO();
                hr = ZGIntf.ZG_Ctr_Open(ref m_hCtr, hCvt, CtrAddr, 0, ref rCtrInfo);
                if (hr < 0)
                {
                    Console.WriteLine("Ошибка ZG_Ctr_Open ({0}).", hr);
                    Console.ReadLine();
                    return;
                }
                m_nCtrMaxBanks = ((rCtrInfo.nFlags & ZGIntf.ZG_CTR_F_2BANKS) != 0) ? 2 : 1;
                m_fProximity   = ((rCtrInfo.nFlags & ZGIntf.ZG_CTR_F_PROXIMITY) != 0);
                Console.WriteLine("{0} адрес: {1}, с/н: {2}, v{3}.{4}, Количество банков: {5}, Тип ключей: {6}.",
                                  CtrTypeStrs[(int)rCtrInfo.nType],
                                  rCtrInfo.nAddr,
                                  rCtrInfo.nSn,
                                  rCtrInfo.nVersion & 0xff, (rCtrInfo.nVersion >> 8) & 0xff,
                                  m_nCtrMaxBanks,
                                  KeyModeStrs[m_fProximity ? 1 : 0]);
                m_oEvent = new ManualResetEvent(false);
                ZG_CTR_NOTIFY_SETTINGS rNS = new ZG_CTR_NOTIFY_SETTINGS(
                    ZGIntf.ZG_NF_CTR_KEY_TOP, m_oEvent.SafeWaitHandle, IntPtr.Zero, 0,
                    0,
                    3000, // Период проверки верхней границы ключей
                    0);
                hr = ZGIntf.ZG_Ctr_SetNotification(m_hCtr, rNS);
                if (hr < 0)
                {
                    Console.WriteLine("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    Console.ReadLine();
                    return;
                }
                StartNotifyThread();
                Console.WriteLine("-----");
                //while (true)
                //{
                //DoOpenLock(0);

                /*
                 * Console.WriteLine("Введите номер команды:");
                 * Console.WriteLine("1 - показать времена замков");
                 * Console.WriteLine("2 - установить времена замков...");
                 * Console.WriteLine("3 - открыть замок (Вход)");
                 * Console.WriteLine("4 - открыть замок (Выход)");
                 * Console.WriteLine("9 - восстановить заводские настройки (для всех банков)");
                 * Console.WriteLine("0 - выход");
                 * s = Console.ReadLine();
                 * if (s != "")
                 * {
                 *  Console.WriteLine();
                 *  switch (Convert.ToInt32(s))
                 *  {
                 *      case 1:
                 *          //ShowLockTimes();
                 *          break;
                 *      case 2:
                 *          //DoSetLockTimes();
                 *          break;
                 *      case 3:
                 *          DoOpenLock(0);
                 *          break;
                 *      case 4:
                 *          DoOpenLock(1);
                 *          break;
                 *      case 9:
                 *          //DoRestoreFactorySettings();
                 *          break;
                 *      case 0:
                 *          return;
                 *      default:
                 *          Console.WriteLine("Неверная команда.");
                 *          break;
                 *  }
                 * }
                 * Console.WriteLine("-----");
                 */
                //}
            }
            finally
            {
                if (m_hCtr != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(m_hCtr);
                }
                if (hCvt != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(hCvt);
                }
                ZGIntf.ZG_Finalyze();
            }
        }
Пример #3
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 (TestDevice.TestDeviceAccess(out hCvt, ref rCtrInfo)) return; // Тестирование Доступа К Устройству


            try
            {
                m_nCtrMaxBanks = ((rCtrInfo.nFlags & ZGIntf.ZG_CTR_F_2BANKS) != 0) ? 2 : 1;
                m_fProximity   = ((rCtrInfo.nFlags & ZGIntf.ZG_CTR_F_PROXIMITY) != 0);
                // в любом месте, где мы хотим видеть текст не только в консоли, но и в результате вывода, вызываем OnReportHandler
                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,
                                    m_nCtrMaxBanks,
                                    KeyModeStrs[m_fProximity ? 1 : 0]);
                Console.WriteLine(msg);
                OnReportHandler(msg);
            }
            catch (Exception ex)
            {
                OnReportHandler(ex.Message);
                throw; // бросаемся дальше
            }


            try
            {
                m_oEvent = new ManualResetEvent(false);
                ZG_CTR_NOTIFY_SETTINGS rNS = new ZG_CTR_NOTIFY_SETTINGS(
                    ZGIntf.ZG_NF_CTR_KEY_TOP, m_oEvent.SafeWaitHandle, IntPtr.Zero, 0,
                    0,
                    3000, // Период проверки верхней границы ключей
                    0);
                hr = ZGIntf.ZG_Ctr_SetNotification(m_hCtr, rNS);
                if (hr < 0)
                {
                    Console.WriteLine("Ошибка ZG_Ctr_SetNotification ({0}).", hr);
                    Console.ReadLine();
                    return;
                }
                StartNotifyThread();
                Console.WriteLine("-----");
                string s;

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

                        case 2:
                            DoFindKeyByNumber();
                            break;

                        case 3:
                            ShowKeyTopIndex();
                            break;

                        case 6:
                            DoSetKey();
                            if (returnAfterExecute)
                            {
                                return;
                            }
                            break;

                        case 7:
                            DoClearKey();
                            break;

                        case 8:
                            DoClearAllKeys();
                            break;

                        case 0:
                            return;

                        default:
                            Console.WriteLine("Неверная команда.");
                            break;
                        }
                    }
                    Console.WriteLine("-----");
                }
            }
            catch (Exception ex)
            {
                OnReportHandler(ex.Message);
                throw; // бросаемся дальше
            }
            finally
            {
                StopNotifyThread();
                if (m_hCtr != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(m_hCtr);
                }
                if (hCvt != IntPtr.Zero)
                {
                    ZGIntf.ZG_CloseHandle(hCvt);
                }
                ZGIntf.ZG_Finalyze();
            }
        }