import { Facial } from './libvbar-m-dxfacial.so';
|
import log from './dxLogger.js'
|
|
const dxFacialBarcode = {};
|
const _native = new Facial();
|
let _callbacks = {};
|
|
/**
|
* Initializes the barcode client. Must be called before any other operation.
|
* @param {object} config - The configuration object.
|
* @param {number} config.scanInterval - The interval between scans in milliseconds.
|
* @param {number} config.scanTimeout - The timeout for a scan in milliseconds.
|
* @param {number} config.roiX - The x-coordinate of the ROI.
|
* @param {number} config.roiY - The y-coordinate of the ROI.
|
* @example
|
* dxFacialBarcode.init();
|
*/
|
dxFacialBarcode.init = function () {
|
_native.initBarCode();
|
};
|
|
/**
|
* Deinitializes the barcode client and releases resources.
|
* @returns {void}
|
* @example
|
* dxFacialBarcode.deinit();
|
*/
|
dxFacialBarcode.deinit = function () {
|
_native.deinitBarCode();
|
};
|
|
/**
|
* Sets the callback function for barcode events.
|
* @param {object} callbacks - The callback functions.
|
* @param {function(object)} [callbacks.onEvent] - The callback function to handle barcode event.
|
* @returns {void}
|
* @example
|
* dxFacialBarcode.setCallbacks({
|
* onEvent: function(event) {
|
* logger.info('Barcode event:', event);
|
* }
|
* });
|
*/
|
dxFacialBarcode.setCallbacks = function (callbacks) {
|
if (!callbacks || !callbacks.onEvent) {
|
throw new Error('Callbacks must be an object with onEvent function');
|
}
|
_callbacks = callbacks;
|
};
|
|
/**
|
* Sets the configuration for the barcode scanner.
|
* @param {object} config - The configuration object.
|
* @param {number} config.scanInterval - The interval between scans in milliseconds.
|
* @param {number} config.scanTimeout - The timeout for a scan in milliseconds.
|
* @param {number} config.roiX - The x-coordinate of the ROI.
|
* @param {number} config.roiY - The y-coordinate of the ROI.
|
*/
|
dxFacialBarcode.setConfig = function (config) {
|
_native.setConfigBarCode(config);
|
};
|
|
/**
|
* Gets the configuration for the barcode scanner.
|
* @returns {object} The configuration object.
|
*/
|
dxFacialBarcode.getConfig = function () {
|
return _native.getConfigBarCode();
|
};
|
|
/**
|
* Sets the status of the barcode scanner.
|
* @param {boolean} status - The status of the barcode scanner.
|
*/
|
dxFacialBarcode.setStatus = function (status) {
|
_native.setStatusBarCode(status);
|
};
|
|
/**
|
* Processes events from the barcode event queue. Should be called periodically (e.g. in setInterval).
|
* Handles barcode events and calls the registered callback function.
|
*
|
* @example
|
* setInterval(() => {
|
* dxFacialBarcode.loop();
|
* }, 10); // Process events every 10ms
|
*/
|
dxFacialBarcode.loop = function () {
|
try {
|
let event = _native.getBarCodeEvent();
|
if (event && _callbacks.onEvent) {
|
_callbacks.onEvent(event);
|
}
|
} catch (e) {
|
log.error('Error in barcode loop:', e);
|
}
|
};
|
|
/**
|
* Gets the native barcode client object.
|
* @returns {Object|null} The native client object, or null if not initialized.
|
*/
|
dxFacialBarcode.getNative = function () {
|
return _native;
|
};
|
|
export default dxFacialBarcode;
|