Quote from asmat on March 19, 2025, 5:44 amHello everyone,
I am working on a web-based project and need to integrate the ZKBioOnline USB fingerprint sensor. I know that web browsers cannot directly access USB ports for security reasons, but I have the Atlas Fingerprint Driver 5.2.0.38 and the SDK, and I'm looking for a way to make the sensor work with my web application.
Specifically, I need help with:
- How to interface with the fingerprint sensor from a web application, given the browser limitations.
- Is it possible to use neoEdge to facilitate this integration?
Any guidance, advice, or code examples would be greatly appreciated!
Thank you in advance!
Hello everyone,
I am working on a web-based project and need to integrate the ZKBioOnline USB fingerprint sensor. I know that web browsers cannot directly access USB ports for security reasons, but I have the Atlas Fingerprint Driver 5.2.0.38 and the SDK, and I'm looking for a way to make the sensor work with my web application.
Specifically, I need help with:
Any guidance, advice, or code examples would be greatly appreciated!
Thank you in advance!
Quote from luishp on March 19, 2025, 3:42 pm@asmat from VisualNEO Web GPT:
You're absolutely right that standard web applications cannot access USB devices directly due to browser security limitations. However, there are viable alternatives and workarounds to bridge your ZKBioOnline USB fingerprint sensor with your VisualNEO Web application. Here’s a detailed guide:
🔐 Workaround Architecture Using VisualNEO Web
Use a Local Middleware/Bridge App (Driver/SDK Handler):
- Develop a small desktop application in a language like Python, C#, or Java that interfaces with the ZKBioOnline sensor via the Atlas Fingerprint Driver SDK 5.2.0.38.
- This app will act as a middleware to receive commands from your web application (via HTTP/WebSocket) and send back the fingerprint data.
Localhost Communication (Using
neoAjax
Plugin orneoEdge
):
- Option A:
neoAjax
Plugin: Your VisualNEO Web app can send HTTP requests (vianeoAjax
) tohttp://localhost:port/
where your middleware app is listening.- Option B:
neoEdge
Browser: If you're deploying using neoEdge, it allows enhanced capabilities including running local executables or interacting with local files/services, thus enabling closer integration with local hardware.Typical Flow Example:
- User clicks "Scan Fingerprint" on your VisualNEO Web UI.
- Your app sends an AJAX request to the local app (
http://localhost:8080/scan
).- The local app interacts with the fingerprint SDK and captures the fingerprint.
- Response is sent back to your web app to confirm success or return data (template or verification result).
✅ Is
neoEdge
a Good Option?Yes,
neoEdge
is ideal for such integrations where USB hardware access is needed. It acts as a specialized browser that bridges the gap between local hardware and web technologies. With proper scripting, it can:
- Call a local executable or script.
- Read/write local files.
- Enable communication with fingerprint SDKs via intermediary applications.
You can explore more about
neoEdge
capabilities in the official help file under: 👉Plugins Command Reference → neoEdge
section in your uploaded manual .
🔧 Code Snippet (VisualNEO Web using neoAjax):
SetVar [fingerScanStatus] "Waiting for scan..."
neoAjax "GET" "http://localhost:8080/scan" "" "scanResult"
Then you handle the
scanResult
in a variable and show feedback to users.Sample python code:
from flask import Flask, jsonify, request import threading import time app = Flask(__name__) # Simulate fingerprint SDK interaction def capture_fingerprint(): time.sleep(2) # Simulate delay for fingerprint scan return { "status": "success", "message": "Fingerprint captured successfully", "fingerprint_id": "user_1234", "template_data": "base64_encoded_fingerprint_template" } @app.route('/scan', methods=['GET']) def scan_fingerprint(): result = capture_fingerprint() return jsonify(result) if __name__ == '__main__': print("Starting Fingerprint Middleware Server on http://localhost:8080") app.run(host='127.0.0.1', port=8080)Here is a basic Python middleware server that listens on
http://localhost:8080/scan
.
It simulates interaction with a fingerprint sensor SDK and returns mock fingerprint data.🔧 How to Use:
- Install required packages (if not already):
pip install flask
- Run this script on the same machine where the fingerprint sensor is connected.
- In VisualNEO Web, use the
neoAjax
command to send a GET request tohttp://localhost:8080/scan
.- Process the JSON response in your web app.
@asmat from VisualNEO Web GPT:
You're absolutely right that standard web applications cannot access USB devices directly due to browser security limitations. However, there are viable alternatives and workarounds to bridge your ZKBioOnline USB fingerprint sensor with your VisualNEO Web application. Here’s a detailed guide:
Use a Local Middleware/Bridge App (Driver/SDK Handler):
Localhost Communication (Using neoAjax
Plugin or neoEdge
):
neoAjax
Plugin: Your VisualNEO Web app can send HTTP requests (via neoAjax
) to http://localhost:port/
where your middleware app is listening.neoEdge
Browser: If you're deploying using neoEdge, it allows enhanced capabilities including running local executables or interacting with local files/services, thus enabling closer integration with local hardware.Typical Flow Example:
http://localhost:8080/scan
).neoEdge
a Good Option?Yes, neoEdge
is ideal for such integrations where USB hardware access is needed. It acts as a specialized browser that bridges the gap between local hardware and web technologies. With proper scripting, it can:
You can explore more about neoEdge
capabilities in the official help file under: 👉 Plugins Command Reference → neoEdge
section in your uploaded manual .
SetVar [fingerScanStatus] "Waiting for scan..."
neoAjax "GET" "http://localhost:8080/scan" "" "scanResult"
Then you handle the scanResult
in a variable and show feedback to users.
Sample python code:
from flask import Flask, jsonify, request import threading import time app = Flask(__name__) # Simulate fingerprint SDK interaction def capture_fingerprint(): time.sleep(2) # Simulate delay for fingerprint scan return { "status": "success", "message": "Fingerprint captured successfully", "fingerprint_id": "user_1234", "template_data": "base64_encoded_fingerprint_template" } @app.route('/scan', methods=['GET']) def scan_fingerprint(): result = capture_fingerprint() return jsonify(result) if __name__ == '__main__': print("Starting Fingerprint Middleware Server on http://localhost:8080") app.run(host='127.0.0.1', port=8080)
Here is a basic Python middleware server that listens on http://localhost:8080/scan
.
It simulates interaction with a fingerprint sensor SDK and returns mock fingerprint data.
🔧 How to Use:
pip install flask
neoAjax
command to send a GET request to http://localhost:8080/scan
.