Java 从生物指纹考勤设备检索数据

Java 从生物指纹考勤设备检索数据,java,sockets,networking,fingerprint,biometrics,Java,Sockets,Networking,Fingerprint,Biometrics,我正在尝试使用Java程序连接生物指纹考勤设备。我使用的设备是Pegasus T5指纹扫描仪。不幸的是,他们为这个设备()开发的SDK只包括C#、.Net和VB,我对此一无所知。当我要求制造商时,他们回答说没有适用于该设备的Java SDK。尽管我对这些语言都不了解,但我还是尝试理解SDK中的代码,以了解设备是如何连接的,我发现它只是使用网络ip和端口号与设备进行连接 如果您参考该设备的C#SDK,您可以看到我在这里看到的示例 frmEvent.cs,在cmdStartMoniter\u中单击方

我正在尝试使用Java程序连接生物指纹考勤设备。我使用的设备是Pegasus T5指纹扫描仪。不幸的是,他们为这个设备()开发的SDK只包括C#、.Net和VB,我对此一无所知。当我要求制造商时,他们回答说没有适用于该设备的Java SDK。尽管我对这些语言都不了解,但我还是尝试理解SDK中的代码,以了解设备是如何连接的,我发现它只是使用网络ip和端口号与设备进行连接

如果您参考该设备的C#SDK,您可以看到我在这里看到的示例 frmEvent.cs,在
cmdStartMoniter\u中单击
方法,按如下方式建立连接

bRet = bpc.StartEventCapture(0, util.pubIPAddrToLong(txtSourceIP.Text), Convert.ToInt32(txtPortNumber.Text));
这是指方法
StartEventCapture
as
public-virtual-bool-StartEventCapture(int-dwCommType,int-dwParam1,int-dwParam2)
在一个.dll文件中显示,由于我对如何理解代码有了进一步的了解,我已经失去了跟踪

然而,我在脑海中看到了这个例子,作为我的下一步,我开始研究一个关于如何使用指纹设备连接、发送和检索数据的全球标准,而我又没有幸运地找到一个清晰的解决方案。但是有一些人的例子和我自己看到的例子,我试图通过创建一个
Socket
对象来连接设备,但是当我执行它时,它只产生
java.net.ConnectException:Connection timed out:connect

有四个问题

  • 是否有用于生物指纹考勤设备的Java SDK,我也可以将其用于我的设备
  • 是否有任何通用的、标准的方法可以使用Java从此类设备连接、发送和检索数据
  • 如果通过
    插座连接到设备是一种解决方案,那么我是否应该向设备发送任何特定的标准请求,以便接收设备的响应
  • 如果我所做的尝试是一种方法,我做错了什么,我应该如何纠正这个问题
  • 这是我用来连接设备的代码

        String host = "192.168.168.100";
        int port = Integer.parseInt("5005");
    
        try {
            Socket socket = new Socket(host, port);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
            String line;
            while (true){
                line = in.readLine();
                if (line != null){
                    System.out.println(line);
                }
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    

    每个生物测量设备通常具有lAN端口或Web接口。生物测量设备在特定端口发送数据。比如说

    192.168.1.23:8080
    
    您可以使用java套接字连接到它,并可以读取数据

    Socket socket = new Socket("192.168.1.23","8080");
    
    坚持下去


    享受

    如果您试图访问生物识别机器以与web应用程序关联,请查找CAMSUnit机器。CAMS为他们的生物识别机器提供了最新的技术支持。它支持注册回调URL,每次注册新的考勤时都会调用该URL。

    刚刚浏览了从问题中共享的链接下载的示例代码。如果对你有帮助的话,让我分享我的几分钱

    根据代码,我们不能通过简单的套接字编程直接连接机器。这是可能的,前提是您知道没有一家制造商共享的低级通信协议。因此,您必须只关注他们的SDK

    来到SDK

    StartEventCapture有三个参数,其中第一个表示TCP/IP或串行通信。0表示TCP/IP,1表示串行通信

    对于TCP/IP,第二个和第三个参数是IP和端口

    首先通过TCP/IP连接机器来实现一个简单的程序。一旦成功,您就可以开始执行事件和处理数据。在运行程序之前,您必须检查生物识别机器是否可以通过配置的IP在计算机中ping

    您需要查找用于出席、用户更新等的事件,并根据需要实施它们。事件由XML参数触发,该参数保存所有数据,因此必须找到要读取的每个项目的键


    Pegasus不提供直接云通信,如Victor所指出的,如果您需要直接云通信,您将不得不使用支持web api的生物识别机器。

    尝试使用
    netstat-an
    查看此设备是否正在侦听您尝试连接的端口上的流量。这是一个好主意。我试试看。虽然我很确定它是通过这个端口进行通信的,因为制造商提供的客户端软件使用这个端口与设备进行通信。当我查看interned时,似乎
    5005
    是指纹设备的默认标准端口号。但我想知道我是否应该发送任何特定的请求以获得响应,或者设备在每次扫描时传输数据。不过,我将尝试使用您建议的
    netstat
    命令,看看它是否正在该端口上侦听。谢谢你@nrathaus!因此,请使用
    wireshark
    来嗅探发送到该端口的通信量,例如,该通信量可能是SSL加密的,这会使您想做的事情变得有点棘手。我确实找到了在端口5005上工作的其他产品,它们是指纹设备,因此可能存在某种已知协议,但我找不到一个重复的: