使用插座处理生物识别指纹考勤设备
我正在尝试使用 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.
相关文章