Esempio n. 1
0
 // =====================================================================================================
 public void EventHandler(XXY_VisitorMJAsst.RAcsEvent Event, ref UInt16 time, ref string card, ref string voice, ref string name, ref string note, ref string etime, ref byte relay, ref byte OpenDoor, ref Boolean Ack)
 {
     relay = Event.Reader;
     if (OnEventHandler != null)
     {
         OnEventHandler(Event, ref time, ref card, ref voice, ref name, ref note, ref etime, ref relay, ref OpenDoor, ref Ack);
     }
 }
Esempio n. 2
0
        private void DoFormAlarmEvent()
        {
            Boolean       Ack;
            RTCPAlarmData AlarmData;
            byte          vopenDoor = 0;
            UInt16        time = 5; string card = ""; string voice = ""; string name = ""; string note = ""; string etime = "";
            byte          times = 0;
            byte          Second, Minute, Hour, Day, Month;
            int           Year;

            RAcsEvent Event = new RAcsEvent();

            AlarmData = (RTCPAlarmData)ByteToStruct(BufferRX, typeof(RTCPAlarmData));

            Event.SerialNo  = Encoding.ASCII.GetString(AlarmData.Serial);
            Serial          = Event.SerialNo;
            Event.ID        = Encoding.ASCII.GetString(AlarmData.ID);
            Event.Reader    = Convert.ToByte(AlarmData.Reader & 0x01);
            Event.Door      = AlarmData.door;
            Event.EventType = AlarmData.DataType;

            Second         = AlarmData.DateTime[5];
            Minute         = (AlarmData.DateTime[4]);
            Hour           = (AlarmData.DateTime[3]);
            Day            = (AlarmData.DateTime[2]);
            Month          = (AlarmData.DateTime[1]);
            Year           = (AlarmData.DateTime[0]) + 2000;
            Event.Datetime = GetDatetime(Second, Minute, Hour, Day, Month, Year);
            Event.Alarm    = AlarmData.Alarm;
            Event.Value    = Encoding.Default.GetString(AlarmData.Value);

            Event.Online = true;
            Event.EType  = 1;
            Ack          = true;
            vopenDoor    = 0;
            byte relay = Event.Reader;

            OnEventHandler(Event, ref time, ref card, ref voice, ref name, ref note, ref etime, ref relay, ref vopenDoor, ref Ack);
            // 可以不应答
            //if (Ack)
            //  AnsEvent(0x54, relay, vopenDoor, time, Event.Reader, 5, card, voice, name, note, etime);
        }
Esempio n. 3
0
        private void DoFormCardEvent()
        {
            Boolean      Ack;
            RTCPCardData CardData;
            byte         vopenDoor = 0;
            UInt16       time = 5; string card = ""; string voice = ""; string name = ""; string note = ""; string etime = "";
            byte         times = 0;
            byte         Second, Minute, Hour, Day, Month;
            int          Year;

            int Valuelen = BufferRX[Loc_Len + 1] + BufferRX[Loc_Len + 0] * 256 - 6 - 10 - 7 - 16 - 4;

            if (Valuelen > 2048)
            {
                Valuelen = 0;
            }

            RAcsEvent Event = new RAcsEvent();

            CardData = (RTCPCardData)ByteToStruct(BufferRX, typeof(RTCPCardData));

            Event.SerialNo  = Encoding.ASCII.GetString(CardData.Serial);
            Serial          = Event.SerialNo;
            Event.ID        = Encoding.ASCII.GetString(CardData.ID);
            Event.Reader    = Convert.ToByte(CardData.Reader & 0x01);
            Event.Door      = CardData.door;
            Event.EventType = CardData.DataType;

            Second         = CardData.DateTime[5];
            Minute         = (CardData.DateTime[4]);
            Hour           = (CardData.DateTime[3]);
            Day            = (CardData.DateTime[2]);
            Month          = (CardData.DateTime[1]);
            Year           = (CardData.DateTime[0]) + 2000;
            Event.Datetime = GetDatetime(Second, Minute, Hour, Day, Month, Year);
            Event.Value    = Convert.ToString(CardData.Card);

            switch (Event.EventType)
            {
            case NET_DATA_TYPE_CARD:
                Event.Value = Convert.ToString(CardData.Card);    // Convert.ToString(CardData.Value);
                card        = Convert.ToString(CardData.Card);
                break;

            case NET_DATA_TYPE_ORCode:
                Event.Value = Encoding.UTF8.GetString(CardData.Value);
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\0", string.Empty);
                }
                break;      //

            case NET_DATA_TYPE_DATA:
                Event.Value = Encoding.ASCII.GetString(CardData.Value);
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\0", string.Empty);
                }
                break;      //

            case NET_DATA_TYPE_CHINA:
                RChinaCardByte ChinaCardData = (RChinaCardByte)ByteToStruct(CardData.Value, typeof(RChinaCardByte));
                RChinaCard     ChinaCard     = GetChinaCard(ChinaCardData);
                if (!string.IsNullOrEmpty(ChinaCard.Name))
                {
                    Event.Value = ChinaCard.Name + " " + ChinaCard.Card;
                }
                //if (ChinaCardData.HasImage == 0x01)
                //    SaveEmpwltPhotoBytes(ChinaCard.Card , ChinaCardData.Photo);
                break;

            case NET_DATA_TYPE_PIN:
                Event.Value = Convert.ToString(CardData.Value);
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", "").Replace("\r", "").Replace("\0", "");
                }
                break;

            case NET_DATA_TYPE_FINGER:
            case NET_DATA_TYPE_BIGDATA:
                int    len   = BufferRX[5] * 256 + BufferRX[6] - (6 + 10 + 1 + 1 + 4 + 1 + 16 + 4); // clear head
                byte[] vdata = new byte[len];
                Array.Copy(CardData.Value, 0, vdata, 0, len);
                Event.Value = BitConverter.ToString(vdata).Replace("-", " ");
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\0", string.Empty);
                }
                break;      //

            case NET_DATA_TYPE_BASE64:
                CardData.Value[Valuelen] = 0;
                Event.Value = Encoding.ASCII.GetString(CardData.Value, 0, Valuelen);
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\0", string.Empty);
                }
                break;      //

            case NET_DATA_TYPE_RFID:
                Event.Value = bytesToHexString(CardData.Value);
                if (!string.IsNullOrEmpty(Event.Value))
                {
                    Event.Value = Event.Value.Trim().Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\0", string.Empty);
                }
                break;      //
            }
            Event.Online = true;
            Event.EType  = 1;
            Ack          = true;
            vopenDoor    = 0;

            byte relay = Event.Reader;

            OnEventHandler(Event, ref time, ref card, ref voice, ref name, ref note, ref etime, ref relay, ref vopenDoor, ref Ack);
            if (Ack)
            {
                AnsEvent(0x54, relay, vopenDoor, time, Event.Reader, 5, card, voice, name, note, etime);
            }
        }