//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); }
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 + ") 정보가 저장되지 않았습니다."); } } }
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); } }
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); } }
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); }
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()); }
//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; } }
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); }
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)); }
public MyPerson Enroll(byte[] source, string name) { return(Enroll(BBDataConverter.ByteToBitmapImage(source), 0, name, "", "", "")); }
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); }