コード例 #1
0
        //public void receiveCallBack(IAsyncResult ar)
        //{
        //    try
        //    {
        //        int rec = socket.EndReceive(ar);

        //        if (rec == 0)
        //        {
        //            if (Disconnected != null)
        //            {
        //                Disconnected(this);
        //                return;
        //            }
        //        }

        //        if (rec != 4)
        //        {
        //            throw new Exception();
        //        }
        //    }
        //    catch(SocketException se)
        //    {
        //        switch(se.SocketErrorCode)
        //        {
        //            case SocketError.ConnectionAborted:
        //            case SocketError.ConnectionReset:
        //                if (Disconnected != null)
        //                {
        //                    Disconnected(this);
        //                    return;
        //                }
        //                break;
        //        }
        //    }
        //    catch(ObjectDisposedException)
        //    {
        //        return;
        //    }
        //    catch(NullReferenceException)
        //    {
        //        return;
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine(ex.Message);
        //        return;
        //    }

        //    buffer = new ReceiveBuffer(BitConverter.ToInt32(lenBuffer, 0));

        //    socket.BeginReceive(buffer.Buffer, 0, buffer.Buffer.Length, SocketFlags.None, receivePacketCallBack, null);
        //}

        //public void receivePacketCallBack(IAsyncResult ar)
        //{
        //    int rec = socket.EndReceive(ar);

        //    if (rec <= 0)
        //    {
        //        return;
        //    }

        //    buffer.BufStream.Write(buffer.Buffer, 0, rec);

        //    buffer.ToReceive -= rec;

        //    if (buffer.ToReceive > 0)
        //    {
        //        Array.Clear(buffer.Buffer, 0, buffer.Buffer.Length);

        //        socket.BeginReceive(buffer.Buffer, 0, buffer.Buffer.Length, SocketFlags.None, receivePacketCallBack, null);
        //        return;
        //    }

        //    if (DataReceived != null)
        //    {
        //        buffer.BufStream.Position = 0;
        //        DataReceived(this, buffer);
        //    }

        //    buffer.Dispose();

        //    ReceiveAsync();
        //}

        void Send(byte[] data, int index, int length)
        {
            UpdateLogMsg("send data: " + BBDataConverter.ByteToHexString(data));
            //socket.BeginSend(BitConverter.GetBytes(length), 0, 4, SocketFlags.None, sendCallBack, null);
            //System.Threading.Thread.Sleep(500);
            socket.BeginSend(data, index, length, SocketFlags.None, sendCallBack, null);
        }
