使用插座处理生物识别指纹考勤设备

我正在尝试使用 Java 程序连接生物识别指纹考勤设备.我使用的设备是 Biocom 指纹考勤系统.但是,我正在搜索和阅读相关内容,我看到可以使用基于设备类型的 SDK(这很难,不合逻辑,而且,它不是全局解决方案!)

I am trying to connect with a Biometric Fingerprint Attendance Device using a Java program. The device I am using is a Biocom Fingerprint attendance system. However, I am search and reading about that and I see the SDK could used which based on device type (which hard, not logical, moreover, it is not global solution!)

我研究了有关如何使用指纹设备连接、发送和检索数据的全球标准,但我还是没有幸运地找到明确的解决方案.目前,我尝试通过创建 Socket 对象(通过以太网端口)与设备连接,但也没有与我一起执行.这个打开的无限循环问题在我头上.

I research for a global standard on how to connect, send and retrieve data with a Fingerprint Device which again I wasn't lucky enough to find a clear solution. Currently, I tried to connect with the device by creating a Socket object (through Ethernet port) but also not executed with me. This open infinite loop problems on my head.

  • 是否有任何通用的标准方法可以使用 Java 从此类设备连接、发送和检索数据?
  • Socket 是否可以作为此类问题的解决方案?
  • 如果是,我下面的代码有什么问题?除了主机 IP 和端口号之外,还需要什么其他东西来连接设备?
  • Is there any general, standard way to connect, send and retrieve data from such device using Java?
  • Can a Socket be considered as a solution for such problem?
  • If yes, what is wrong in my code below? What additional things more than the host IP and port number are needed to connect with the device?

使用的 Socket 代码:

The Socket code that used:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Requester {
Socket requestSocket;
ObjectOutputStream out;
ObjectInputStream in;
String message;

Requester() {
}

void run() throws IOException {
    try {
        // 1. creating a socket to connect to the server
        requestSocket = new Socket("192.168.0.19", 4370);
        System.out.println("Connected to given host in port 4370");
        // 2. get Input and Output streams
        in = new ObjectInputStream(requestSocket.getInputStream());
        // 3: Communicating with the server
        String line;
        while (true) {
            line = in.readLine();
            if (line != null) {
                System.out.println(line);
            }
        }
    } catch (UnknownHostException unknownHost) {
        System.err.println("You are trying to connect to an unknown host!");

    } catch (IOException ioException) {
        ioException.printStackTrace();

    } catch (Exception Exception) {
        Exception.printStackTrace();

    } finally {
        in.close();
        requestSocket.close();
    }
}

void sendMessage(String msg) {
    try {
        out.writeObject(msg);
        out.flush();
        System.out.println("client: " + msg);

    } catch (IOException ioException) {
        ioException.printStackTrace();
    }
}

public static void main(String args[]) throws IOException {
    Requester client = new Requester();
    client.run();
}
}

这张图片可能会提供更多细节:

This image may give more details:

推荐答案

你不需要 ObjectInputStream.只需使用您从 requestSocket.getInputStream() 获得的 InputStream.

You don't need the ObjectInputStream. Just use the InputStream you get from requestSocket.getInputStream().

或者使用 putty 等终端程序连接到您的设备.这不需要编码.

Alternatively use a terminal programm like putty to connect to your device. This requires no coding.

相关文章