コード例 #2
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (tbName.Text == "" || tbName == null)
            {
                MessageBox.Show("이름을 입력하세요.", "알림", MessageBoxButtons.OK);
                return;
            }
            else if (tbIdnum.Text == "" || tbIdnum == null)
            {
                MessageBox.Show("주민번호를 입력하세요.", "알림", MessageBoxButtons.OK);
                return;
            }
            else if (tbPhone.Text == "" || tbPhone == null)
            {
                MessageBox.Show("연락처를 입력하세요.", "알림", MessageBoxButtons.OK);
                return;
            }
            else if (pbFingerPrint.Image == null)
            {
                MessageBox.Show("지문을 입력하세요.", "알림", MessageBoxButtons.OK);
                return;
            }

            if (MessageBox.Show("저장하시겠습니까?", "알림", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                int    rtn    = 0;
                byte[] iBytes = BBDataConverter.ImageToByte(BBDataConverter.GrayRawToBitmap(fingerSensor.getRawImage(), FingerSensorPacket.SIZE_FP_WIDTH, FingerSensorPacket.SIZE_FP_HEIGHT));
                m_user = userManager.Enroll(iBytes, tbName.Text, tbIdnum.Text, tbPhone.Text, tbEmail.Text);
                switch (mode)
                {
                case MODE.SAVE:
                    rtn = userManager.InsertUser(m_user);
                    break;

                case MODE.MODIFY:
                    m_user.Id = Int32.Parse(tbId.Text.ToString());
                    rtn       = userManager.UpdateUser(m_user);
                    break;
                }
                if (rtn > 0)
                {
                    StatusMessage("사용자(" + m_user.Name + ") 정보가 저장되었습니다.");
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                else
                {
                    StatusMessage("사용자(" + m_user.Name + ") 정보가 저장되지 않았습니다.");
                }
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: gaonsoflt/isps
 private void btnConfirm_Click(object sender, EventArgs e)
 {
     try
     {
         EnableFingerPrintComponent(false);
         if (fingerSensor.CmdCmosLed(true) == 0)
         {
             UpdateStatusMessage("Input your finger on sensor.");
             if (fingerSensor.CmdCaptureFinger() == 0)
             {
                 UpdateStatusMessage("Exporting deleted fingerprint data");
                 if (fingerSensor.CmdGetRawImage() == 0)
                 {
                     UpdateStatusMessage("Succeed export fingerprint data.");
                     pbImage.Image = BBDataConverter.GrayRawToBitmap(fingerSensor.getRawImage(), FingerSensorPacket.SIZE_FP_WIDTH, FingerSensorPacket.SIZE_FP_HEIGHT);
                     UserManager fpm   = new UserManager();
                     MyPerson    guest = fpm.Enroll(BBDataConverter.ImageToByte(pbImage.Image), "guest");
                     MyPerson    match = fpm.recognition(guest);
                     if (match != null)
                     {
                         UpdateCompLogMsg("Matched person(" + match.Name + "): " + VerifyUserMatchRate(guest, match));
                     }
                     else
                     {
                         UpdateCompLogMsg("No matching person found.");
                     }
                     UpdateCompMatchedUser(match);
                 }
                 else
                 {
                     UpdateStatusMessage("Failed export fingerparint data.");
                 }
             }
             else
             {
                 UpdateStatusMessage("Time out or can not delected fingerprint.");
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         UpdateStatusMessage("Failed export fingerparint data.");
     }
     finally
     {
         fingerSensor.CmdCmosLed(false);
         EnableFingerPrintComponent(true);
     }
 }
コード例 #4
0
 private void btnScan_Click(object sender, EventArgs e)
 {
     if (pbFingerPrint.Image != null)
     {
         if (MessageBox.Show("지문 정보를 변경하시겠습니까?", "알림", MessageBoxButtons.YesNo) == DialogResult.No)
         {
             return;
         }
     }
     try
     {
         EnableFingerPrintButton(false);
         if (fingerSensor.CmdCmosLed(true) == 0)
         {
             StatusMessage("Input your finger on sensor.");
             if (fingerSensor.CmdCaptureFinger() == 0)
             {
                 StatusMessage("Exporting deleted fingerprint data");
                 if (fingerSensor.CmdGetRawImage() == 0)
                 {
                     StatusMessage("Succeed export fingerprint data.");
                     Invoke((MethodInvoker) delegate
                     {
                         pbFingerPrint.Image = BBDataConverter.GrayRawToBitmap(fingerSensor.getRawImage(), FingerSensorPacket.SIZE_FP_WIDTH, FingerSensorPacket.SIZE_FP_HEIGHT);
                     });
                 }
                 else
                 {
                     StatusMessage("Failed export fingerparint data.");
                 }
             }
             else
             {
                 StatusMessage("Time out or can not delected fingerprint.");
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         StatusMessage("Failed export fingerparint data.");
     }
     finally
     {
         fingerSensor.CmdCmosLed(false);
         EnableFingerPrintButton(true);
     }
 }
コード例 #5
0
        public MyPerson RunAuth(Packet pkt)
        {
            UserManager fpm   = new UserManager();
            MyPerson    match = null;
            Code        code;

            try
            {
                MyPerson guest = fpm.Enroll(BBDataConverter.ImageToByte(pkt.fingerPrint), "guest");
                match = fpm.recognition(guest);
                if (match != null)
                {
                    Console.WriteLine("Found matched fingerprint.");
                    bool isMatch = CheckLoginUser(match.Id, pkt.userId);
                    if (isMatch)
                    {
                        SetLoginUser(match);
                        UpdateLogMsgWithName("Matched person(" + match.Name.ToString() + ")");
                        //UpdateMatchedUser(match);
                        pkt.guid = GetLoginUser().Guid;
                        code     = Code.SUCCESS_AUTH;
                    }
                    else
                    {
                        UpdateLogMsgWithName("Not Matched person");
                        code = Code.NOT_MATCH_LOGIN_FP;
                    }
                }
                else
                {
                    Console.WriteLine("Not found matched fingerprint.");
                    UpdateLogMsgWithName("Not found matched fingerprint");
                    code = Code.NOT_FND_FINGERPRINT;
                }
            }
            catch (Exception e)
            {
                code       = Code.ERROR;
                pkt.errMsg = e.Message;
            }
            SendResponse(pkt, code);
            return(match);
        }
コード例 #6
0
ファイル: DataPacket.cs プロジェクト: gaonsoflt/isps
            public override string ToString()
            {
                StringBuilder pktStr = new StringBuilder("Packet: ");

                pktStr.Append("TYPE[").Append(type).Append("]");
                pktStr.Append("USER_ID[").Append(userId).Append("]");
                pktStr.Append("CAR_ID[").Append(carId).Append("]");
                pktStr.Append("RESPONSE[").Append(response).Append("]");
                pktStr.Append("DATA_LEN[").Append(dataLen).Append("]");
                if (response == PKT_NACK)
                {
                    pktStr.Append("ERROR_MSG[").Append(errMsg).Append("]");
                }
                if (dataLen > 10 && data != null)
                {
                    pktStr.Append("DATA[").Append(BBDataConverter.ByteToHexString(data.Take(10).ToArray())).Append("...]");
                }
                return(pktStr.ToString());
            }
コード例 #7
0
ファイル: DataPacket.cs プロジェクト: gaonsoflt/isps
        //public static Packet ByteToStruct(byte[] buffer)
        //{
        //    MemoryStream ms = new MemoryStream(buffer, false);
        //    return ByteToStruct(ms);
        //}

        //public static Packet ByteToStruct(MemoryStream ms)
        //{
        //    BinaryReader br = new BinaryReader(ms);

        //    try
        //    {
        //        Packet pkt = new Packet();
        //        pkt.type = (PktType)br.ReadInt32();
        //        pkt.userId = br.ReadInt32();
        //        pkt.carId = StringUtil.ExtendedTrim(Encoding.UTF8.GetString(br.ReadBytes(16)));
        //        pkt.response = br.ReadInt32();
        //        pkt.dataLen = br.ReadInt32();
        //        switch (pkt.type)
        //        {
        //            case PktType.AUTH:
        //                pkt.data = br.ReadBytes(pkt.dataLen);
        //                //pkt.fingerPrint = Image.FromStream(new MemoryStream(pkt.data));
        //                //pkt.fingerPrint = Image.FromStream(new MemoryStream(BBDataConverter.ImageToByte(BBDataConverter.GrayRawToBitmap(pkt.data, 160, 120))));
        //                pkt.fingerPrint = BBDataConverter.BytesToImage(pkt.data);
        //                break;
        //            case PktType.PASSENGER:
        //                pkt.guid = BBDataConverter.ByteToString(br.ReadBytes(pkt.dataLen - 4));
        //                pkt.psgCnt = BitConverter.ToInt32(br.ReadBytes(4), 0);
        //                break;
        //            case PktType.ORDER:
        //                pkt.guid = BBDataConverter.ByteToString(br.ReadBytes(pkt.dataLen - 4));
        //                pkt.accessId = BitConverter.ToInt32(br.ReadBytes(4), 0);
        //                break;
        //        }

        //        br.Close();
        //        ms.Close();
        //        return pkt;
        //    }
        //    catch (Exception e)
        //    {
        //        throw e;
        //    }
        //}

        public static Packet DataParser(MemoryStream ms, Packet pkt)
        {
            BinaryReader br = new BinaryReader(ms);

            try
            {
                pkt.data = br.ReadBytes(pkt.dataLen);
                switch (pkt.type)
                {
                case PktType.AUTH:
                    pkt.fingerPrint = BBDataConverter.GrayRawToBitmap(FingerSensor.ScaleImage320x240(pkt.data), FingerSensorPacket.SIZE_FP_WIDTH, FingerSensorPacket.SIZE_FP_HEIGHT);
                    break;

                case PktType.PASSENGER:
                    pkt.guid = BBDataConverter.ByteToString(pkt.data.Take(pkt.dataLen - 4).ToArray());
                    //pkt.guid = BBDataConverter.ByteToString(br.ReadBytes(pkt.dataLen - 4));
                    //pkt.psgCnt = BitConverter.ToInt32(br.ReadBytes(4), 0);
                    pkt.psgCnt = BBDataConverter.BytesToInt32(pkt.data.Skip(pkt.dataLen - 4).ToArray());
                    break;

                case PktType.ORDER:
                    pkt.guid = BBDataConverter.ByteToString(pkt.data.Take(pkt.dataLen - 4).ToArray());
                    //pkt.guid = BBDataConverter.ByteToString(br.ReadBytes(pkt.dataLen - 4));
                    //pkt.accessId = BitConverter.ToInt32(br.ReadBytes(4), 0);
                    pkt.accessId = BBDataConverter.BytesToInt32(pkt.data.Skip(pkt.dataLen - 4).ToArray());
                    break;

                case PktType.ONCE:
                    pkt.psgCnt      = BBDataConverter.BytesToInt32(pkt.data.Take(19200).ToArray());
                    pkt.fingerPrint = BBDataConverter.GrayRawToBitmap(FingerSensor.ScaleImage320x240(pkt.data.Skip(4).ToArray()), FingerSensorPacket.SIZE_FP_WIDTH, FingerSensorPacket.SIZE_FP_HEIGHT);
                    break;
                }

                br.Close();
                ms.Close();
                return(pkt);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #8
0
        public MyPerson RunAtOnce(Packet pkt)
        {
            UserManager fpm   = new UserManager();
            MyPerson    match = null;
            Code        code;

            try
            {
                MyPerson guest = fpm.Enroll(BBDataConverter.ImageToByte(pkt.fingerPrint), "guest");
                match = fpm.recognition(guest);
                if (match != null)
                {
                    bool isMatch = CheckLoginUser(match.Id, pkt.userId);
                    if (isMatch)
                    {
                        SetLoginUser(match);
                        UpdateLogMsgWithName("Step1: Check fingerprint(" + "Matched person(" + match.Name.ToString() + ")" + ")");
                        code = Code.SUCCESS_AUTH;
                        AccessInfo access = new AccessInfoDB().SelectNowAccessibleInfo(GetLoginUser().Guid, pkt.carId);
                        if (access != null)
                        {
                            if (access.access_dt == default(DateTime))
                            {
                                if (pkt.psgCnt == access.psgCnt)
                                {
                                    UpdateLogMsgWithName("Step2: Check passenger count(" + access.psgCnt + ")");
                                    code         = Code.SUCCESS_PASSENGER;
                                    pkt.accessId = access.seq;
                                    OrderInfo order = new OrderInfoManager().FindOrderInfoByAccessId(access.seq);
                                    if (order != null)
                                    {
                                        UpdateLogMsgWithName("Step3: Find Order Info(" + order.orderId + ")");
                                        pkt.order = order;
                                        code      = Code.SUCCESS_ORDER;
                                    }
                                    else
                                    {
                                        code = Code.NOT_FND_ORDER_INFO;
                                    }
                                }
                                else
                                {
                                    code = Code.NOT_MATCH_PASSENGER_CNT;
                                }
                            }
                            else
                            {
                                code = Code.ALREADY_ACCESS;
                            }
                        }
                        else
                        {
                            code = Code.NOT_FND_ACCESS_INFO;
                        }
                    }
                    else
                    {
                        code = Code.NOT_MATCH_LOGIN_FP;
                    }
                }
                else
                {
                    Console.WriteLine("Not found matched fingerprint.");
                    code = Code.NOT_FND_FINGERPRINT;
                }
            }
            catch (Exception e)
            {
                code       = Code.ERROR;
                pkt.errMsg = e.Message;
            }
            if (code == Code.SUCCESS_AUTH || code == Code.SUCCESS_ORDER || code == Code.SUCCESS_PASSENGER)
            {
                UpdateLogMsgWithName("Success authentication.");
                // if code is SUCCESS, Open gate and update access date
                new AccessInfoDB().UpdateAccessDate(pkt.accessId);
            }
            else
            {
                UpdateLogMsgWithName("Failed authentication.(" + GetMessage(code.ToString()) + ")");
            }

            SendResponse(pkt, code);

            return(match);
        }
コード例 #9
0
ファイル: UserManager.cs プロジェクト: gaonsoflt/isps
 public MyPerson Enroll(byte[] source, int id, string name, string idnum, string phone, string email)
 {
     return(Enroll(BBDataConverter.ByteToBitmapImage(source), id, name, idnum, phone, email));
 }
コード例 #10
0
ファイル: UserManager.cs プロジェクト: gaonsoflt/isps
 public MyPerson Enroll(byte[] source, string name)
 {
     return(Enroll(BBDataConverter.ByteToBitmapImage(source), 0, name, "", "", ""));
 }
コード例 #11
0
ファイル: DataPacket.cs プロジェクト: gaonsoflt/isps
        public static byte[] StructToByte(Packet pkt)
        {
            MemoryStream ms = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(ms);

            bw.Write((int)pkt.type);
            bw.Write(pkt.userId);
            try
            {
                byte[] carId = new byte[16];
                Encoding.UTF8.GetBytes(pkt.carId, 0, pkt.carId.Length, carId, 0);
                bw.Write(carId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : {0}", ex.Message.ToString());
            }
            bw.Write(pkt.response);
            switch (pkt.type)
            {
            case PktType.AUTH:
                if (pkt.response == DataPacket.PKT_ACK)
                {
                    byte[] bGuid = BBDataConverter.StringToByte(pkt.guid);
                    bw.Write(bGuid.Length);
                    bw.Write(bGuid);
                }
                break;

            case PktType.PASSENGER:
                if (pkt.response == DataPacket.PKT_ACK)
                {
                    byte[] accesId = BBDataConverter.Int32ToByte(pkt.accessId);
                    bw.Write(accesId.Length);
                    bw.Write(accesId);
                }
                break;

            case PktType.ORDER | PktType.ONCE:
                if (pkt.response == DataPacket.PKT_ACK)
                {
                    byte[] id = BBDataConverter.StringToByte(pkt.order.orderId);
                    //byte[] wdt = BBDataConverter.DateTimeToByte(pkt.order.work_dt);
                    // length
                    bw.Write(id.Length);
                    //bw.Write(id.Length + wdt.Length);
                    // data
                    bw.Write(id);
                    //bw.Write(wdt);
                }
                break;
            }
            if (pkt.response == PKT_NACK)
            {
                pkt.data = BBDataConverter.StringToByte(pkt.errMsg);
                bw.Write(pkt.data.Length);
                bw.Write(pkt.data);
            }
            bw.Close();
            byte[] buffer = ms.ToArray();
            ms.Dispose();

            return(buffer);
        }